Promoat / Partner API docs

Your account

Assets

Every output you generate — character sheets, first frames, TTS audio, finished videos — lands in one durable ledger with a stable URL. Lose a response? The asset is still here.

What lands here

kindProduced by
character_sheetPOST /characters
first_framePOST /images/first-frame, and video jobs that generate their own frame
tts_audioPOST /tts
videoCompleted video jobs (talking-head and multi-scene)

Asset URLs are public CDN links with unguessable paths — safe to hand straight to your own app or player, no extra auth step. They're long-lived; still, most partners copy finished videos into their own storage as part of their pipeline.

List assets

GET/api/partner/v1/assets
FieldTypeDescription
kindquery, enumFilter: character_sheet | first_frame | tts_audio | video.
limitquery, int ≤100Default 30.
offsetquery, intFor pagination, newest first.
Every video you've ever generated
curl "https://platform.promoat.ai/api/partner/v1/assets?kind=video&limit=10" \
  -H "Authorization: Bearer $PROMOAT_KEY"
Asset object
{
  "asset_id": "7f3f9a2c-…",
  "kind": "video",
  "url": "https://…/video.mp4",
  "workflow_id": "partner_scn_1783…",     // which job made it (null for sync outputs)
  "character_id": "0b2f1c3e-…",           // who's in it, when applicable
  "voice_id": null,
  "metadata": { … },
  "created_at": "2026-07-08T04:31:02.114Z"
}

The cross-references are the useful part: workflow_id ties an asset back to its job (and therefore its cost), character_id/voice_id tie it to the identity that made it.

Get one asset

GET/api/partner/v1/assets/{id}

Same object by asset_id — handy when a job's result gave you an id and you want the full record later.

Try it

Try itGET/api/partner/v1/assetsfree
Add your API key in the sidebar to enable this.