Download OpenAPI specification:Download
Agent-ready REST API for Prezent's content-generation and template-conversion services.
The Prezent Platform API exposes Prezent's AI Builder, Template Converter, Audiences, Themes, and File-upload services as a JSON HTTP API.
Only the AI Builder surface changed from 1.0. Template Converter, Audiences, Themes, Upload, File Access, Webhooks, and Health are identical to 1.0 — the same paths, payloads, and responses. If you use only those, 2.0 requires no change on your side.
The AI Builder API moved from a polling model to a streaming one.
POST /api/v2/generate (or /autogenerator/edit) returns a callback_id;
POST /api/v2/streams/sessions with that id returns a short-lived
stream_url; opening it with any SSE client yields events shaped
{status, message, callback_id} — status: "inprogress" until a terminal
success, failed, or cancelled, with a successful terminal event adding
download_url. POST /api/v2/autogenerator/download skips the
streams/sessions step and returns a stream_url directly, because the file
may need exporting first and that can outlast an HTTP response. Stream URLs
expire in about 5 minutes with the token embedded in the URL (so no
Authorization header is sent, and EventSource cannot send one); mint a
fresh one by repeating the call — the stream replays from the start of the
turn. There is no status endpoint in 2.0, and the former regenerate /
node-change / slide-actions endpoints collapsed into the single
POST /api/v2/autogenerator/edit. A full walk-through with client code is in
the Streaming guide.
Success shapes are not uniform on the v2 AI Builder surface — read the
response schema on the endpoint you are calling rather than assuming a shared
shape. POST /api/v2/generate and /autogenerator/edit return
{message, resData, error}; /autogenerator/download returns flat top-level
fields; /streams/sessions returns {success, data};
/autogenerator/languages returns {status, message, data}; and
/integrations/auth returns one of two shapes documented on that endpoint.
Errors remain uniform everywhere: { "success": false, "data": null, "error": { "code": "...", "message": "...", "details": { } } }. Error codes are drawn
from a stable catalog (see ErrorCode) — codes never change meaning or HTTP
status once published. Schemas allow additional properties, so handlers may
emit extra keys alongside the documented ones; do not depend on undocumented
keys.
Conventions that apply to every endpoint (full reference in the companion guides on this documentation site):
Authorization: Bearer <key>. Each
key is scoped to an allow-list of endpoint paths; an out-of-scope call
returns 404 ENDPOINT_NOT_FOUND, indistinguishable from a path that does
not exist.429 with error.code TOO_MANY_REQUESTS (gateway),
RATE_LIMIT_EXCEEDED (per-category), or USAGE_LIMIT_EXCEEDED (annual).Idempotency-Key; list endpoints accept opt-in limit/cursor paging.Still on 1.0? The 1.0 contract is unchanged and still served — see the 1.0 API reference and the 1.0 documentation. Both versions run side by side; there is no forced migration.
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. The MCP tools wrap the same REST endpoints
described here.
Official SDKs. Typed REST clients are published for Python and
TypeScript (prezent-sdk) — generated from and versioned against this spec.
For other languages, generate a client from this document.
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 /docs/scim-user-management.
Generate, edit, and download AI-authored presentations. In API 2.0 every one of these is a STREAMING flow: the endpoint returns a callback_id (or, for download, a stream_url directly), and progress plus the final download URL arrive as Server-Sent Events. See the AI Builder API guide.
Start a presentation generation and receive a callback_id.
This is a streaming flow. Nothing is returned but the id — to watch
progress and obtain the finished deck, exchange the callback_id for a
stream URL via
POST /api/v2/streams/sessions
and read the Server-Sent Events. The terminal done event carries the
download_url.
Beyond prompt, you can ground the generation in your own material:
files — ids of previously uploaded files (see
POST /api/v1/preprocess)web_links — URLs to readtext — an inline block of textEvery key in settings is optional. Any key you omit falls back to the
default stored on your API key, and then to the documented default. So a
key configured with your house template and language needs only a
prompt.
| Idempotency-Key | string Example: 8e6df756-18f6-4f16-8e12-7d7a5c5cb181 Optional client-generated key (a UUID is ideal) that makes a
write request safe to retry. The first request is processed and
its response cached for 24 hours; an identical retry with the
same key returns the cached response plus an
|
| prompt required | string non-empty What to generate, in plain language. Be specific about topic, audience, and length — "a 10-slide deck on renewable-energy market trends for a board audience" produces a better result than "renewable energy". |
| template_id | string Brand template to apply. Takes precedence over |
| audience_id | string Audience profile to tailor the deck to (tone, detail, structure). List
available profiles with
|
object Object form of | |
Array of objects (GenerationContextFile) Files to ground the generation in. Upload them first with
| |
| web_links | Array of strings <uri> [ items <uri > ] URLs for the generator to read as source material. |
| text | string A block of text to use as source material — notes, an outline, an
excerpt. Use |
| texts | Array of strings Several blocks of text as source material. Takes precedence over
|
| websearch | boolean Default: false Let the generator search the web. Takes precedence over
|
| externalContext | boolean Alias for |
object (GenerationSettingsV2) Generation settings. Every key is optional. An omitted key falls back
to the default configured on your API key, and then to the documented
default — so a fully configured key needs no |
{- "prompt": "A 10-slide deck on renewable-energy market trends for 2026"
}{- "message": "Job submitted successfully",
- "resData": {
- "callback_id": "3f8e7d61-9a2b-4c5e-b013-7d4a6f2c8e91"
}, - "error": null
}Apply a natural-language edit to a presentation that was generated with
POST /api/v2/generate.
This is a streaming flow, and it works exactly like generate: you
receive a new callback_id for this edit turn, which you exchange
for a stream URL via
POST /api/v2/streams/sessions.
Edits are conversational — each edit builds on the last. Pass the
callback_id of the most recent turn (the original generation, or a
previous edit) as the callback_id here, and use the new id returned
for the next edit.
Omit slideIndex to edit the deck as a whole; supply it to target one
slide.
The generation must have finished. Editing is only possible once the target presentation has completed — the deck size has to be known before a slide can be addressed. Editing a
callback_idthat is still generating returns400.
One turn at a time. If a previous turn on this presentation is still running, the request is rejected with that condition reported in
error.message.
| Idempotency-Key | string Example: 8e6df756-18f6-4f16-8e12-7d7a5c5cb181 Optional client-generated key (a UUID is ideal) that makes a
write request safe to retry. The first request is processed and
its response cached for 24 hours; an identical retry with the
same key returns the cached response plus an
|
| callback_id required | string non-empty The presentation to edit — the |
| prompt required | string non-empty The change to make, in plain language. |
| slideIndex | integer >= 0 Which slide to edit, counting from 0. Omit to edit the deck as a whole. Must be within the deck — a value past the last slide is rejected with
|
Array of objects (GenerationContextFile) Files to use as context for this edit. | |
| web_links | Array of strings <uri> [ items <uri > ] URLs to read as context for this edit. |
| text | string A block of text to use as context for this edit. |
{- "callback_id": "3f8e7d61-9a2b-4c5e-b013-7d4a6f2c8e91",
- "prompt": "Make the tone more formal and shorten every bullet"
}{- "message": "Edit submitted successfully",
- "resData": {
- "callback_id": "8c1d4b92-6f37-4e2a-a95c-1b0e7d3f6a48"
}, - "error": null
}Obtain the finished presentation file for a callback_id.
This is a streaming flow, and it is the one place where it differs
from generate and edit: this endpoint returns a stream_url
directly, so there is no POST /api/v2/streams/sessions step. Open
the URL and read the events; the terminal done event carries the
download_url.
A stream rather than an inline URL because the file may not exist yet.
If the requested export_type is not the format this presentation
already produced, a fresh export runs — which can take several minutes,
far longer than an HTTP response allows. Both cases end on the same
terminal event, so one parser handles either:
| Case | What you see |
|---|---|
| Already exported in this format | done immediately, with the download_url |
| Needs exporting | progress events, then done with the new download_url |
Quota is checked up front. If your plan does not have enough remaining download slides for this presentation, the request fails with
429 USAGE_LIMIT_EXCEEDEDand no stream is minted.
| Idempotency-Key | string Example: 8e6df756-18f6-4f16-8e12-7d7a5c5cb181 Optional client-generated key (a UUID is ideal) that makes a
write request safe to retry. The first request is processed and
its response cached for 24 hours; an identical retry with the
same key returns the cached response plus an
|
| callback_id required | string non-empty The presentation to download. |
| export_type | string Enum: "pptx" "pdf" File format. Defaults to the format configured on your API key, and
then to |
{- "callback_id": "3f8e7d61-9a2b-4c5e-b013-7d4a6f2c8e91"
}{- "message": "Connect to stream_url to receive the download URL on the done event",
- "status": "success",
- "callback_id": "3f8e7d61-9a2b-4c5e-b013-7d4a6f2c8e91",
- "export_type": "pptx",
- "expires_at": "2026-08-05T12:34:56.000Z"
}The languages a presentation can be generated in. Pass a locale from
this list as settings.language on
POST /api/v2/generate; an
unsupported locale is rejected with 422.
The list is static — cache it rather than calling this on every generation.
{- "status": "success",
- "message": "Supported languages retrieved successfully",
- "data": [
- {
- "language": "Arabic",
- "locale": "ar"
}, - {
- "language": "Chinese (Simplified)",
- "locale": "zh"
}, - {
- "language": "English (UK)",
- "locale": "en-uk"
}, - {
- "language": "English (US)",
- "locale": "en"
}, - {
- "language": "French",
- "locale": "fr"
}, - {
- "language": "German",
- "locale": "de"
}, - {
- "language": "Hindi",
- "locale": "hi"
}, - {
- "language": "Indonesian",
- "locale": "id"
}, - {
- "language": "Italian",
- "locale": "it"
}, - {
- "language": "Japanese",
- "locale": "ja"
}, - {
- "language": "Korean",
- "locale": "ko"
}, - {
- "language": "Portuguese (Brazil)",
- "locale": "pt"
}, - {
- "language": "Spanish",
- "locale": "es"
}
]
}Returns the themes/templates available to the caller's company for
AutoGenerator. Results are always scoped to the auto_generator
feature — the scoping is applied server-side and cannot be
overridden by the caller.
Pagination is opt-in. Send limit (and follow next_cursor)
to page; omit both limit and cursor to receive the full list
unchanged.
| name | string Optional case-insensitive name filter. |
| sort | string Sort expression (for example |
| limit | integer [ 1 .. 200 ] Default: 50 Items per page (1–200, default 50). Enables pagination. |
| cursor | string Opaque cursor from a previous response's |
| source | string Source filter (e.g. brand vs prezent). |
| enabledFeature | string Optional feature flag filter. |
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "code": "string",
- "source": "string"
}
], - "next_cursor": "string"
}Version: 1.0
Generate, edit, and download AI-authored posters — a single canvas rather than a deck of slides. Same STREAMING contract as AI Builder: the endpoint returns a callback_id (or, for download, a stream_url directly), and progress plus the final download URL arrive as Server-Sent Events. Orientation and page size replace the deck-size settings, an edit addresses a region of the canvas by name instead of a slideIndex, and citations render per reference_format. See the Posters API guide.
Start a poster generation and receive a callback_id.
This is a streaming flow. Nothing is returned but the id — to watch
progress and obtain the finished poster, exchange the callback_id for a
stream URL via
POST /api/v2/streams/sessions
and read the Server-Sent Events. The terminal done event carries the
download_url.
A poster is read all at once, so the layout matters as much as the content — and the prompt is where you specify it. Name the regions you want and what goes in each ("3 horizontal rows; row 1 covers … with a pie chart of …"). Those names are also how you target part of the canvas in a later edit.
Beyond prompt, you can ground the poster in your own material:
files — ids of previously uploaded files (see
POST /api/v1/preprocess)web_links — URLs to readtext — an inline block of textEvery key in settings is optional. Any key you omit falls back to the
default stored on your API key, and then to the documented default. So a
key configured with your house template and language needs only a
prompt.
| Idempotency-Key | string Example: 8e6df756-18f6-4f16-8e12-7d7a5c5cb181 Optional client-generated key (a UUID is ideal) that makes a
write request safe to retry. The first request is processed and
its response cached for 24 hours; an identical retry with the
same key returns the cached response plus an
|
| prompt required | string non-empty What to generate, in plain language. A poster is read all at once, so describe the layout as well as the content — name the regions you want and what goes in each ("organise content in 3 horizontal rows; row 1 covers … with a pie chart of …"). A bare topic produces a valid poster but leaves every layout decision to the generator, and gives a later edit nothing to address by name. |
| template_id | string Brand template to apply. Takes precedence over |
Array of objects (GenerationContextFile) Files to ground the poster in. Upload them first with
| |
| web_links | Array of strings <uri> [ items <uri > ] URLs for the generator to read as source material. |
| text | string A block of text to use as source material — notes, an outline, an excerpt. |
| websearch | boolean Default: false Let the generator search the web. Takes precedence over
Independent of the fields above: enable both to have the poster built from your sources and supplemented with current public data. |
object (PosterSettingsV2) Poster settings. Every key is optional. An omitted key falls back to
the default configured on your API key, and then to the documented
default — so a fully configured key needs no |
{- "prompt": "A poster on cloud misconfiguration as the leading cause of enterprise data breaches"
}{- "message": "Job submitted successfully",
- "resData": {
- "callback_id": "3f8e7d61-9a2b-4c5e-b013-7d4a6f2c8e91"
}, - "error": null
}Apply a natural-language edit to a poster that was generated with
POST /api/v1/posters/generate.
This is a streaming flow, and it works exactly like generate: you
receive a new callback_id for this edit turn, which you exchange
for a stream URL via
POST /api/v2/streams/sessions.
Edits are conversational — each edit builds on the last. Pass the
callback_id of the most recent turn (the original generation, or a
previous edit) as the callback_id here, and use the new id returned
for the next edit.
| Intent | Example prompt |
|---|---|
| Change template | Apply the corporate 2026 template |
| Replace a visual | Replace the image in row 1 with something from the brand library |
| Change a chart | Turn the pie chart into a horizontal bar chart, sorted descending |
| Manage sources | Add the 2026 cloud security report and switch citations to AMA |
| Rewrite content | Shorten every bullet in row 3 to one line |
| Change layout | Move the comparison table to row 3 |
The generation must have finished. Editing a
callback_idthat is still generating returns400.
One turn at a time. If a previous turn on this poster is still running, the request is rejected with that condition reported in
error.message.
| Idempotency-Key | string Example: 8e6df756-18f6-4f16-8e12-7d7a5c5cb181 Optional client-generated key (a UUID is ideal) that makes a
write request safe to retry. The first request is processed and
its response cached for 24 hours; an identical retry with the
same key returns the cached response plus an
|
| callback_id required | string non-empty The poster to edit — the |
| prompt required | string non-empty The change to make, in plain language. The poster's settings — template, orientation, size, language, reference format, image sources — are fixed at generation time and carry over unchanged through every edit; ask for what you want here. Asking for a different orientation or page size reflows the whole canvas: content is preserved and recomposed for the new aspect ratio, so region positions move. |
Array of objects (GenerationContextFile) Files to use as context for this edit. | |
| web_links | Array of strings <uri> [ items <uri > ] URLs to read as context for this edit. |
| text | string A block of text to use as context for this edit. |
{- "callback_id": "3f8e7d61-9a2b-4c5e-b013-7d4a6f2c8e91",
- "prompt": "In row 2, replace the comparison table with a stacked bar chart and keep the same three columns as series"
}{- "message": "Edit submitted successfully",
- "resData": {
- "callback_id": "8c1d4b92-6f37-4e2a-a95c-1b0e7d3f6a48"
}, - "error": null
}Obtain the finished poster file for a callback_id. The
download_url is returned inline — one request, one URL.
If you ask for the format the generation already produced, that file's URL is returned as-is. Any other format is re-exported from the poster's stored canvas before the URL comes back, so allow up to ~25 seconds for that call.
download_url carries its own access token: fetch it as-is, with no
Authorization header. It expires at expires_at, about 5 minutes
out — call this endpoint again for a fresh URL.
The poster must have finished generating. Requesting a download while generation is still in progress returns
400.
| Idempotency-Key | string Example: 8e6df756-18f6-4f16-8e12-7d7a5c5cb181 Optional client-generated key (a UUID is ideal) that makes a
write request safe to retry. The first request is processed and
its response cached for 24 hours; an identical retry with the
same key returns the cached response plus an
|
| callback_id required | string non-empty The poster to download. | ||||||||||
| export_type | string Enum: "pptx" "pdf" "png" "jpg" "jpeg" File format. Defaults to the format configured on your API key, and
then to
Each format is a separate export, so the same poster can be downloaded
in several — call this endpoint once per |
{- "callback_id": "3f8e7d61-9a2b-4c5e-b013-7d4a6f2c8e91"
}{- "message": "Poster exported successfully",
- "status": "success",
- "callback_id": "3f8e7d61-9a2b-4c5e-b013-7d4a6f2c8e91",
- "export_type": "pptx",
- "expires_at": "2026-08-05T12:34:56.000Z"
}The brand templates available for poster generation — the values you pass
as template_id. Results are scoped to the poster feature server-side;
the scoping cannot be overridden by the caller.
Always list from this endpoint: a template_id from another surface is
not necessarily valid for a poster.
Pagination is opt-in. Send limit (and follow next_cursor) to
page; omit both limit and cursor to receive the full list unchanged.
| name | string Optional case-insensitive name filter. |
| sort | string Sort expression (for example |
| source | string Source filter (e.g. brand vs prezent). |
| orientation | string Enum: "landscape" "portrait" "square" Only templates supporting this orientation. |
| enabledFeature | string Optional feature flag filter. |
| limit | integer [ 1 .. 200 ] Default: 50 Items per page (1–200, default 50). Enables pagination. |
| cursor | string Opaque cursor from a previous response's |
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "code": "string",
- "source": "string"
}
], - "next_cursor": "string"
}The languages a poster can be generated in. Pass a locale from this
list as settings.language on
POST /api/v1/posters/generate; an
unsupported locale is rejected with 422.
Right-to-left locales such as ar mirror the poster's region order as
well as its text.
The list is static — cache it rather than calling this on every generation.
{- "status": "success",
- "message": "Supported languages retrieved successfully",
- "data": [
- {
- "language": "Arabic",
- "locale": "ar"
}, - {
- "language": "Chinese (Simplified)",
- "locale": "zh"
}, - {
- "language": "English (UK)",
- "locale": "en-uk"
}, - {
- "language": "English (US)",
- "locale": "en"
}, - {
- "language": "French",
- "locale": "fr"
}, - {
- "language": "German",
- "locale": "de"
}, - {
- "language": "Hindi",
- "locale": "hi"
}, - {
- "language": "Indonesian",
- "locale": "id"
}, - {
- "language": "Italian",
- "locale": "it"
}, - {
- "language": "Japanese",
- "locale": "ja"
}, - {
- "language": "Korean",
- "locale": "ko"
}, - {
- "language": "Portuguese (Brazil)",
- "locale": "pt"
}, - {
- "language": "Spanish",
- "locale": "es"
}
]
}Apply a target brand template to an uploaded presentation, including review suggestions, work-area adjustment, layout change, and download.
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
GET /api/v1/template-converter/status/{callbackId} until the
pipeline reaches a terminal state.
| Idempotency-Key | string Example: 8e6df756-18f6-4f16-8e12-7d7a5c5cb181 Optional client-generated key (a UUID is ideal) that makes a
write request safe to retry. The first request is processed and
its response cached for 24 hours; an identical retry with the
same key returns the cached response plus an
|
| fileId | string Identifier of a previously uploaded input deck. Supply either |
object Inline reference to the input deck. All four properties below are required when | |
| templateName required | string non-empty Code of the target brand template. Must be one the caller's company is authorised to use — an unknown or unauthorised code is rejected. |
| includeImageWithoutData | boolean Default: false Carry over images that have no associated data. |
| includeImageWithData | boolean Default: false Carry over images that have associated data. |
| includeIcons | boolean Default: false Carry over icons. |
| includeSpecialColor | boolean Default: false Preserve special color treatments from the source deck. |
| color_preference | string Default: "standard" Enum: "standard" "advanced" Color treatment preference. Also accepted as |
| content_formatting_preference | string Enum: "standard" "advanced" Content-formatting preference. Also accepted as |
| modifyFormat | string Enum: "source" "target" Which deck's formatting to apply. Also accepted as |
object Per-conversion settings. Each key overrides the corresponding API-key default. | |
| property name* additional property | any |
{- "fileId": "string",
- "inputDeck": {
- "numOfPages": 0,
- "s3Bucket": "string",
- "s3Prefix": "string",
- "sizeKb": 0,
- "presentationName": "string"
}, - "templateName": "string",
- "includeImageWithoutData": false,
- "includeImageWithData": false,
- "includeIcons": false,
- "includeSpecialColor": false,
- "color_preference": "standard",
- "content_formatting_preference": "standard",
- "modifyFormat": "source",
- "settings": {
- "ai_mode": "standard",
- "work_area_option": "no-adjust",
- "modifyFormat": "source",
- "color_preference": "standard"
}
}{- "callbackId": "string",
- "status": "processing",
- "presentationName": "string",
- "token": "string"
}Returns the current state of a template-conversion job. The
response is HTTP 200 whenever the job is found — branch on the
status field in the body, which reports whether the pipeline is
still running, has completed, or has failed.
For the same callbackId, polling after a successful conversion
returns the same cached payload.
| callbackId required | string non-empty Callback id returned by |
{- "success": true,
- "data": {
- "callbackId": "string",
- "status": "string",
- "presentation_name": "string",
- "template_name": "string"
}
}Accepts one chunk of a multi-chunk PPTX upload, used as the
inputDeck for a subsequent template-conversion job. Only .pptx
files are accepted. Chunks of the same upload are grouped by the
body's requestIdentifier, and the upload precedes the creation of
the conversion's callback_id.
| fileContent required | string Chunk content as base64 / |
| 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 |
{- "fileContent": "string",
- "fileName": "string",
- "chunkIndex": 0,
- "totalChunks": 1,
- "requestIdentifier": "string"
}{- "success": true,
- "data": {
- "request_identifier": "string",
- "file_name": "string",
- "message": "string"
}
}Concludes a chunked upload. fileIdentifier must match the
requestIdentifier used when uploading the chunks via
POST /api/v1/template-converter/preprocess.
The finalised file must be a .pptx, no larger than 200 MB, and no
more than 100 pages. Runs before the conversion's callback_id
exists — the fileId it returns is what you pass to
POST /api/v1/template-converter/start.
| fileIdentifier required | string Identifier shared across all chunks of this upload. Must match the |
| fileName required | string Final filename. Must end in |
| property name* additional property | any |
{- "fileIdentifier": "string",
- "fileName": "string"
}{- "status": "success",
- "log": "string",
- "data": {
- "fileId": "string",
- "s3Prefix": "string",
- "s3Bucket": "string",
- "type": "string",
- "sizeKb": 0,
- "numOfPages": 0
}
}Returns the colour and special-colour suggestions produced for the
converted deck identified by callbackId. Each suggestion may be
applied via the corresponding PATCH endpoint.
The conversion must have completed and produced compliance data — otherwise the request is rejected.
| callbackId required | string non-empty Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts. |
{- "success": true,
- "data": {
- "callback_id": "string",
- "presentation_name": "string",
- "suggestions": [
- { }
]
}
}Applies a subset of editorial suggestions to the converted deck
identified by callbackId. Kicks off a background pipeline that
produces a new derived deck; the response carries a new
callback_id to poll.
| callbackId required | string non-empty Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts. |
required | object Colour replacement to apply. |
object Special-colour replacement to apply. | |
| property name* additional property | any |
{- "colorSuggestions": {
- "status": "edited",
- "values": {
- "currentColor": "string",
- "newColor": "string"
}
}, - "specialColorSuggestions": {
- "status": "edited",
- "values": {
- "currentColor": "string",
- "newColor": "string"
}
}
}{- "status": "processing",
- "callbackId": "string",
- "presentationName": "string"
}Re-runs the conversion pipeline for an already-converted deck
against a new target templateName. Returns a new callback_id
to poll.
| callbackId required | string non-empty Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts. |
| templateName required | string non-empty Code of the new target brand template. Must be one the caller's company is authorised to use — an unknown or unauthorised code is rejected. |
| property name* additional property | any |
{- "templateName": "string"
}{- "status": "processing",
- "callbackId": "string",
- "presentationName": "string"
}Returns a signed download URL for the converted deck identified
by callbackId. Counted against the TC_DOWNLOAD usage limit.
The conversion must have reached completed — polling
GET /api/v1/template-converter/status/{callbackId} first is
required, otherwise the request is rejected with the current
status.
| callbackId required | string non-empty Server-issued opaque identifier returned by an async kick-off endpoint. Used to poll status or fetch derived artefacts. |
{- "success": true,
}Records a like or qualitative feedback against a converted deck.
The target deck is identified by callback_id in the request body.
When type is liked the value must be a boolean; when
feedback the value must be a string.
This endpoint accepts PUT only — a POST returns
METHOD_NOT_ALLOWED.
| callback_id required | string non-empty Converted-deck callback id. Must correspond to a live conversion session. |
| type required | string Enum: "liked" "feedback" Reaction kind. |
required | boolean or string When |
| property name* additional property | any |
{- "callback_id": "string",
- "type": "liked",
- "value": true
}{- "success": true,
- "data": {
- "callback_id": "string",
- "type": "liked",
- "message": "string",
- "warnings": [
- "string"
]
}
}Returns the available work-area adjustment options for the given slide of the given conversion job. Both parameters are supplied as query parameters.
| callbackId required | string non-empty Conversion job id. Must correspond to a live conversion session. |
| slideIndex required | integer >= 0 Zero-based slide index. |
{- "success": true,
- "data": {
- "callback_id": "string",
- "work_area_adjustments": [
- { }
]
}
}Applies a selected work-area adjustment to the given slide of a conversion job. All parameters are supplied in the request body.
selection is validated against the options currently available
for that slide — fetch them first via
GET /api/v1/template-converter/work-area-options.
| callbackId required | string non-empty Conversion job id. Must correspond to a live conversion session. |
| slideIndex required | integer >= 0 Zero-based slide index. |
| selection required | string The work-area option to apply. Must be one of the options currently available for this slide, as returned by |
| property name* additional property | any |
{- "callbackId": "string",
- "slideIndex": 0,
- "selection": "string"
}{- "success": true,
- "data": {
- "message": "string"
}
}Returns the layout options available for the given slide of a conversion job. Both parameters are supplied as query parameters.
| callbackId required | string non-empty Conversion job id. Must correspond to a live conversion session. |
| slideIndex required | integer >= 0 Zero-based slide index. |
{- "success": true,
- "data": {
- "callback_id": "string",
- "status": "success",
- "layouts": {
- "target_template_layouts": [
- { }
], - "input_deck_layouts": [
- { }
]
}
}
}Updates the layout of one or more slides and re-renders the
affected portion of the converted deck. Returns a new
callback_id to poll. All parameters are supplied in the request
body.
| callbackId required | string non-empty Conversion job id. Must correspond to a live conversion session. |
| slideIndex required | Array of integers non-empty [ items >= 0 ] Zero-based indices of the slides to update. Must be an array with at least one element, even for a single slide. |
| layoutId required | string non-empty Target layout id, taken from |
| source required | string Enum: "targetTemplateLayouts" "inputDeckLayouts" Which layout collection |
| property name* additional property | any |
{- "callbackId": "string",
- "slideIndex": [
- 0
], - "layoutId": "string",
- "source": "targetTemplateLayouts"
}{- "status": "processing",
- "callbackId": "string",
- "presentationName": "string"
}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. All parameters are
supplied in the request body.
The conversion must have completed before this can be called.
| callbackId required | string non-empty Conversion job id. Must correspond to a live, completed conversion. |
| slideIndex required | Array of integers non-empty [ items >= 0 ] Zero-based indices of the slides to restyle. Each value must be within the deck's slide count. |
| selection_type | string Enum: "single" "all" "custom" "apply to slides after the current slide" "apply to slides before the current slide" How the selection was made. Derived automatically when omitted. |
| overall_settings_selected | boolean Default: false When |
Array of objects Per-slide formatting modifications. Required unless
The array length must equal | |
| property name* additional property | any |
{- "callbackId": "string",
- "slideIndex": [
- 0
], - "selection_type": "single",
- "overall_settings_selected": false,
- "modify_format_config": [
- {
- "title": {
- "font_height": {
- "option_type": "target",
- "value": null
}, - "font_case": {
- "option_type": "target",
- "value": null
}, - "font_bold": {
- "option_type": "target",
- "value": null
}, - "font_italic": {
- "option_type": "target",
- "value": null
}, - "font_underline": {
- "option_type": "target",
- "value": null
}, - "vertical_alignment": {
- "option_type": "target",
- "value": null
}, - "horizontal_alignment": {
- "option_type": "target",
- "value": null
}
}, - "body": {
- "font_height": {
- "option_type": "target",
- "value": null
}, - "font_case": {
- "option_type": "target",
- "value": null
}, - "font_bold": {
- "option_type": "target",
- "value": null
}, - "font_italic": {
- "option_type": "target",
- "value": null
}, - "font_underline": {
- "option_type": "target",
- "value": null
}, - "vertical_alignment": {
- "option_type": "target",
- "value": null
}, - "horizontal_alignment": {
- "option_type": "target",
- "value": null
}
}
}
]
}{- "status": "processing",
- "callbackId": "string",
- "presentationName": "string"
}Returns the current title/body formatting settings for every
slide of a converted deck. Use these as the starting point for a
POST /api/v1/template-converter/modify-format request.
The conversion must have completed — otherwise the request is rejected with the current status.
| callbackId required | string non-empty Conversion job id. Must correspond to a completed conversion. |
{- "callbackId": "string",
- "modify_format_settings": [
- { }
]
}Returns the audiences configured for the caller's company.
Pagination is opt-in. Send limit (and follow next_cursor)
to page; omit both limit and cursor to receive the full list
unchanged.
| feature | string Filter by feature scope. |
| id | string Filter to a single audience by id. |
| sort | string Sort expression (for example |
| limit | integer [ 1 .. 200 ] Default: 50 Max items per page (1–200, default 50). Sending this enables cursor pagination. |
| cursor | string Opaque cursor from a previous response's |
{- "success": true,
- "result": [
- {
- "id": "string",
- "name": "string"
}
], - "items": [
- { }
], - "next_cursor": "string"
}Free-text and field-filtered search across audience profiles. Use
the request body's limit field to cap how many matches are
returned (most-relevant first) and the filterBy* fields to
narrow the search.
| feature | string Filter by feature scope. |
| query | string Free-text search query. |
| id | string Filter to a single audience by id. |
| sort | string Sort expression (for example |
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 |
{- "query": "string",
- "id": "string",
- "sort": "string",
- "filterBy": { },
- "filterByCollection": { },
- "fields": [
- "string"
], - "extraFields": [
- "string"
], - "limit": 15
}{- "success": true,
- "result": [
- {
- "id": "string",
- "name": "string"
}
], - "items": [
- { }
], - "next_cursor": "string"
}Returns the presentation themes available to the caller's company.
Pagination is opt-in. Send limit (and follow next_cursor)
to page; omit both limit and cursor to receive the full list
unchanged.
| 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 |
| limit | integer [ 1 .. 200 ] Default: 50 Max items per page (1–200, default 50). Sending this enables cursor pagination. |
| cursor | string Opaque cursor from a previous response's |
| source | string Source filter. |
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "code": "string",
- "source": "string"
}
], - "next_cursor": "string"
}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.
| fileContent required | string Chunk content as base64 / |
| 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 |
{- "fileContent": "string",
- "fileName": "string",
- "chunkIndex": 0,
- "totalChunks": 1,
- "requestIdentifier": "string"
}{- "success": true,
- "data": {
- "request_identifier": "string",
- "file_name": "string",
- "message": "string"
}
}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.
object Map of | |
| webLinks | Array of strings <uri> [ items <uri > ] List of URLs to validate. |
| property name* additional property | any |
{- "fileIdentifiers": {
- "property1": "string",
- "property2": "string"
},
}{- "success": true,
- "data": {
- "files": [
- {
- "uuid": "string",
- "file_name": "string",
- "valid": true,
- "reason": "string"
}
], - "web_links": [
- {
- "url": "string",
- "valid": true,
- "reason": "string"
}
], - "message": "string"
}
}Returns short-lived per-file access tokens that allow the caller to download the referenced files from the underlying storage backend.
Paths that are not non-empty strings are skipped rather than
rejected, so the response may contain fewer tokens than the number
of filePaths supplied.
| 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 |
{- "filePaths": [
- "string"
], - "source": "betaimages"
}{- "success": true,
- "data": {
- "access_tokens": {
- "property1": "string",
- "property2": "string"
}, - "message": "string"
}
}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.
Delivered when an AutoGenerator job finishes successfully. Verify
the X-Prezent-Signature header and deduplicate on the event id.
| id required | string^evt_[a-zA-Z0-9_]+$ Globally unique event identifier. Also sent in the |
| type required | string (WebhookEventType) Enum: "autogeneration.completed" "autogeneration.failed" "template_conversion.completed" "template_conversion.failed" "webhook.test" Catalog of event types emitted by Prezent. New types may be added without notice; clients should ignore unknown values. |
| api_version required | string Schema version for the |
| created_at required | string <date-time> |
required | object Event-specific payload. For |
{- "id": "evt_8c2a1f7e6d3b4a5c9e0f8d7b6a5c4d3e",
- "type": "autogeneration.completed",
- "api_version": "1.0",
- "created_at": "2019-08-24T14:15:22Z",
- "data": { }
}Delivered when an AutoGenerator job fails. Same envelope, signature, and retry semantics as autogeneration.completed.
| id required | string^evt_[a-zA-Z0-9_]+$ Globally unique event identifier. Also sent in the |
| type required | string (WebhookEventType) Enum: "autogeneration.completed" "autogeneration.failed" "template_conversion.completed" "template_conversion.failed" "webhook.test" Catalog of event types emitted by Prezent. New types may be added without notice; clients should ignore unknown values. |
| api_version required | string Schema version for the |
| created_at required | string <date-time> |
required | object Event-specific payload. For |
{- "id": "evt_8c2a1f7e6d3b4a5c9e0f8d7b6a5c4d3e",
- "type": "autogeneration.completed",
- "api_version": "1.0",
- "created_at": "2019-08-24T14:15:22Z",
- "data": { }
}Delivered when a Template Converter job finishes successfully.
| id required | string^evt_[a-zA-Z0-9_]+$ Globally unique event identifier. Also sent in the |
| type required | string (WebhookEventType) Enum: "autogeneration.completed" "autogeneration.failed" "template_conversion.completed" "template_conversion.failed" "webhook.test" Catalog of event types emitted by Prezent. New types may be added without notice; clients should ignore unknown values. |
| api_version required | string Schema version for the |
| created_at required | string <date-time> |
required | object Event-specific payload. For |
{- "id": "evt_8c2a1f7e6d3b4a5c9e0f8d7b6a5c4d3e",
- "type": "autogeneration.completed",
- "api_version": "1.0",
- "created_at": "2019-08-24T14:15:22Z",
- "data": { }
}Delivered when a Template Converter job fails.
| id required | string^evt_[a-zA-Z0-9_]+$ Globally unique event identifier. Also sent in the |
| type required | string (WebhookEventType) Enum: "autogeneration.completed" "autogeneration.failed" "template_conversion.completed" "template_conversion.failed" "webhook.test" Catalog of event types emitted by Prezent. New types may be added without notice; clients should ignore unknown values. |
| api_version required | string Schema version for the |
| created_at required | string <date-time> |
required | object Event-specific payload. For |
{- "id": "evt_8c2a1f7e6d3b4a5c9e0f8d7b6a5c4d3e",
- "type": "autogeneration.completed",
- "api_version": "1.0",
- "created_at": "2019-08-24T14:15:22Z",
- "data": { }
}Sent once when you call the subscription test endpoint. Single-shot
— delivered once with no retries — so you can verify connectivity and
signature handling before production traffic flows.
| id required | string^evt_[a-zA-Z0-9_]+$ Globally unique event identifier. Also sent in the |
| type required | string (WebhookEventType) Enum: "autogeneration.completed" "autogeneration.failed" "template_conversion.completed" "template_conversion.failed" "webhook.test" Catalog of event types emitted by Prezent. New types may be added without notice; clients should ignore unknown values. |
| api_version required | string Schema version for the |
| created_at required | string <date-time> |
required | object Event-specific payload. For |
{- "id": "evt_8c2a1f7e6d3b4a5c9e0f8d7b6a5c4d3e",
- "type": "autogeneration.completed",
- "api_version": "1.0",
- "created_at": "2019-08-24T14:15:22Z",
- "data": { }
}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.
| url required | string <uri> HTTPS endpoint to receive deliveries. Must use |
| 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"
|
{- "events": [
- "autogeneration.completed",
- "autogeneration.failed"
], - "description": "Push completions into our deal-room worker.",
- "status": "active"
}{- "success": true,
- "data": {
- "id": "whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c",
- "secret_prefix": "whsec_",
- "events": [
- "autogeneration.completed",
- "autogeneration.failed"
], - "description": "Push completions into our deal-room worker.",
- "status": "active",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "last_delivery_at": "2019-08-24T14:15:22Z",
- "last_failure_at": "2019-08-24T14:15:22Z",
- "consecutive_failure_count": 0,
- "secret": "whsec_4mZkV8t9oFp1qR3sT7uW9xY2zA5bCdEfGhI"
}
}Returns the subscriptions owned by the calling API key. Excludes soft-deleted rows. Use the standard cursor-pagination parameters — see Developer Guide → Pagination.
| limit | integer <int32> [ 1 .. 100 ] Default: 25 |
| cursor | string |
{- "success": true,
- "data": {
- "items": [
- {
- "id": "whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c",
- "secret_prefix": "whsec_",
- "events": [
- "autogeneration.completed",
- "autogeneration.failed"
], - "description": "Push completions into our deal-room worker.",
- "status": "active",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "last_delivery_at": "2019-08-24T14:15:22Z",
- "last_failure_at": "2019-08-24T14:15:22Z",
- "consecutive_failure_count": 0
}
], - "next_cursor": "string"
}
}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.
| id required | string^whsub_[a-f0-9]{32}$ Example: whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c The public subscription id returned by |
{- "success": true,
- "data": {
- "id": "whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c",
- "secret_prefix": "whsec_",
- "events": [
- "autogeneration.completed",
- "autogeneration.failed"
], - "description": "Push completions into our deal-room worker.",
- "status": "active",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "last_delivery_at": "2019-08-24T14:15:22Z",
- "last_failure_at": "2019-08-24T14:15:22Z",
- "consecutive_failure_count": 0
}
}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.
| id required | string^whsub_[a-f0-9]{32}$ Example: whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c The public subscription id returned by |
| 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"
|
{- "events": [
- "autogeneration.completed"
], - "description": "string",
- "status": "active"
}{- "success": true,
- "data": {
- "id": "whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c",
- "secret_prefix": "whsec_",
- "events": [
- "autogeneration.completed",
- "autogeneration.failed"
], - "description": "Push completions into our deal-room worker.",
- "status": "active",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "last_delivery_at": "2019-08-24T14:15:22Z",
- "last_failure_at": "2019-08-24T14:15:22Z",
- "consecutive_failure_count": 0
}
}Soft-deletes the subscription. The id is permanently retired
— no future deliveries will be attempted, and the row is
excluded from list responses.
| id required | string^whsub_[a-f0-9]{32}$ Example: whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c The public subscription id returned by |
{- "success": true,
- "data": {
- "id": "whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c",
- "deleted": true
}
}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.
| id required | string^whsub_[a-f0-9]{32}$ Example: whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c The public subscription id returned by |
{- "success": true,
- "data": {
- "id": "whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c",
- "secret": "whsec_NewlyGeneratedSecretMaterial",
- "secret_prefix": "whsec_",
- "rotated_at": "2019-08-24T14:15:22Z"
}
}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.
| id required | string^whsub_[a-f0-9]{32}$ Example: whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c The public subscription id returned by |
{- "success": true,
- "data": {
- "subscription_id": "whsub_3f7a9b1c8d2e4f5a6b7c8d9e0f1a2b3c",
- "event": {
- "id": "evt_8c2a1f7e6d3b4a5c9e0f8d7b6a5c4d3e",
- "type": "autogeneration.completed",
- "api_version": "1.0",
- "created_at": "2019-08-24T14:15:22Z",
- "data": { }
}, - "delivery": {
- "ok": true,
- "status": 200,
- "error": "string",
- "response_body_preview": "string",
- "delivery_id": "string"
}
}
}Mint a short-lived, authenticated Server-Sent Events URL for a callback_id returned by generate or edit. The stream carries progress events and delivers the download URL on its terminal event. See the Streaming guide.
Exchange a callback_id from
generate or
edit for an authenticated Server-Sent
Events URL.
Open the returned stream_url with any SSE client — the token is
embedded in the URL, so no Authorization header is needed (and cannot
be sent by EventSource anyway). Every event on the stream has the same
shape, so one parser handles all of them:
event: status
data: {"status":"inprogress","message":"Analyzing the key elements","callback_id":"..."}
status is inprogress on every progress event, and on the terminal
event one of success, failed, or cancelled. A successful terminal
event adds a download_url. The stream closes after it.
The full event catalog, reconnection semantics, and client code samples are in the Streaming guide.
Short-lived. The URL expires at
expires_at(about 5 minutes). Open it promptly; mint a new one by calling this endpoint again — the stream replays from the start of the turn, so nothing is missed.
Download is different.
POST /api/v2/autogenerator/downloadreturns its ownstream_urland does not come through here.
| callback_id required |
{- "callback_id": "3f8e7d61-9a2b-4c5e-b013-7d4a6f2c8e91"
}{- "success": true,
- "data": {
- "callback_id": "3f8e7d61-9a2b-4c5e-b013-7d4a6f2c8e91",
- "expires_at": "2026-08-05T12:34:56.000Z"
}
}Connect third-party apps (Google Drive, Notion, …) to the caller's Prezent account so the generator can pull context from them. Connect once, then reference the app in a prompt.
Begin connecting a third-party app (Google Drive, Notion, …) to the
caller's Prezent account. Once connected, a generation can pull context
from that app by setting settings.enable_mcp_context to true on
POST /api/v2/generate.
The response has two shapes, depending on whether the app needs authorization:
| App | Response |
|---|---|
| Requires authorization (OAuth etc.) | An authorization URL for the user to open |
| Requires none | { "status": "connected" } — already done, nothing to visit |
For the first shape, send the user to the URL, let them authorize, then
confirm with
GET /api/v2/integrations/auth/status.
Which shape applies is a property of the app, not something you choose.
Branch on the presence of status: "connected".
The connection is made for the user who owns the API key. There is no parameter to connect an app on another user's behalf.
| mcp_id required | string Example: mcp_id=google-drive Identifier of the app to connect. |
Whether an app is currently connected for the caller. Use this after
sending a user through the authorization URL from
GET /api/v2/integrations/auth to
confirm the connection completed, and before a generation that depends
on the app.
| mcp_id required | string Example: mcp_id=google-drive Identifier of the app to check. |
{- "connected": false
}Returns a fixed greeting payload. Exists to allow clients to verify connectivity and credentials. Does not consult any downstream services.
{- "success": true,
- "data": {
- "message": "string"
}
}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.
| category | string Enum: "autogenerator" "scim" Component group to check. Omit for a generic liveness response. |
{- "message": "string",
- "status": "string",
- "data": {
- "message": "string",
- "category": "string",
- "services": [
- {
- "name": "string",
- "status": "string",
- "detail": "string"
}
], - "timestamp": "2019-08-24T14:15:22Z"
}
}