Reference

REST API

Every endpoint, every field. Projects are the resource.

Base URLhttps://api.trypitch.co
AuthAuthorization: Bearer pk_...
Content typeapplication/json
Create and prompt response202 Accepted with a project object

#The project object

Every endpoint that touches a project returns this shape.

FieldTypeNotes
idstringUse it to poll and to prompt
titlestringDerived from the prompt, URL, topic, or file name
statusstringworking, ready, failed, empty
busybooleanTrue while status is working
promptstringThe first message
optionsobjectCreation preferences
outputsarrayNewest first. kind (video, pdf, html, thumbnail), url, res?, label?, createdAt
thumbnailUrlstring | nullPoster frame for videos
shareUrlstring | nullOnly if sharing was turned on in the app
errorstring | nullSet when status is failed
scenesarray?Video flows. id, index, start, end, dur, label?, type?
slidesarray?Decks. index, title?
createdAtstringISO 8601
updatedAtstringISO 8601
scenes and slides are read from the live workspace and come back only on GET /v1/projects/:id, creation, and prompt responses, not on the list.

#POST /v1/projects

Create a project and send its first prompt. Work is usage-metered as it runs.

FieldTypeRequiredNotes
flow (deprecated)stringnoDeprecated compatibility hint. Accepted but ignored.
promptstringunless uploadsWhat to make: the product URL and brief, the topic, the instructions
optionsobjectnoFlow options, below
uploadsarrayno{ fileBase64, fileName } entries. See Files
namestringnoWorkspace slug, unique per user. Made from the title if omitted. No / or \, cannot start with a dot

Common outcome options

OutcomeBillingOptions
launch-videoMeteredresolution (720p, 1080p default, 4k; sets the price; every export is 60 fps), narration (default true; false saves 40 credits), music (track filename from the shared library)
demo-videoMeteredurl (also read from the prompt), instructions, script (your own narration), voice, background, shape, inset, browserHeader, fps (30 or 60; default the recording's own)
deckMeteredtopic, slideCount, headings, template, mode (recreate rebuilds an uploaded deck, preserve keeps its layout; setting it makes the project an enhance)
recording-editMeteredproductName (intro card), productUrl (outro card), instructions, fps (30 or 60; default the recording's own)
bash
curl -X POST https://api.trypitch.co/v1/projects \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "https://acme.com — 60 second launch film for an AI notetaker. Confident, fast.",
    "options": { "resolution": "1080p", "narration": true }
  }'
bash
curl -X POST https://api.trypitch.co/v1/projects \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Seed round deck for an AI video startup",
    "options": { "slideCount": 10 }
  }'

Returns 202 with the project. Fails with 402 if the balance is too low and413 or 415 for a bad upload.

#GET /v1/projects

List your projects, newest first. Free.

QueryNotes
limitDefault 50, max 100
json
{ "data": [ { "id": "cm4x...", "status": "ready", "outputs": [ ... ], ... } ], "total": 37 }

#GET /v1/projects/:id

One project, with scenes or slides. Returns 404 if it does not exist or is not yours. Free. This is what you poll.

#POST /v1/projects/:id/prompt

Send the agent a usage-metered follow-up. It works asynchronously; poll the project.

FieldTypeRequiredNotes
textstringyesWhat to change
scenestringnoA scene id from scenes, to scope the request
slidenumbernoA 1-based slide index, for decks
delivery"queue" | "steer"noQueue behind active work (default), or steer the active run
bash
curl -X POST https://api.trypitch.co/v1/projects/cm4x8k2p90001abcd/prompt \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "text": "Make slide 4 a two-column comparison.", "slide": 4 }'

Returns 202 with the project. If the agent is already working, the prompt queues behind it unless delivery: "steer" is provided.

#POST /v1/projects/:id/export

Start an export with optional res (720p, 1080p, or 4k). Returns 202 with export status. Poll GET on the same path until running is false.

#GET /v1/credits

Balance, plan, and the 20 most recent ledger entries. Free. See Credits.

#GET /v1/pricing

Usage-metering rates and indicative launch export tiers. No key needed. The payload is in Credits.

#Not there yet

There are no webhooks, so you have to poll. There are no idempotency keys, so a retried create can make a second project. There is no cursor pagination on the project list, only a limit. Stop, delete, and share are not exposed through the public API; exports are.