Start here
What's new in 1.3
Credits now come from a weekly or monthly plan, at the Promoat app's prices, on the dashboard. Below that, the 1.1 tour: sharper videos for less, scene-by-scene editing, studio voices, safe retries and a code on every error. Each card opens the full guide.
Plans, new in 1.3
Requests and responses are unchanged. What changed is how you buy credits: a plan adds them every week or month, and the balance you already have is kept.
Longer scene_prompt and Fix a scene description (2,000 characters), the real error_codeon failed jobs, and talking heads that keep the photo's outfit and place in every clip. Nothing to change in your requests. Changelog
Videos
Edit a finished video
Every edit makes a new video and leaves the original untouched.
dry_run + expected_credits.POST /videos/{id}/fix-soundVoices, speech and characters
language hint, and the characters billed.POST /ttsCharactersGender and head covering on every character, kept consistent in video.POST /charactersRegenerate a characterA new sheet for the same person, with an optional tweak.POST /characters/{id}/regenerateRetries, prices and errors
error, error_code and message (all endpoints since 1.1.1).{ error, error_code, message }WarningsA successful call tells you what it adjusted, instead of failing.warnings[{ field, code, message }]PricingPer-second video rates by resolution, every line explained.price_table_version 2026-10-11Not enough creditsA 402 says what the call needs and what you have. Nothing is charged.402 INSUFFICIENT_CREDITSUpgrade in four changes
Existing requests keep working. To get the most out of 1.1 and later:
- Quote first, then lock it.
POST /videos/estimatewith your body, then sendexpected_creditsonPOST /videos. - Send an
Idempotency-Keyon every video call, so a timeout is safe to retry. - Branch on
error_code, not on theerrortext. - Show
phaseandprogressfrom the status endpoint, and theposter_urlonce it appears.
curl -X POST https://platform.promoat.ai/api/partner/v1/videos \
-H "Authorization: Bearer $PROMOAT_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-4812-video-1" \
-d '{
"mode": "talking_head",
"character_id": "CHARACTER_ID",
"audio_url": "https://your-cdn.com/audio/15-second-take.mp3",
"video_idea": "standing in a bright modern kitchen, smiling at the camera",
"resolution": "768P",
"expected_credits": 30
}'
# 200 → { "workflow_id": "partner_h3t_…", "status": "queued", "credits_reserved": 30,
# "price_table_version": "2026-10-11", "warnings": [], "duplicate": false }
# 409 → { "error": "QUOTE_MISMATCH", "error_code": "QUOTE_MISMATCH", "code": "quote_mismatch",
# "credits_quoted": … }
curl https://platform.promoat.ai/api/partner/v1/jobs/partner_h3t_…/status -H "Authorization: Bearer $PROMOAT_KEY"
# → { "status": "running", "phase": "generating", "progress": 40, "poster_url": null, … }Prices at a glance
| What | Credits |
|---|---|
| Video, 30 s (talking head or scenes, any resolution) | 44 |
| Video, 60 s (talking head or scenes, any resolution) | 73 |
| 15 s talking head, 768P, your audio | 30 |
| 15 s scene video, 768P, 2 scene photos | 30 |
| Character (create) | free |
| Character regenerate, first frame | 4 |
| Voice clone (first / later) | free / 30 |
| Studio voice, estimate, scene plan, scenes view | free |
Full table and worked examples in Credits & pricing; every detail of the release in the changelog.