Agent Video: POST /agent/video
Generate an 8-second 720p video clip with native audio from a text prompt. One call costs $4.99 in USDC on Base.
What it is for
Short-form video, b-roll, product shots, music-video visuals, social clips and ads. The audio is generated from the scene, so write the sound into the prompt: instruments, voices, weather, movement. A silent scene renders near-silent by design.
At a glance
| Endpoint | POST https://app.suedeai.ai/agent/video |
|---|---|
| Price | $4.99, amount 4990000 USDC base units |
| Payment | x402 exact on eip155:8453 to 0x10FF767043A1723E0BB5B9207bC37D3442cC9E4F, or a Skyfire token |
| Output | An 8-second 720p clip with native audio |
| Paid response | 202 Accepted with jobId and pollUrl |
| Poll | GET https://app.suedeai.ai/agent/video/{jobId}, free |
| Identifiers | OpenAPI operationId, A2A skill and MCP tool: agent_video |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
prompt | string | Yes | Narrative or visual prompt that drives the video concept. |
durationSeconds | integer | No | Requested length in seconds. Default 8, minimum 3, maximum 15. The service maps it to a supported render length. |
aspectRatio | string | No | 16:9, 9:16 or 1:1. |
asyncMode | boolean | No | Switches asynchronous mode on, never off. Paid calls are already asynchronous. |
Example: a vertical social clip
Get the 402 challenge first (amount 4990000, priceUsd $4.99), sign it as shown in the quickstart, then send:
curl -i -X POST https://app.suedeai.ai/agent/video \
-H 'Content-Type: application/json' \
-H "PAYMENT-SIGNATURE: $PAYMENT" \
-H 'X-Idempotency-Key: vinyl-clip-0001' \
-d '{
"prompt": "Slow push-in on a spinning vinyl record, rain against the window, soft piano and the crackle of the needle",
"aspectRatio": "9:16"
}'
The prompt names its sounds (rain, piano, needle crackle) because the audio track is generated from what the scene describes.
Response to a paid call: 202 Accepted
The discovery document gives this example body:
{
"jobId": "video-job-example",
"status": "queued",
"provider": "suede",
"pollUrl": "https://app.suedeai.ai/agent/video/video-job-example"
}
With ?async=false the call blocks and answers 200 with the same body shape as the poll below, so one parser covers both paths. Renders take minutes and payment clients time out in about 30 seconds, so most callers should keep the default and poll.
Polling: GET /agent/video/{jobId}
Poll until status is completed, with videoUrl set, or failed. Both are final; queued and processing mean poll again.
| Field | Description |
|---|---|
jobId | The render's job identifier. |
status | queued, processing, completed or failed. |
provider | The provider handling the render. |
videoUrl | The generated video once complete; null until then. |
videoId | The Suede video record identifier, when available. |
pageUrl | The Suede share page, when available. |
pollUrl | Set on the 202 accept; null on a poll response. |
An unknown or expired jobId answers 200 with status failed, not 404. On 2026-10-11 that response also carried "error": "Generation failed. Please try again." and an etaSeconds field set to null.
Sources
- app.suedeai.ai/.well-known/x402: description, price, payment requirement, input schema and example output (resource entry last updated 2026-08-30).
- app.suedeai.ai/openapi.json: operations
agent_videoandagent_video_status. - Live requests on 2026-10-11: the unpaid 402 challenge and a poll for an unknown
jobId.