Skip to main content

AutoGenerator API

The AutoGenerator API turns natural-language prompts, supporting files, and asset references into a Prezent-quality deck. Generation is asynchronous: kick off a job with POST /api/v1/autogenerations, then poll GET /api/v1/autogenerations/{callback_id} until the status reaches success (or failed).

REST resource paths (v1.1). This page documents the REST-resource path names (/api/v1/autogenerations/...). The legacy RPC-style paths under /api/v1/autogenerator/* continue to be served indefinitely — they return a Deprecation: true header pointing to the successor alias documented here. New integrations should use the paths shown on this page.

Full schemas, request/response examples, and per-field documentation live in the interactive API Reference.

Skip the polling loop. If you can expose an HTTPS endpoint, subscribe to autogeneration.completed / autogeneration.failed via the Webhooks API and receive signed completion callbacks instead of polling GET /api/v1/autogenerations/{callback_id}.

Authentication

All endpoints require a Bearer token:

Authorization: Bearer YOUR_API_KEY

See Getting Started → Authentication for details.

Response envelope

Every endpoint on this page returns the canonical envelope:

{ "success": true, "data": { "..." } }

…or, on error:

{ "success": false, "data": null, "error": { "code": "...", "message": "..." } }

See Developer Guide → Error codes for the full code catalog.

Endpoint summary

MethodPathDescriptionSync/Async
POST/api/v1/autogenerationsCreate an AutoGenerator jobAsync
GET/api/v1/autogenerations/{callback_id}Read an AutoGenerator jobSync
POST/api/v1/autogenerations/lookupsLook up multiple jobs in one callSync
POST/api/v1/autogenerations/{callback_id}/downloadsCreate a download artefact for a deckSync (up to ~60s)
POST/api/v1/autogenerations/{callback_id}/regenerationsCreate a regeneration of a deckAsync
POST/api/v1/autogenerations/{callback_id}/node-changesCreate a node-level change on a slideSync
POST/api/v1/autogenerations/{callback_id}/image-extractionsCreate an image-extraction for a deckSync
POST/api/v1/autogenerations/{callback_id}/image-replacementsCreate an image replacement on a slideSync
POST/api/v1/autogenerations/{callback_id}/reactionsCreate a like / feedback reactionSync
POST/api/v1/autogenerations/{callback_id}/slide-actionsDuplicate, delete, or annotate a slideSync
GET/api/v1/templates?feature=auto_generatorList templates available to AutoGeneratorSync

Utility operations

These endpoints are read/lookup utilities, not resource operations. Their RPC-style paths are kept verbatim because REST-ifying them produces awkward names. They are still in the auto_generator rate-limit category.

MethodPathDescriptionSync/Async
POST/api/v1/autogenerator/metaFetch slide metadata for asset idsSync
POST/api/v1/autogenerator/slide-dataFetch slide data for one slideSync
POST/api/v1/autogenerator/brand-image-searchSearch the caller's brand-image librarySync
POST/api/v1/autogenerator/library-image-searchSearch the configured stock-image librarySync

All AutoGenerator endpoints are in the auto_generator rate-limit category. The slide-generation and presentation-download operations also count against per-key annual usage quotas (50,000 / year and 1,000,000 / year respectively, configurable per company). See Developer Guide → Usage quotas and rate limits.


POST /api/v1/autogenerations — Create a job

Kicks off the AutoGenerator pipeline. Returns a callback_id to poll via GET /api/v1/autogenerations/{callback_id}.

Request body

FieldTypeRequiredDescription
promptstringyesNatural-language description of the deck to generate.
textstringnoAdditional free-text context to ground the deck.
filesarray of stringnoIDs of previously uploaded supporting files.
web_linksarray of URInoWeb URLs to ingest as additional context.
image_idsarray of stringnoImage identifiers from the caller's library.
audiencestringnoTarget audience id or persona name.
template_idstringnoTarget theme/template id.
settingsobjectnoPer-generation settings (sources/footer/speaker-notes toggles, extract_graph_data, etc.).

Example

curl -X POST https://api.prezent.ai/api/v1/autogenerations \
-H "Authorization: Bearer $PREZENT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Generate a presentation on AI trends",
"template_id": "tmpl_corp_2024",
"audience": "executives",
"settings": {
"generate_speaker_notes": true,
"add_sources_to_footer": true
}
}'

Success response (200)

{
"success": true,
"data": {
"callback_id": "cb_a1b2c3d4"
}
}

GET /api/v1/autogenerations/{callback_id} — Read a job

Returns the current state of an AutoGenerator job.

Path parameters

ParameterTypeRequiredDescription
callback_idstringyesCallback id returned by POST /api/v1/autogenerations.

Query parameters

ParameterTypeRequiredDescription
deck_callback_idstringnoOriginal deck callback id when polling a regenerate sub-job.
operationstringnoSub-operation hint (used by regenerate flows).
status_auto_pollingstring (true / false)noPass true to indicate the caller is auto-polling.

Example

curl "https://api.prezent.ai/api/v1/autogenerations/cb_a1b2c3d4" \
-H "Authorization: Bearer $PREZENT_API_KEY"

Success response (200)

{
"success": true,
"data": {
"status": "success",
"callback_id": "cb_a1b2c3d4",
"prompt": "Generate a presentation on AI trends",
"fileName": "ai-trends.pptx",
"allSlides": [ { "..." : "..." } ],
"extracted_images": [ { "..." : "..." } ],
"company": "co_xyz",
"template_code": "tmpl_corp_2024",
"audience": "executives",
"execution_start": "2026-05-18T10:14:00Z",
"execution_end": "2026-05-18T10:14:42Z",
"cached": false
}
}

data.status is one of in_progress, success, or failed. Once success, polling the same callback_id returns the same cached payload.


POST /api/v1/autogenerations/lookups — Bulk lookup

Returns layout metadata for many callbacks in one call. Useful for list-view rendering.

Request body

{
"callback_ids": ["cb_1", "cb_2", "cb_3"]
}

Success response (200)

{
"success": true,
"data": [
{ "slide_id": "...", "layouts": [ { "..." : "..." } ] },
{ "slide_id": "...", "layouts": [ { "..." : "..." } ] }
]
}

POST /api/v1/autogenerations/{callback_id}/downloads — Merge & download

Synchronously merges all slides for the given callback_id into a single deck (PPTX or PDF) and returns a signed download URL. May take up to 60 seconds. Counts against the presentation-download annual quota (default 1,000,000 / year, configurable per company).

Path parameters

ParameterTypeRequiredDescription
callback_idstringyesDeck callback id to merge.

Request body

FieldTypeRequiredDescription
sourcesobjectnoSource-attribution config (add_sources_to_slides_note).
speaker_notesobjectnoSpeaker-notes config (add_speaker_notes_to_slides_note, speaker_notes_type).
outputFormatstringnopptx or pdf.
outputPathstringnoOptional S3 key for the merged output.
outputBucketstringnoOptional S3 bucket.
sectionsarray of stringnoSection ids to include.

Success response (200)

{
"success": true,
"data": {
"status": "success",
"output_file": "exports/cb_a1b2c3d4.pptx",
"download_url": "https://...signed-url...",
"message": "Deck merged successfully."
}
}

POST /api/v1/autogenerations/{callback_id}/regenerations — Regenerate

Re-runs part of an existing deck — typically a slide, node, or section — and returns a new callback_id. Counted as a fresh generation.

Path parameters

ParameterTypeRequiredDescription
callback_idstringyesExisting deck callback id.

Query parameters

ParameterTypeRequiredDescription
operationstringyesSub-operation (for example node_change, slide_regenerate).

Request body (selected fields)

FieldTypeRequiredDescription
audiencestringnoOverride audience for the regenerated portion.
template_codestringnoOverride template code.
slide_overrideobjectnoSlide-level overrides.
story_content_overrideobjectnoNarrative-content overrides.
preserve_textbooleannoPreserve existing text where possible.

Success response (200)

{
"success": true,
"data": {
"new_callback_id": "cb_regen_xyz",
"message": "Regenerate job started."
}
}

Poll GET /api/v1/autogenerations/cb_regen_xyz (with optional deck_callback_id set to the original deck's id and operation to the same value used in this call).


POST /api/v1/autogenerations/{callback_id}/node-changes — Apply a node change

Mutates a single node (text, image, shape) on one slide. Returns the updated slide payload synchronously.

Path parameters

ParameterTypeRequiredDescription
callback_idstringyesDeck callback id.

Request body

FieldTypeRequiredDescription
slide_callback_idstringyesSlide to modify.
slide_overrideobjectnoNode-level changes to apply.

Success response (200)

{ "success": true, "data": { "..." : "..." } }

POST /api/v1/autogenerations/{callback_id}/image-extractions — Extract images

Extracts embedded images from a PowerPoint stored in S3.

Path parameters

ParameterTypeRequiredDescription
callback_idstringyesDeck callback id.

Request body

FieldTypeRequiredDescription
s3_bucketstringyesBucket containing the PowerPoint.
s3_pathstringyesS3 key of the PowerPoint.
force_updatebooleannoRe-extract even when cached results exist.

Success response (200)

{ "success": true, "data": { "..." : "..." } }

POST /api/v1/autogenerations/{callback_id}/image-replacements — Replace an image

Swaps an image on a slide with a new image from one of the supported sources.

Path parameters

ParameterTypeRequiredDescription
callback_idstringyesDeck callback id.

Request body

FieldTypeRequiredDescription
oldImageobjectyesExisting image being replaced (meta, shapeType).
newImageobjectyesReplacement image. newImage.source is one of myWorkspace, adobe, freepik, upload, extracted, s3, brand-images. Additional fields depend on the source (id, s3_path, s3_bucket, image, extension, imageIndex).
slide_callback_idstringyesSlide where the image lives.
duplicate_slide_callback_idstringnoOptional duplicate slide id to mirror the replacement onto.

Success response (200)

{ "success": true, "data": { "..." : "..." } }

POST /api/v1/autogenerations/{callback_id}/reactions — Like / feedback

Records a like or qualitative feedback against a deck or slide.

Path parameters

ParameterTypeRequiredDescription
callback_idstringyesDeck callback id.

Request body

FieldTypeRequiredDescription
uuidstringyesTarget asset uuid.
typestringyesliked or feedback.
valueboolean or stringyesBoolean when type=liked; string when type=feedback.
shareDetailsobjectconditionalRequired when type=feedback.

Success response (200)

{
"success": true,
"data": {
"uuid": "asset_42",
"type": "liked",
"value": true,
"message": "Reaction recorded."
}
}

POST /api/v1/autogenerations/{callback_id}/slide-actions — Slide actions

Performs one of four per-slide actions: duplicate, delete, add_sources_to_slides_note, or speaker_notes.

Path parameters

ParameterTypeRequiredDescription
callback_idstringyesDeck callback id.

Request body

FieldTypeRequiredDescription
actionstringyesOne of duplicate, delete, add_sources_to_slides_note, speaker_notes.
deck_callback_idstringconditionalRequired for duplicate / delete.
slide_callback_idstringconditionalRequired for duplicate / delete.
uuidstringconditionalRequired for note-style actions.
typestringconditionalNote-style sub-type.
dataobjectconditionalAction-specific payload (required for note-style actions).

Success response (200)

For duplicate:

{
"success": true,
"data": { "new_callback_id": "cb_dup_xyz", "message": "Slide duplicated." }
}

For delete:

{
"success": true,
"data": { "deleted_slide_id": "slide_42", "message": "Slide deleted." }
}

For note-style actions, data carries the downstream service's payload.


GET /api/v1/templates?feature=auto_generator — List templates

Returns themes/templates available to AutoGenerator. This single endpoint replaces the legacy /api/v1/autogenerator/templates and /api/v1/template-converter/templates paths — pass feature to scope results.

Query parameters

ParameterTypeRequiredDescription
featurestring (auto_generator / template_converter)noFilter to templates enabled for a specific feature.
namestringnoCase-insensitive name filter.
sortstringnoSort expression (for example name:asc).
sourcestringnoSource filter (brand vs prezent).
enabledFeaturestringnoOptional feature flag filter.

Success response (200)

{
"success": true,
"data": {
"items": [
{ "id": "tmpl_corp_2024", "name": "Corporate 2024", "code": "CORP24", "source": "brand" }
],
"next_cursor": null
}
}

next_cursor is null on the last page (or when pagination was not requested). Send limit to page; pass next_cursor back as cursor. See Developer Guide → Pagination.


Utility operations

These endpoints are read/lookup utilities, not resource operations. Their RPC-style paths are kept verbatim because REST-ifying them produces awkward names (/image-search-queries, /slide-metadata-fetches).

POST /api/v1/autogenerator/meta — Slide metadata

Returns slide-level metadata (titles, layout codes, thumbnails) for each asset id.

Request body

FieldTypeRequiredDescription
assetIdsarray of stringyesAsset ids to look up.
callbackIDstringyesParent deck callback id (legacy camelCase preserved for backwards compatibility).

Success response (200)

{
"success": true,
"data": {
"...": "passthrough payload from the SlideMeta service"
}
}

POST /api/v1/autogenerator/slide-data — Fetch one slide

Returns the raw slide-data document (text, images, layout, speaker notes) for a slide.

Request body

{ "slide_callback_id": "slide_42" }

Success response (200)

{ "success": true, "data": { "..." : "..." } }

POST /api/v1/autogenerator/brand-image-search — Brand image search

Searches the caller's brand-image library.

Request body

FieldTypeRequiredDescription
callback_idstringyesDeck callback id (scopes the search to the right company).
querystringnoSearch query. Defaults to * (return all).
skipintegernoNumber of results to skip.
limitintegernoMaximum number of results (max 100).

Success response (200)

{ "success": true, "data": { "..." : "..." } }

POST /api/v1/autogenerator/library-image-search — Stock image search

Searches the configured stock image provider (Adobe Stock or Freepik, depending on company configuration).

Request body

FieldTypeRequiredDescription
searchKeystringnoSearch query. If blank, derived from the supplied slide context.
limitintegernoMax results (default 30).
offsetintegernoResult offset (default 0).
slide_callback_idstringnoOptional slide callback id used to infer searchKey.

Success response (200)

{ "success": true, "data": { "..." : "..." } }

Errors

All endpoints on this page return the standard error envelope. Common codes:

  • 400MISSING_PROMPT, MISSING_TEMPLATE_ID, MISSING_CALLBACK_ID, MISSING_SHARE_DETAILS, INVALID_INPUT, INVALID_PAYLOAD.
  • 401INVALID_API_KEY, EXPIRED_API_KEY, UNAUTHORIZED.
  • 404ENDPOINT_NOT_FOUND, RESOURCE_NOT_FOUND.
  • 429RATE_LIMIT_EXCEEDED, USAGE_LIMIT_EXCEEDED.
  • 500 / 502 / 503 / 504 — standard server-side codes.

See the full catalog in Developer Guide → Error codes.