GenuineAIGenuineAI
For usersFor developers
  • Overview
  • Guides
  • How-to
  • API reference
Documentation
  • Quickstart
  • Authentication
  • Errors
  • Rate limits
  • API reference
Platform
  • Platform overview
  • Solutions
  • Pricing
  • Sign in
Company
  • Status
  • Trust Center
  • Contact
  • Terms of Service
  • Privacy Policy

© 2026 GenuineAI Ventures LLC

support@genuinehq.com
Overview
Core
Media library
AI
Documents
Knowledge
Creative
    Designs
    Design categories
    Studio
    Infographics
    Presentations
      List presentationsgetGenerate a presentationpostGet a presentationgetDelete a presentationdeleteDuplicate a presentationpostRegenerate an imagepostChoose a slide imagepostRebuild the deckpostRename a presentationpatchSave a draftpostPlan an outlinepost
    Presentation templates
Website & content
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

Presentations

Generated decks: plan, generate, edit slide images, rebuild.


List presentations

GET
https://api.genuineai.app/api/v1
/presentations

Beta — this operation may change on 30 days notice. See versioning.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

List presentations › query Parameters

cursor
​string · maxLength: 512 · pattern: ^[A-Za-z0-9_-]+$
limit
​integer
offset
​integer · min: 0
ppt_job_created
​array
ppt_job_id
​string · uuid
ppt_job_status
​string
sort
​string · minLength: 1 · maxLength: 64 · pattern: ^-?[a-z0-9_]+$

List presentations › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

List presentations › Responses

Success

​Presentation[] · required
has_more
​boolean · required

Whether more rows exist past this page.

next_cursor
​string | null · required

Pass back as cursor for the next page. Null on the last page.

GET/presentations
curl https://api.genuineai.app/api/v1/presentations \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "ppt_job_id": "00000000-0000-0000-0000-000000000000", "ppt_job_created": "2024-08-25T15:00:00Z", "ppt_job_updated": "2024-08-25T15:00:00Z", "ppt_job_created_by": "ppt_job_created_by", "ppt_job_status": "ppt_job_status", "ppt_job_progress": "ppt_job_progress", "ppt_job_title": "ppt_job_title", "ppt_job_params": "ppt_job_params", "ppt_job_plan": "ppt_job_plan", "ppt_job_output_file_id": "00000000-0000-0000-0000-000000000000", "ppt_job_error": "ppt_job_error", "ppt_job_metadata": {} } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Generate a presentation

POST
https://api.genuineai.app/api/v1
/presentations

Beta — this operation may change on 30 days notice. See versioning.

Queues generation from a brief, a template and an outline, and returns the job. Generation runs in the background — poll the presentation to follow it.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

Generate a presentation › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Generate a presentation › Request Body

templateId
​string · uuid · required
brief
​object · required
​object · required
jobId
​string · uuid
agentId
​string · uuid
threadId
​string · uuid

Generate a presentation › Responses

Success

No data returned
POST/presentations
curl https://api.genuineai.app/api/v1/presentations \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "jobId": "00000000-0000-0000-0000-000000000000", "templateId": "00000000-0000-0000-0000-000000000000", "brief": {}, "plan": { "slides": [ {} ] }, "agentId": "00000000-0000-0000-0000-000000000000", "threadId": "00000000-0000-0000-0000-000000000000" }'
Example Request Body
{ "jobId": "00000000-0000-0000-0000-000000000000", "templateId": "00000000-0000-0000-0000-000000000000", "brief": {}, "plan": { "slides": [ {} ] }, "agentId": "00000000-0000-0000-0000-000000000000", "threadId": "00000000-0000-0000-0000-000000000000" }
json
Example Responses
No example specified for this content type

Get a presentation

GET
https://api.genuineai.app/api/v1
/presentations/{id}

Beta — this operation may change on 30 days notice. See versioning.

Includes its current status and, once generation has finished, the deck to download.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

Get a presentation › path Parameters

id
​string · uuid · required

Get a presentation › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Get a presentation › Responses

Success

A generated deck: its plan, its progress, and the file it produced.
Presentation
ppt_job_id
​string · uuid
ppt_job_created
​string · date-time
ppt_job_updated
​string · date-time
ppt_job_created_by
​string
ppt_job_status
​string
ppt_job_progress
​string
ppt_job_title
​string
ppt_job_params
​string
ppt_job_plan
​string
ppt_job_output_file_id
​string · uuid
ppt_job_error
​string
ppt_job_metadata
​object
GET/presentations/{id}
curl https://api.genuineai.app/api/v1/presentations/:id \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "ppt_job_id": "00000000-0000-0000-0000-000000000000", "ppt_job_created": "2024-08-25T15:00:00Z", "ppt_job_updated": "2024-08-25T15:00:00Z", "ppt_job_created_by": "ppt_job_created_by", "ppt_job_status": "ppt_job_status", "ppt_job_progress": "ppt_job_progress", "ppt_job_title": "ppt_job_title", "ppt_job_params": "ppt_job_params", "ppt_job_plan": "ppt_job_plan", "ppt_job_output_file_id": "00000000-0000-0000-0000-000000000000", "ppt_job_error": "ppt_job_error", "ppt_job_metadata": {} }
json
application/json

Delete a presentation

DELETE
https://api.genuineai.app/api/v1
/presentations/{id}

Beta — this operation may change on 30 days notice. See versioning.

Limited to presentations the caller owns. The generated deck is removed with it.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

Delete a presentation › path Parameters

id
​string · uuid · required

Delete a presentation › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Delete a presentation › Responses

Success. No content.

No data returned
DELETE/presentations/{id}
curl https://api.genuineai.app/api/v1/presentations/:id \ --request DELETE \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

Duplicate a presentation

POST
https://api.genuineai.app/api/v1
/presentations/{id}/duplicate

Beta — this operation may change on 30 days notice. See versioning.

Clones the brief, outline and content into a new presentation and copies the generated deck. The copy is independent — deleting either one never removes the other's file.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

Duplicate a presentation › path Parameters

id
​string · uuid · required

Duplicate a presentation › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Duplicate a presentation › Responses

Success

No data returned
POST/presentations/{id}/duplicate
curl https://api.genuineai.app/api/v1/presentations/:id/duplicate \ --request POST \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

Regenerate an image

POST
https://api.genuineai.app/api/v1
/presentations/{id}/images/regenerate

Beta — this operation may change on 30 days notice. See versioning.

Finds the best photo in the library for that slide and generates a fresh image seeded by it. Recorded as an override on the same terms as choosing one by hand.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

Regenerate an image › path Parameters

id
​string · uuid · required

Regenerate an image › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Regenerate an image › Request Body

slideIndex
​integer · min: 0 · required
slotName
​string · minLength: 1 · required

Regenerate an image › Responses

Success

No data returned
POST/presentations/{id}/images/regenerate
curl https://api.genuineai.app/api/v1/presentations/:id/images/regenerate \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "slideIndex": 0, "slotName": "slotName" }'
Example Request Body
{ "slideIndex": 0, "slotName": "slotName" }
json
Example Responses
No example specified for this content type

Choose a slide image

POST
https://api.genuineai.app/api/v1
/presentations/{id}/images/select

Beta — this operation may change on 30 days notice. See versioning.

Records the choice as an override. A deck still generating picks it up as it assembles; a finished one needs a rebuild before the file reflects it.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

Choose a slide image › path Parameters

id
​string · uuid · required

Choose a slide image › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Choose a slide image › Request Body

slideIndex
​integer · min: 0 · required
slotName
​string · minLength: 1 · required
fileId
​string · uuid · required

Choose a slide image › Responses

Success

No data returned
POST/presentations/{id}/images/select
curl https://api.genuineai.app/api/v1/presentations/:id/images/select \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "slideIndex": 0, "slotName": "slotName", "fileId": "00000000-0000-0000-0000-000000000000" }'
Example Request Body
{ "slideIndex": 0, "slotName": "slotName", "fileId": "00000000-0000-0000-0000-000000000000" }
json
Example Responses
No example specified for this content type

Rebuild the deck

POST
https://api.genuineai.app/api/v1
/presentations/{id}/rebuild

Beta — this operation may change on 30 days notice. See versioning.

Regenerates the file from the presentation's current content, including any image overrides.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

Rebuild the deck › path Parameters

id
​string · uuid · required

Rebuild the deck › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Rebuild the deck › Responses

Success

No data returned
POST/presentations/{id}/rebuild
curl https://api.genuineai.app/api/v1/presentations/:id/rebuild \ --request POST \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

Rename a presentation

PATCH
https://api.genuineai.app/api/v1
/presentations/{id}/rename

Beta — this operation may change on 30 days notice. See versioning.

Changes only the display name, which is also the download filename. The plan is untouched, so renaming never changes what a rebuild produces.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

Rename a presentation › path Parameters

id
​string · uuid · required

Rename a presentation › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Rename a presentation › Request Body

title
​string · minLength: 1 · maxLength: 200 · required

Rename a presentation › Responses

Success

No data returned
PATCH/presentations/{id}/rename
curl https://api.genuineai.app/api/v1/presentations/:id/rename \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "title": "title" }'
Example Request Body
{ "title": "title" }
json
Example Responses
No example specified for this content type

Save a draft

POST
https://api.genuineai.app/api/v1
/presentations/draft

Beta — this operation may change on 30 days notice. See versioning.

Stores the brief, template and outline as a draft without queueing generation, so the work survives leaving the page and can be picked up again.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

Save a draft › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Save a draft › Request Body

templateId
​string · uuid · required
brief
​object · required
jobId
​string · uuid
plan
​object
agentId
​string · uuid
threadId
​string · uuid
step
​string

Save a draft › Responses

Success

No data returned
POST/presentations/draft
curl https://api.genuineai.app/api/v1/presentations/draft \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "jobId": "00000000-0000-0000-0000-000000000000", "templateId": "00000000-0000-0000-0000-000000000000", "brief": {}, "plan": {}, "agentId": "00000000-0000-0000-0000-000000000000", "threadId": "00000000-0000-0000-0000-000000000000", "step": "step" }'
Example Request Body
{ "jobId": "00000000-0000-0000-0000-000000000000", "templateId": "00000000-0000-0000-0000-000000000000", "brief": {}, "plan": {}, "agentId": "00000000-0000-0000-0000-000000000000", "threadId": "00000000-0000-0000-0000-000000000000", "step": "step" }
json
Example Responses
No example specified for this content type

Plan an outline

POST
https://api.genuineai.app/api/v1
/presentations/plan

Beta — this operation may change on 30 days notice. See versioning.

Turns a brief and a template into a proposed outline, and saves it onto the draft so it is not lost. Nothing is generated yet — this is the step where the structure is reviewed and edited.

Requires the module-ppt license feature. Without it the request is refused with 403 license_required — see plans and modules.

Plan an outline › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Plan an outline › Request Body

templateId
​string · uuid · required
​object · required
jobId
​string · uuid
agentId
​string · uuid

Plan an outline › Responses

Success

No data returned
POST/presentations/plan
curl https://api.genuineai.app/api/v1/presentations/plan \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "jobId": "00000000-0000-0000-0000-000000000000", "templateId": "00000000-0000-0000-0000-000000000000", "brief": { "topic": "topic", "audience": "audience", "slideCount": 3, "audienceProfileIds": [ "00000000-0000-0000-0000-000000000000" ], "toneId": "00000000-0000-0000-0000-000000000000", "referenceUrls": [ {} ], "instructions": "instructions" }, "agentId": "00000000-0000-0000-0000-000000000000" }'
Example Request Body
{ "jobId": "00000000-0000-0000-0000-000000000000", "templateId": "00000000-0000-0000-0000-000000000000", "brief": { "topic": "topic", "audience": "audience", "slideCount": 3, "audienceProfileIds": [ "00000000-0000-0000-0000-000000000000" ], "toneId": "00000000-0000-0000-0000-000000000000", "referenceUrls": [ {} ], "instructions": "instructions" }, "agentId": "00000000-0000-0000-0000-000000000000" }
json
Example Responses
No example specified for this content type

InfographicsPresentation templates