Skip to main content

Prezent Platform API (1.0.0)

Download OpenAPI specification:Download

Agent-ready REST API for Prezent's content-generation and template-conversion services.

The Prezent Platform API exposes Prezent's AutoGenerator, Template Converter, Audiences, Themes, and File-upload services as a uniform JSON HTTP API.

This contract describes the target agent-ready shape of the API: every documented endpoint returns a uniform success envelope { "success": true, "data": { ... } } or a uniform error envelope { "success": false, "data": null, "error": { "code": "...", "message": "...", "details": { ... } } }. Error codes are drawn from a stable catalog (see ErrorCode). The contract is additive: handlers may continue to emit legacy keys alongside the documented ones for backwards compatibility, so schemas explicitly allow additional properties at the envelope and data levels.

Several endpoints kick off long-running background work and return a callback_id that the client polls against a corresponding status endpoint. The canonical async polling endpoint for the Template Converter family is GET /api/v2/template-converter/status/{callback_id} which uses strict HTTP-status mapping (200 only on workflow success, 4xx/5xx on workflow failure). The v1 polling endpoint at /api/v1/template-converter/status/{callbackId} (and its REST alias GET /api/v1/template-conversions/{callback_id}) continues to be served with legacy semantics (HTTP 200 with status field) and is intentionally omitted from this documentation.

REST resource aliases (v1.1). AutoGenerator and Template Converter endpoints are documented here under their REST-resource path names (/api/v1/autogenerations, /api/v1/template-conversions). The legacy RPC-style paths under /api/v1/autogenerator/* and /api/v1/template-converter/* continue to be served indefinitely; they return a Deprecation: true header pointing to the successor alias.

Further documentation is published at https://docs.prezent.ai.

Building with an AI agent? Prezent ships a first-class Model Context Protocol (MCP) server. The hosted endpoint is https://mcp.myprezent.com/mcp (OAuth 2.1, works with Claude.ai Custom Connectors); a local stdio server is published on PyPI as prezent-mcp-server and plugs into Claude Desktop, Cursor, Cline, Continue, and Zed. See https://docs.prezent.ai/docs/agents-and-mcp for setup. The MCP tools wrap the same REST endpoints described here.

Out of scope of this document: SCIM endpoints under /api/v1/scim/*. Those endpoints conform to RFC 7644 (SCIM 2.0) and follow a different envelope (schemas, Resources, totalResults, etc.). They are documented separately at https://docs.prezent.ai/scim.

AutoGenerator

Long-running and synchronous endpoints that generate and manipulate AI-authored presentations from prompts, files, and assets.

Create an AutoGenerator job

Kicks off a background pipeline that turns the supplied prompt, context files, and assets into a Prezent presentation. Returns a callback_id that the caller polls via GET /api/v1/autogenerations/{callback_id} until status is success or failed.

Authorizations:
BearerAuth
Request Body schema: application/json
required
prompt
required
string

Natural-language description of the deck to generate.

text
string

Additional free-text context to ground the deck.

files
Array of strings

Previously uploaded supporting files (by id).

web_links
Array of strings <uri> [ items <uri > ]

Web URLs to ingest as additional context.

image_ids
Array of strings

Image identifiers to source from the caller's library.

audience
string

Target audience id or persona name.

template_id
string

Target theme/template id.

object

Per-generation settings.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "prompt": "string",
  • "text": "string",
  • "files": [
    ],
  • "web_links": [],
  • "image_ids": [
    ],
  • "audience": "string",
  • "template_id": "string",
  • "settings": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Read an AutoGenerator job

Returns the current state of a previously started AutoGenerator job. The status field in the response data is one of in_progress, success, or failed. Once success, the payload also contains the generated slides, extracted images, theme/audience metadata, and other context required to display or further edit the deck.

For the same callback_id, polling after status=success returns the same cached payload.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

query Parameters
deck_callback_id
string

Original deck callback id when polling a regenerate sub-job.

operation
string

Sub-operation hint (used by regenerate flows).

status_auto_polling
string
Enum: "true" "false"

Pass true to indicate the caller is auto-polling; affects how stalled jobs are surfaced.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Look up multiple AutoGenerator jobs in one call

Returns layout metadata for each callback_id in the request. Use when rendering a list view that needs many decks at once.

Authorizations:
BearerAuth
Request Body schema: application/json
required
callback_ids
required
Array of strings non-empty

Callback ids to look up.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "callback_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

Fetch slide-metadata for asset IDs

Returns slide-level metadata (titles, layout codes, thumbnails) for each asset id provided. Used by editors that need to enrich a slide list without re-running generation.

Authorizations:
BearerAuth
Request Body schema: application/json
required
assetIds
required
Array of strings non-empty

Asset ids to look up metadata for.

callbackID
required
string

Parent deck callback id. (Legacy camelCase preserved for backwards compatibility; new clients should also continue to send this field.)

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "assetIds": [
    ],
  • "callbackID": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Create a download artefact for an AutoGenerator deck

Synchronously merges all slides for the given callback_id into a single PowerPoint (or PDF, depending on outputFormat) and returns a signed download URL. The merge step can take up to 60 seconds. Subject to the AUTO_GEN_DOWNLOAD usage limit in addition to the normal rate limits.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
callback_id
required
string non-empty

Deck callback id to merge & download.

object

Source-attribution configuration for the merged output.

object

Speaker-notes configuration for the merged output.

outputPath
string

Optional S3 key (path) for the merged output.

sections
Array of strings

Optional list of sections to include (defaults to all).

outputFormat
string

Output format (for example pptx, pdf).

outputBucket
string

Optional S3 bucket for the merged output.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "callback_id": "string",
  • "sources": {
    },
  • "speaker_notes": {
    },
  • "outputPath": "string",
  • "sections": [
    ],
  • "outputFormat": "string",
  • "outputBucket": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create a regeneration of an AutoGenerator deck

Re-runs a portion of an existing AutoGenerator deck — typically a slide, node, or section — and returns a new callback_id to poll. Counted as a fresh generation against the AUTO_GEN usage cap.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

query Parameters
operation
required
string

The regenerate sub-operation (for example node_change, slide_regenerate).

Request Body schema: application/json
required
callback_id
required
string

Existing deck callback id.

audience
string

Override audience for the regenerated portion.

template_code
string

Override template code for the regenerated portion.

object

Slide-level overrides.

object

Narrative-content overrides.

object

Additional context to inject into the regenerate pass.

duration
string

Desired duration for the regenerated section.

object

Voice/tone settings.

object

Data-source configuration.

preserve_text
boolean

Preserve existing text where possible.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "callback_id": "string",
  • "audience": "string",
  • "template_code": "string",
  • "slide_override": { },
  • "story_content_override": { },
  • "context": { },
  • "duration": "string",
  • "voice_settings": { },
  • "data_sources_settings": { },
  • "preserve_text": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create a node-level change on an AutoGenerator slide

Mutates a single node (text, image, shape) within a slide of an existing deck. Returns the updated slide payload synchronously.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
callback_id
required
string

Deck callback id.

slide_callback_id
required
string

Slide callback id to modify.

object

Node-level changes to apply to the slide.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "callback_id": "string",
  • "slide_callback_id": "string",
  • "slide_override": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Fetch slide data for a single slide callback

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

Authorizations:
BearerAuth
Request Body schema: application/json
required
slide_callback_id
required
string

Slide callback id whose data to return.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "slide_callback_id": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Create an image-extraction for an AutoGenerator deck

Reads the PowerPoint at the given S3 location and returns the list of embedded images. If force_update is true, re-runs extraction even when cached results exist.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
s3_bucket
required
string

S3 bucket containing the PowerPoint.

s3_path
required
string

S3 key (path) of the PowerPoint.

force_update
boolean

Re-extract even if cached results exist.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "s3_bucket": "string",
  • "s3_path": "string",
  • "force_update": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Search the caller's brand-image library

Returns brand images that match the query string, ordered by relevance. Supports skip and limit for pagination.

Authorizations:
BearerAuth
Request Body schema: application/json
required
callback_id
required
string

Deck callback id (used for scoping to the right company).

query
string

Search query. Defaults to * (return all).

skip
integer >= 0

Number of results to skip (pagination offset).

limit
integer [ 1 .. 100 ]

Maximum number of results to return.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "callback_id": "string",
  • "query": "string",
  • "skip": 0,
  • "limit": 1
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Search the configured stock-image library

Searches the configured stock image provider (Adobe Stock or Freepik, depending on company configuration). Supports limit/offset pagination. If searchKey is omitted, the handler infers it from the supplied slide context.

Authorizations:
BearerAuth
Request Body schema: application/json
required
searchKey
string

Search query. If blank, derived from the supplied slide context.

limit
integer
Default: 30

Maximum number of results.

offset
integer
Default: 0

Result offset.

slide_callback_id
string

Optional slide callback id used to infer searchKey.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "searchKey": "string",
  • "limit": 30,
  • "offset": 0,
  • "slide_callback_id": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Create an image replacement on an AutoGenerator slide

Swaps an image on a slide with a new image sourced from the caller's workspace, Adobe Stock, Freepik, a previously uploaded file, an extracted image, or S3.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
required
object

Description of the existing image being replaced.

required
object

Description of the replacement image.

slide_callback_id
required
string

Slide callback id where the image lives.

duplicate_slide_callback_id
string

Optional duplicate slide id to mirror the replacement onto.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "oldImage": {
    },
  • "newImage": {
    },
  • "slide_callback_id": "string",
  • "duplicate_slide_callback_id": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": { }
}

Create a reaction on an AutoGenerator deck

Persists a user reaction (like) or qualitative feedback against a previously generated deck/slide. When type is feedback, shareDetails must be provided.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
uuid
required
string

Target asset uuid (deck or slide).

type
required
string
Enum: "liked" "feedback"

Reaction kind.

required
boolean or string

When type=liked, a boolean. When type=feedback, a string.

object

Additional details. Required when type=feedback.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "uuid": "string",
  • "type": "liked",
  • "value": true,
  • "shareDetails": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create a per-slide action on an AutoGenerator deck

Performs one of four actions against a slide: duplicate, delete, add_sources_to_slides_note, or speaker_notes. The required body fields depend on action.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
action
required
string
Enum: "duplicate" "delete" "add_sources_to_slides_note" "speaker_notes"

Sub-action to perform.

deck_callback_id
string

Deck callback id (required for duplicate / delete).

slide_callback_id
string

Slide callback id (required for duplicate / delete).

uuid
string

Target uuid (required for note-style actions).

type
string

Note-style sub-type (required for note-style actions).

object

Action-specific payload (required for note-style actions).

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "action": "duplicate",
  • "deck_callback_id": "string",
  • "slide_callback_id": "string",
  • "uuid": "string",
  • "type": "string",
  • "data": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Template Converter

Apply a target brand template to an uploaded presentation, including review suggestions, work-area adjustment, layout change, and download.

Create a template-conversion job

Kicks off a pipeline that applies the target brand template (templateName) to the input PowerPoint (fileId or inputDeck). Returns a callback_id to poll. Counted against the TC_START usage limit.

Subsequent calls in the same conversion lifecycle: poll the v2 status endpoint at GET /api/v2/template-converter/status/{callback_id} until the pipeline reaches a terminal state.

Authorizations:
BearerAuth
Request Body schema: application/json
required
fileId
string

Identifier of a previously uploaded input deck. Mutually exclusive with inputDeck.

object

Inline reference to the input deck (S3 path / chunk identifier). Mutually exclusive with fileId.

templateName
required
string

Name of the target brand template.

includeImageWithoutData
boolean

Carry over images that have no associated data.

includeImageWithData
boolean

Carry over images that have associated data.

includeIcons
boolean

Carry over icons.

includeSpecialColor
boolean

Preserve special color treatments from the source deck.

object

Per-conversion settings.

object

Optional top-level format overrides (legacy placement).

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "fileId": "string",
  • "inputDeck": { },
  • "templateName": "string",
  • "includeImageWithoutData": true,
  • "includeImageWithData": true,
  • "includeIcons": true,
  • "includeSpecialColor": true,
  • "settings": {
    },
  • "modifyFormat": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Poll a template-conversion job (strict status mapping)

v2 polling endpoint with strict HTTP-status mapping: returns HTTP 200 only when the conversion has completed successfully. While the pipeline is still running the status is in_progress and the response is HTTP 202. On workflow failure the endpoint returns a 4xx or 5xx with the standard error envelope.

Use this endpoint instead of the v1 polling endpoint (/api/v1/template-converter/status/{callbackId}) whenever possible — agents can rely on the HTTP status alone to branch on success vs failure, without inspecting body fields.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

query Parameters
source
string
Value: "nexus"

Pass nexus to include the full outputs blob in the response (intended for Prezent's Nexus front-end).

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create a preprocessing chunk for a template-conversion input

Accepts one chunk of a multi-chunk PPTX upload, used as the inputDeck for a subsequent template-conversion job. Only .pptx files are accepted. Collection-level — the upload is grouped by the body's fileIdentifier and precedes the creation of the conversion's callback_id.

Authorizations:
BearerAuth
Request Body schema: application/json
required
fileContent
required
string

Chunk content as base64 / data: URL.

fileName
required
string

Original filename including extension.

chunkIndex
required
integer >= 0

Zero-based index of this chunk.

totalChunks
required
integer >= 1

Total number of chunks for this upload.

requestIdentifier
required
string

Caller-supplied identifier that groups chunks of the same upload.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "fileContent": "string",
  • "fileName": "string",
  • "chunkIndex": 0,
  • "totalChunks": 1,
  • "requestIdentifier": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create a finalisation for a chunked PPTX upload

Concludes a chunked upload identified by fileIdentifier. The finalised file must be a .pptx, no larger than 200 MB, and no more than 100 pages. Collection-level — runs before the conversion's callback_id exists.

Authorizations:
BearerAuth
Request Body schema: application/json
required
fileIdentifier
required
string

Identifier shared across all chunks of this upload.

fileName
required
string

Final filename. Must end in .pptx.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "fileIdentifier": "string",
  • "fileName": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Read review suggestions for a template-conversion

Returns the list of editorial suggestions produced for the converted deck identified by callback_id. Each suggestion may be applied via the corresponding PATCH endpoint.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Update review suggestions on a template-conversion

Applies a subset of editorial suggestions to the converted deck identified by callback_id. Kicks off a background pipeline that produces a new derived deck; the response carries a new callback_id to poll.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
required
Array of objects

Suggestion patches to apply.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "suggestions": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create a template change on a template-conversion

Re-runs the conversion pipeline for an already-converted deck against a new target templateName. Returns a new callback_id to poll.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
templateName
required
string

New target brand template name.

object

Override conversion settings (same shape as TemplateConverterStartRequest.settings).

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "templateName": "string",
  • "settings": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Read the download URL for a template-conversion

Returns a signed download URL for the converted deck identified by callback_id. Counted against the TC_DOWNLOAD usage limit.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {}
}

Create a Comply metrics record on a template-conversion

Records compliance metrics for a converted deck. The body is forwarded to the ComplyMetrics service. Typically invoked via a callback_id + token URL handed back to the caller after a conversion.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Upsert a reaction on a template-conversion

Records a like or qualitative feedback against a converted deck. When type is liked the value must be a boolean; when feedback the value must be a string. Uses PUT (legacy quirk preserved from the original endpoint) rather than POST.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
callback_id
required
string

Converted-deck callback id.

type
required
string
Enum: "liked" "feedback"

Reaction kind.

required
boolean or string

When type=liked, a boolean. When type=feedback, a string.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "callback_id": "string",
  • "type": "liked",
  • "value": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Read work-area options for a template-conversion slide

Returns the available work-area adjustment options for the given slide of the given conversion job.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

query Parameters
slide_index
required
integer >= 0

Zero-based slide index.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create a work-area adjustment on a template-conversion

Applies a selected work-area adjustment to the given slide of a conversion job.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
callback_id
required
string

Conversion job id.

slide_index
required
integer >= 0

Zero-based slide index.

required
object

Selected work-area-option payload.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "callback_id": "string",
  • "slide_index": 0,
  • "selection": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Read layout options for a template-conversion

Returns the layout options available for the target template and, optionally, the input deck's layouts for the given slide.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

query Parameters
slide_index
integer >= 0

Zero-based slide index. If omitted, returns layouts for every slide.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create a layout update on a template-conversion

Updates the layout of a slide and re-renders the affected portion of the converted deck. Returns a new callback_id to poll.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
callback_id
required
string

Conversion job id.

slide_index
required
integer >= 0

Zero-based slide index.

layout_id
required
string

Target layout id (from /template-converter/layouts).

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "callback_id": "string",
  • "slide_index": 0,
  • "layout_id": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create a format modification on a template-conversion

Applies a batch of format modifications (title-formatting, body-formatting) to a converted deck and re-renders the affected slides. Returns a new callback_id to poll.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Request Body schema: application/json
required
callback_id
required
string

Conversion job id.

required
Array of objects

Per-slide formatting modifications.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "callback_id": "string",
  • "modify_format_config": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Read available format-modification settings for a template-conversion

Returns the available formatting controls (font sizes, weight, alignment) that may be applied to title/body text in a converted deck.

Authorizations:
BearerAuth
path Parameters
callback_id
required
string non-empty

Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Audiences

List and search the audience profiles configured for the caller's company.

List audience profiles

Returns the audiences configured for the caller's company. Pagination is not yet implemented; the full list is returned. Cursor pagination is planned for a future minor version.

Authorizations:
BearerAuth
query Parameters
feature
string

Filter by feature scope.

id
string

Filter to a single audience by id.

sort
string

Sort expression (for example name:asc).

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Search audience profiles

Free-text and field-filtered search across audience profiles. The request supports limit and filterBy* parameters. Cursor pagination is planned for a future minor version.

Authorizations:
BearerAuth
query Parameters
feature
string

Filter by feature scope.

Request Body schema: application/json
required
query
string

Free-text search query.

id
string

Filter to a single audience by id.

sort
string

Sort expression (for example name:asc).

object

Field-level filter.

object

Collection-level filter.

fields
Array of strings

Subset of fields to return.

extraFields
Array of strings

Additional fields to include beyond defaults.

limit
integer
Default: 15

Maximum number of results.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "query": "string",
  • "id": "string",
  • "sort": "string",
  • "filterBy": { },
  • "filterByCollection": { },
  • "fields": [
    ],
  • "extraFields": [
    ],
  • "limit": 15
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Themes

List the presentation themes (brand templates) configured for the caller's company.

List templates available to a feature

Returns the themes/templates available to the caller's company, optionally filtered to a specific feature. This single endpoint replaces the legacy GET /api/v1/autogenerator/templates and GET /api/v1/template-converter/templates aliases — pass the feature query parameter to scope results.

Pagination is not yet implemented; the full set is returned. Cursor pagination is planned for a future minor version.

Authorizations:
BearerAuth
query Parameters
feature
string
Enum: "auto_generator" "template_converter"

Filter to templates enabled for a specific feature.

name
string

Optional case-insensitive name filter.

sort
string

Sort expression (for example name:asc).

source
string

Source filter (e.g. brand vs prezent).

enabledFeature
string

Optional feature flag filter.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

List themes (brand templates)

Returns the presentation themes available to the caller's company. Pagination is not yet implemented; the full list is returned. Cursor pagination is planned for a future minor version.

Authorizations:
BearerAuth
query Parameters
name
string

Optional case-insensitive name filter.

feature
string

Filter by feature scope.

enabledFeature
string

Optional feature flag filter.

sort
string

Sort expression (for example name:asc).

source
string

Source filter.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Upload

Validate, preprocess, and upload supporting files (PowerPoint, PDF, images, etc.).

Upload a single file (base64-encoded)

Accepts a single file as a base64 string or data: URL in the request body. The response contains the uploaded file's id, S3 path, and metadata.

Authorizations:
BearerAuth
Request Body schema: application/json
required
fileContent
required
string

File content as a base64 string or data: URL.

fileName
required
string

Original filename including extension.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "fileContent": "string",
  • "fileName": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Preprocess a file in chunks

Accepts one chunk of a multi-chunk file upload. The caller drives chunking via chunkIndex and totalChunks; chunks for the same upload share a requestIdentifier. Once all chunks for a requestIdentifier have arrived the file is assembled and made available to downstream operations.

Authorizations:
BearerAuth
Request Body schema: application/json
required
fileContent
required
string

Chunk content as base64 / data: URL.

fileName
required
string

Original filename including extension.

chunkIndex
required
integer >= 0

Zero-based index of this chunk.

totalChunks
required
integer >= 1

Total number of chunks for this upload.

requestIdentifier
required
string

Caller-supplied identifier that groups chunks of the same upload.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "fileContent": "string",
  • "fileName": "string",
  • "chunkIndex": 0,
  • "totalChunks": 1,
  • "requestIdentifier": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Validate uploaded files and/or web links

Validates a set of previously uploaded files (referenced by fileIdentifiers) and/or a list of web links. At least one of fileIdentifiers or webLinks must be non-empty.

Authorizations:
BearerAuth
Request Body schema: application/json
required
object

Map of uuidfileName for previously uploaded files.

webLinks
Array of strings <uri> [ items <uri > ]

List of URLs to validate.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "fileIdentifiers": {
    },
  • "webLinks": []
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

File Access

Mint short-lived access tokens for the caller's stored files.

Create signed access tokens for stored files

Returns short-lived per-file access tokens that allow the caller to download the referenced files from the underlying storage backend.

Authorizations:
BearerAuth
Request Body schema: application/json
required
filePaths
required
Array of strings non-empty

List of stored file paths to mint tokens for.

source
string
Enum: "betaimages" "magikarp"

Storage backend source.

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "filePaths": [
    ],
  • "source": "betaimages"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Webhooks

Receive signed HTTPS callbacks when Prezent jobs complete or fail. Subscriptions are scoped per API key, retried over a 21h window, and auto-disabled after 50 consecutive failures. See the Webhooks guide for the signature format and verification examples.

Create a webhook subscription

Registers a new HTTPS endpoint to receive signed delivery callbacks for the listed event types. Returns the HMAC secret ONCE — store it securely. Subsequent reads only expose the secret_prefix.

Authorizations:
BearerAuth
Request Body schema: application/json
required
url
required
string <uri>

HTTPS endpoint to receive deliveries. Must use https://, resolve to a public IP, and not use a disallowed port. See the Webhooks guide.

events
Array of strings (WebhookEventType)
Default: ["*"]
Items Enum: "autogeneration.completed" "autogeneration.failed" "template_conversion.completed" "template_conversion.failed" "webhook.test"

Event types to subscribe to. Defaults to ["*"].

description
string or null
status
string (WebhookSubscriptionStatus)
Enum: "active" "disabled"

active subscriptions receive deliveries. disabled subscriptions are skipped at dispatch time — either explicitly set by the customer or set by Prezent's auto-disable rule after 50 consecutive delivery failures. PATCH status: active to re-enable.

Responses

Request samples

Content type
application/json
{
  • "events": [
    ],
  • "description": "Push completions into our deal-room worker.",
  • "status": "active"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

List webhook subscriptions

Returns the subscriptions owned by the calling API key. Excludes soft-deleted rows. Use the standard cursor-pagination parameters — see Developer Guide → Pagination.

Authorizations:
BearerAuth
query Parameters
limit
integer <int32> [ 1 .. 100 ]
Default: 25
cursor
string

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Read a webhook subscription

Returns one subscription. secret_prefix (the first 6 chars of the HMAC secret) is exposed for human disambiguation; the full secret is never returned by a read.

Authorizations:
BearerAuth
path Parameters
id
required
string^whsub_[a-f0-9]{32}$
Example: whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c

The public subscription id returned by POST /api/v1/webhook-subscriptions — shaped whsub_<32 hex chars>.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Update a webhook subscription

Partial update. Any combination of url, events, description, or status may be supplied. Changes to url are re-validated against the SSRF / scheme / port rules. Setting status to "active" re-enables an auto-disabled subscription.

Authorizations:
BearerAuth
path Parameters
id
required
string^whsub_[a-f0-9]{32}$
Example: whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c

The public subscription id returned by POST /api/v1/webhook-subscriptions — shaped whsub_<32 hex chars>.

Request Body schema: application/json
required
url
string <uri>
events
Array of strings (WebhookEventType) non-empty
Items Enum: "autogeneration.completed" "autogeneration.failed" "template_conversion.completed" "template_conversion.failed" "webhook.test"
description
string or null
status
string (WebhookSubscriptionStatus)
Enum: "active" "disabled"

active subscriptions receive deliveries. disabled subscriptions are skipped at dispatch time — either explicitly set by the customer or set by Prezent's auto-disable rule after 50 consecutive delivery failures. PATCH status: active to re-enable.

Responses

Request samples

Content type
application/json
{
  • "events": [
    ],
  • "description": "string",
  • "status": "active"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Delete a webhook subscription

Soft-deletes the subscription. The id is permanently retired — no future deliveries will be attempted, and the row is excluded from list responses.

Authorizations:
BearerAuth
path Parameters
id
required
string^whsub_[a-f0-9]{32}$
Example: whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c

The public subscription id returned by POST /api/v1/webhook-subscriptions — shaped whsub_<32 hex chars>.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Rotate the HMAC secret for a subscription

Generates a new HMAC secret and invalidates the old one immediately. Returns the new secret ONCE — store it before responding to the caller. There is no grace window during which both secrets verify; if you need an overlap, stand up a second subscription on a distinct path, switch over, then delete the old one.

Authorizations:
BearerAuth
path Parameters
id
required
string^whsub_[a-f0-9]{32}$
Example: whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c

The public subscription id returned by POST /api/v1/webhook-subscriptions — shaped whsub_<32 hex chars>.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Send a test delivery to a subscription

Immediately POSTs a synthetic webhook.test event to the subscription's URL (signed with the current secret, 5s timeout, no retries) and returns the response status + body verbatim. Use this to verify the receiver's signature-verification path before real traffic flows.

Authorizations:
BearerAuth
path Parameters
id
required
string^whsub_[a-f0-9]{32}$
Example: whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c

The public subscription id returned by POST /api/v1/webhook-subscriptions — shaped whsub_<32 hex chars>.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Health

Liveness and component health-check endpoints.

Liveness check

Returns a fixed greeting payload. Exists to allow clients to verify connectivity and credentials. Does not consult any downstream services.

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Component health check

Reports the status of downstream services. With no category parameter, returns a simple "alive" greeting. With category=autogenerator or category=scim, reports per-component status and returns 503 if any required service is unhealthy.

Authorizations:
BearerAuth
query Parameters
category
string
Enum: "autogenerator" "scim"

Component group to check. Omit for a generic liveness response.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}