Yapper API
Api reference
POST
/processes

Starts a generation process and charges team credits. V1 types: image-generation, video-generation, audio-generation, image-upscale, video-upscale, video-lipsync. The model must match the type (see GET /models). For seedance-2.5-edit, the first referenceVideos item is the required base video; editOperation defaults to edit, while extend, sequel, and prequel allow an omitted prompt. On seedance-2.5 and seedance-2.5-edit, every 480p run is a draft by default (send draft: false for a plain 480p render; draft: true also sets resolution 480), and draftVideoId (a draft's output assetId) on seedance-2.5 finishes that same shot at native 1080p within 7 days, edit drafts included; send it alone, since every other input comes from the draft. video-lipsync takes sourceVideoAssetId and audioAssetId from the team asset library; the server-measured audio duration determines its quote and charge. Sync-Max is train-once: omit trainingId on the first run, then reuse the trainingId returned on the process for faster later runs against the same trained source. Sync-Pro and Sync-v3 are single-shot and require no training. Always send an Idempotency-Key: retries with the same key and body return the original process instead of double-charging; the same key with a different body returns idempotency_conflict. input is validated per process type AND against the model's published capabilities (aspectRatios, resolutions, videoLengths from GET /models) — unsupported values are rejected with invalid_request, never silently coerced. Internal fields (batchId, filteringId, agent context) are ignored; pass sessionId instead to group the process and its outputs in a session (see /sessions), plus workspaceFolderId to file the outputs into a folder of that session's workspace as they finish. metadata (flat string/number/boolean/null values, max 16 keys) is echoed back on reads. webhookSecret is optional for legacy unsigned webhook delivery; when supplied with webhookUrl, notifications are HMAC-signed and may be attempted twice with a stable delivery id.

Authorization

bearerAuth processes:write
AuthorizationBearer <token>

In: header

Scope: processes:write

Header Parameters

Idempotency-Key?string

Stable caller-provided key for retry-safe process creation.

Length1 <= length <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/processes" \  -H "Content-Type: application/json" \  -d '{    "type": "image-generation",    "model": "gpt-image-2",    "input": {      "prompt": "A polished product photo of a stainless steel water bottle",      "aspectRatio": "1:1",      "imageResolution": "1080"    },    "metadata": {      "externalId": "job_123",      "customerUserId": "user_456"    }  }'
{  "dryRun": true,  "type": "string",  "model": "string",  "creditsEstimated": 0,  "canStart": true,  "blockedBy": "team_limit",  "fundingSource": "gimi_wallet",  "externalWallet": {    "provider": "gimi",    "requiredCents": 0,    "spendableCents": 0  },  "gimiWallet": {    "requiredCents": 0,    "spendableCents": 0  },  "credits": {    "available": 0,    "purchaseUrl": "string"  },  "estimatedCompletionSeconds": 0}
{  "id": "string",  "type": "string",  "status": "queued",  "model": "string",  "trainingId": "string",  "draft": {    "finishableUntil": "2019-08-24T14:15:22Z"  },  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "completedAt": "2019-08-24T14:15:22Z",  "estimatedCompletionSeconds": 0,  "suggestedPollAfterSeconds": 0,  "creditsEstimated": 0,  "creditsUsed": 0,  "refunded": true,  "error": {    "code": "string",    "message": "string"  },  "input": {},  "outputs": [    {      "type": "image",      "assetId": "string",      "url": "http://example.com",      "thumbnailUrl": "http://example.com",      "preview": {        "url": "http://example.com",        "width": 0,        "height": 0,        "mimeType": "string"      },      "width": 0,      "height": 0,      "duration": 0,      "mimeType": "string"    }  ],  "metadata": {    "property1": "string",    "property2": "string"  },  "sessionId": "string",  "links": {    "self": "string"  }}
{  "error": {    "code": "string",    "message": "string",    "requestId": "string"  }}
{  "error": {    "code": "string",    "message": "string",    "requestId": "string"  }}
{  "error": {    "code": "string",    "message": "string",    "requestId": "string"  }}
{  "error": {    "code": "string",    "message": "string",    "requestId": "string"  }}
{  "error": {    "code": "string",    "message": "string",    "requestId": "string"  }}