API reference

This page is a human-readable route map for the Sume Developer API. This page is not a second schema. For exact JSON request/response shapes, enums, and field requirements, use the live OpenAPI document. The Markdown tables on this page can be older than the live document.

OpenAPI schema

Local docs snapshot:

Live schema (source of truth for this docs snapshot):

Download the schema:

Refresh the checked-in snapshot locally:

Authentication

You must send a Sume API key to all /v1 API endpoints, except these public routes: GET /v1/health, GET /v1/catalog, GET /v1/openapi.json, GET /v1/bgm/catalog, GET /v1/bgm/categories, and POST /v1/bgm/pick.

The API also accepts x-api-key: $SUME_API_KEY. API responses do not return the full secret key.

Account, catalog, and usage

MethodPathNotes
GET/v1/healthVersioned API health.
GET/v1/catalogAvailable capabilities, endpoints, runtime readiness, models, and pricing metadata.
GET/v1/meCurrent API key, owner, and workspace context.
GET/v1/balanceThe available balance in USD.
GET/v1/usageUsage ledger entries such as reservations, captures, refunds, and top-ups.

Jobs

MethodPathNotes
GET/v1/jobsList workspace jobs. You can filter by status/type.
GET/v1/jobs/:idRead the public job envelope.
GET/v1/jobs/:id/statusLightweight status read for polling.
GET/v1/jobs/:id/resultCompleted result payload. It includes public artifact URLs when they are available.
POST/v1/jobs/:id/cancelCancel a job before generation starts. After generation starts, the endpoint returns 409 job_generation_already_started. Idempotent on an already-canceled job.
GET/v1/jobs/:id/eventsPublic timeline events. Use them to debug and to recover jobs.

Terminal job statuses are completed, failed, and canceled. Non-terminal statuses are queued and processing.

Media inputs

Generation requests accept fetchable public HTTPS media URLs directly in the fields that the live OpenAPI schema documents (for example Avatar photo input.image_url, Avatar Video product_image / scene.image_url).

The API rejects localhost, private-network, non-HTTPS, and non-image responses before it submits the generation. First-party upload helpers are not the default public API path for normal integrations (refer to Hidden from public OpenAPI).

Canonical generation paths

For new integrations, these product-style endpoints are the best choice.

MethodPathFamilyNotes
POST/v1/avatar-1.0/generateAvatar 1.0Canonical avatar create.
POST/v1/avatar-1.0/talking-videoAvatar 1.0Canonical talking-video create.
GET/v1/avatar-1.0/avatarsAvatar 1.0List Avatar 1.0 avatars.
GET/v1/avatar-1.0/avatars/:idAvatar 1.0Read one Avatar 1.0 avatar.
POST/v1/image-1.0/generateImage 1.0Canonical image generate.
POST/v1/video-1.0/generateVideo 1.0Canonical video generate.
POST/v1/music-1.0/generateMusic 1.0Canonical music generate.

Compatibility model-run aliases

These /v1/models/sume/.../runs paths stay in the public OpenAPI and continue to work. When both exist, the canonical paths above are the better choice.

MethodPathPublic modelNotes
POST/v1/models/sume/avatar/v1.0/runssume/avatar/v1.0Legacy Avatar 1.0 create.
POST/v1/models/sume/avatar-1.0/generate/runssume/avatar-1.0/generateAlias of Avatar 1.0 generate.
POST/v1/models/sume/avatar-1.0/talking-video/runssume/avatar-1.0/talking-videoAlias of Avatar 1.0 talking video.
POST/v1/models/sume/avatar-video/v1.0/runssume/avatar-video/v1.0Legacy Avatar Video 1.0 create.
POST/v1/models/sume/avatar-face-swap/v1.0/runssume/avatar-face-swap/v1.0Avatar Face Swap 1.0 Beta.
POST/v1/models/sume/image-1.0/runssume/image-1.0Alias of Image 1.0 generate.
POST/v1/models/sume/video-1.0/runssume/video-1.0Alias of Video 1.0 generate.
POST/v1/models/sume/music-1.0/runssume/music-1.0Alias of Music 1.0 generate.

Where the OpenAPI schema documents them, submit endpoints support the common communication fields mode, webhook_url, and wait_timeout_seconds.

Avatar creation uses a top-level avatar_handle and an input union: prompt, props, or photo. Avatar Video uses a top-level avatar_handle and exactly one of script or video_inputs. Avatar Video accepts quality: "standard" | "plus" | "max". The default is plus.

Deep guides: Avatar overview, previews, face swap, captions, trending.

MethodPathNotes
GET/v1/avatarsList avatar resources (compatibility list path).
GET/v1/avatars/:idRead one avatar resource.
GET/v1/avatar-videosList avatar-video resources.
GET/v1/avatar-videos/:idRead one avatar-video resource.
POST/v1/avatar-catalog/searchSearch the avatar catalog.
POST/v1/avatar-video-previewsCreate an avatar-video preview.
GET/v1/avatar-video-previews/:idRead a preview.
POST/v1/avatar-video-previews/:id/regenerateRegenerate a preview.
POST/v1/avatar-video-previews/:id/generate-videoGenerate a video from a preview.
POST/v1/video-captionsSubmit a video caption job.
GET/v1/video-captions/:idRead a video caption resource.
POST/v1/trending-videos/searchSearch TikTok trending video metadata.

For terminal event payloads, signature headers, and retry behavior, refer to Webhooks.

Actions

Agents Actions have their own run resource and status vocabulary. Actions are not jobs, and they do not show in /v1/jobs. The key must have actions:read for all routes, except the two writes. For the two writes, the key must have actions:write.

MethodPathNotes
GET/v1/actionsList Actions. Filters: limit, status, trigger_type.
GET/v1/actions/:action_idRead one Action.
GET/v1/actions/:action_id/runsList runs for an Action.
POST/v1/actions/:action_id/runsStart a run through the API-call trigger. actions:write is necessary.
GET/v1/actions/:action_id/runs/:run_idRead one run. This path is an alias under its Action.
GET/v1/action-runs/:run_idRead a run receipt.
GET/v1/action-runs/:run_id/statusTrimmed status payload for polling.
GET/v1/action-runs/:run_id/resultTerminal receipt. Returns 409 run_not_completed while the run is in progress.
POST/v1/action-runs/:run_id/cancelIdempotent cancel. actions:write is necessary.

There is no public endpoint to create, edit, or delete an Action. There is also no /v1/action-runs/:run_id/events endpoint. The events_url field on run receipts is always null. For the request body, idempotency rules, and the full error table, refer to Advanced: run a schedule via API.

Formats

Formats have their own run resource, parallel to Actions. The key must have formats:read for all routes, except the writes (create a run, create a bulk-run queue, cancel). For the writes, the key must have formats:write.

MethodPathNotes
GET/v1/formatsList the Formats that the key can see: your own Formats and the first-party catalog. limit filter.
GET/v1/formats/:format_idRead one Format. The endpoint does not return the SKILL.md body.
GET/v1/formats/:format_id/runsList runs for a Format, newest first.
POST/v1/formats/:format_id/runsStart a run through the API-call trigger. formats:write is necessary.
POST/v1/formats/:format_id/bulk-runsQueue a maximum of 100 runs with a concurrency window (1–16). formats:write is necessary. 202 queue receipt.
GET/v1/formats/:handle/:slugRead a Format that you own, by handle and slug.
GET/v1/formats/:handle/:slug/runsList runs, addressed by handle and slug.
POST/v1/formats/:handle/:slug/runsStart a run, addressed by handle and slug. formats:write is necessary.
POST/v1/formats/:handle/:slug/bulk-runsSame bulk queue, addressed by handle and slug. formats:write is necessary.
GET/v1/format-run-queues/:queue_idBulk-queue progress (counts + per-item status). formats:read is necessary.
GET/v1/format-runs/:run_idRead a run receipt.
GET/v1/format-runs/:run_id/statusTrimmed status payload for polling.
GET/v1/format-runs/:run_id/resultTerminal receipt. Returns 409 run_not_completed while the run is in progress.
GET/v1/format-runs/:run_id/eventsPhase timeline for one run, oldest first.
POST/v1/format-runs/:run_id/cancelIdempotent cancel. formats:write is necessary.
POST/v1/format-runs/:run_id/webhook/redeliverRe-POST the terminal format.run.terminal receipt to the webhook URL of the run. formats:write is necessary.

To author a Format, use the Agents dashboard. You can also use the Contents API to create and edit the package of a Format. Any valid key can call the curated Formats by Sume directly at sume/{slug}. Sume bills the run to that key.

For the request body and the full error table, refer to Calling a Format. For the queue contract, refer to Bulk runs. For polling and receipts, refer to Runs and results. For format.run.terminal delivery, refer to Run webhooks (not generation-job Webhooks). For schema rules, refer to Structured output. For ready-made Formats, refer to the Format catalog.

Agent Completions

An Agent Completion runs the Agent on an ad-hoc prompt with nothing saved. For reads, the key must have agent_completions:read. For the two writes, the key must have agent_completions:write.

MethodPathNotes
POST/v1/agent/completionsStart a completion. Async only. Returns 202 and a receipt, not choices[].
GET/v1/agent-runsList completions, newest first.
GET/v1/agent-runs/:run_idRead a run receipt.
GET/v1/agent-runs/:run_id/statusTrimmed status payload for polling.
GET/v1/agent-runs/:run_id/resultTerminal receipt. Returns 409 run_not_completed while the run is in progress.
POST/v1/agent-runs/:run_id/cancelIdempotent cancel.

For the request shape and the differences from an OpenAI chat completion, refer to Agent Completions.

Hidden from public OpenAPI

The API implements some routes, but intentionally does not include them in the public OpenAPI document (hidePreLaunchCompatibilityOpenApiPaths). Do not use these routes as a documented public contract until they are in https://api.sume.com/reference/json again.

Hidden path familyStatus
/v1/assets, /v1/assets/upload-url, /v1/assets/:id, /v1/assets/:id/complete, /v1/assets/:id/download-urlImplemented. Hidden from public OpenAPI. In generation requests, it is better to use public HTTPS media URLs.
/v1/generation/admission-previewImplemented. Hidden from public OpenAPI. Generation admission describes the admission behavior for paid jobs.
POST /v1/avatars, POST /v1/avatar-videosCreate through POST on these resource paths is hidden. Use the canonical / model-run submit endpoints.
/health (unversioned)Hidden. Use GET /v1/health.
/v1/models/{model_owner}/{model_name}/{model_version}/runsThe generic template path is hidden. Use the concrete model paths that the tables above list.

Related asset-library workflow notes can still describe URL-first inputs when OpenAPI does not list the upload helpers.

Result and artifact shape

Completed jobs can include public artifacts:

Public results must use media.sume.com URLs. Raw provider URLs and provider task URLs are not part of the public result contract.

Error envelope

Errors use a consistent envelope. The request id is inside error.

Keep the request id for support. Redact API keys, signed URLs, private media URLs, user ids, workspace ids, and raw provider identifiers from logs.