Skip to content

Generate a v2 Presentation

POST https://api.slidespeak.co/api/v2/presentation/generate

Creates a presentation from a prompt and optional uploaded documents. Generation is asynchronous. The endpoint returns a task_id; poll /task_status/{task_id} until SUCCESS, then use the returned request_id with /presentation/download/{request_id}.


Content-Type: string

application/json

X-API-Key: string

The API key to use for the request.


prompt: string

The prompt or topic to generate a presentation about. It must not be empty.

document_ids: list[string] OPTIONAL

Uploaded document IDs to use as source material. Upload documents with /api/v2/document/upload, then poll the upload task until SUCCESS and pass the returned document ID here.

settings: object OPTIONAL

Optional generation settings. If omitted, SlideSpeak chooses generation defaults.

design_kit_id: string OPTIONAL

A design kit ID returned by /presentation/design-kits. If omitted, SlideSpeak uses automatic AI design.

length: number OPTIONAL

Exact slide count. If omitted, SlideSpeak chooses 3 to 8 slides, capped by your available credits.

language: string OPTIONAL

Output language, such as ENGLISH or ORIGINAL.

tone: 'default' | 'casual' | 'professional' | 'funny' | 'educational' | 'sales_pitch' OPTIONAL (default: 'default')

Tone for generated text.

verbosity: 'concise' | 'standard' | 'text-heavy' OPTIONAL (default: 'standard')

How much text to include in the presentation.

add_speaker_notes: boolean OPTIONAL (default: false)

Whether to generate speaker notes.


Terminal window
curl -X POST "https://api.slidespeak.co/api/v2/presentation/generate" -H "Content-Type: application/json" -H "X-API-Key: YOUR_API_KEY" -d '{
"prompt": "Create a concise sales enablement deck for a new CRM integration.",
"document_ids": ["doc_123"],
"settings": {
"design_kit_id": "dk_acme",
"length": 8,
"language": "ENGLISH",
"tone": "professional",
"verbosity": "standard",
"add_speaker_notes": true
}
}'

{
"prompt": "Create a concise sales enablement deck for a new CRM integration.",
"document_ids": ["doc_123"],
"settings": {
"design_kit_id": "dk_acme",
"length": 8,
"language": "ENGLISH",
"tone": "professional",
"verbosity": "standard",
"add_speaker_notes": true
}
}

{
"task_id": "7f9801d8-c8bf-45c3-9fe7-d024b5a76f69"
}

Poll /task_status/{task_id} until task_status is SUCCESS. The task_result contains the request_id to use with /presentation/download/{request_id}.

{
"task_id": "7f9801d8-c8bf-45c3-9fe7-d024b5a76f69",
"task_status": "SUCCESS",
"task_result": {
"presentation_id": "cmgt32cut0000h3ovex8dbzmn",
"request_id": "7f9801d8-c8bf-45c3-9fe7-d024b5a76f69"
}
}

  • prompt is required and must contain non-whitespace text.
  • document_ids must belong to your API key.
  • settings.design_kit_id, when provided, must be available to your API key.
  • settings.length, when provided, must be greater than 0 and you must have enough credits for that slide count.
  • Unknown request fields are rejected.