Yapper API
Api reference
POST
/sessions/{sessionId}/canvas/runs

Runs generation cards (image-gen, video-gen, text-gen) in wiring order and charges team credits as each card starts. A card starts once the cards feeding it have finished and reads their selected output; a card fed by one that is still generating waits for it. scope selection (default) runs exactly nodeIds; downstream also runs every card they feed. Omit nodeIds to run every generation card. Each card gets a new version that holds this run's settings, so editing a card while it waits does not change what it makes. The run continues on the server with no client connected; poll GET /canvas/runs/{runId}. dryRun: true quotes the run (creditsEstimated per card and canStart) without starting or charging anything. The balance must cover the estimate up front (insufficient_credits otherwise); LLM cards on an included model draw from Included Agent Usage first. Always send an Idempotency-Key on real runs. Uses the processes:write scope.

Authorization

bearerAuth processes:write
AuthorizationBearer <token>

In: header

Scope: processes:write

Path Parameters

sessionId*string

Header Parameters

Idempotency-Key?string

Optional key that makes the request safe to retry: a retry with the same key returns the run the first request started instead of charging again. Scoped to the credential and session.

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

application/json

curl -X POST "https://example.com/sessions/string/canvas/runs" \  -H "Content-Type: application/json" \  -d '{}'
{  "dryRun": true,  "creditsEstimated": 0,  "canStart": true,  "reason": "string",  "nodes": [    {      "nodeId": "string",      "step": 0,      "kind": "string",      "label": "string",      "creditsEstimated": 0    }  ]}
{  "id": "string",  "status": "running",  "scope": "selection",  "startNodeIds": [    "string"  ],  "creditsEstimated": 0,  "createdAt": "2019-08-24T14:15:22Z",  "finishedAt": "2019-08-24T14:15:22Z",  "endedReason": "string",  "suggestedPollAfterSeconds": 0,  "nodes": [    {      "nodeId": "string",      "step": 0,      "kind": "string",      "label": "string",      "state": "pending",      "reason": "needsPrompt",      "detail": "string",      "processIds": [        "string"      ],      "outputs": [        {          "assetId": "string",          "type": "image",          "url": "string",          "thumbnailUrl": "string",          "width": 0,          "height": 0,          "duration": 0,          "name": "string"        }      ],      "texts": [        "string"      ],      "errors": [        "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"  }}
{  "error": {    "code": "string",    "message": "string",    "requestId": "string"  }}