Yapper API
Api reference
DELETE
/sessions/{sessionId}/workspace/nodes

Removes an item from the tree; a folder goes with everything in it. Never deletes assets, and does not always take media out of the session: media that was only filed here from elsewhere leaves it (unlinkedAssetIds), while media created in the session, or that joined it another way such as being used in a generation, stays in it unfiled (unfiledAssetIds). To take media out of the session itself, use DELETE /sessions/{sessionId}/assets. Removing the brief clears it. The workspace root cannot be removed. Addresses the item by its path; /workspace/nodes/{nodeId} does the same by id. The change shows up in the Yapper web app and is recorded with the API key or MCP client that made it; the in-app Yapper agent in that session is told about it on its next turn. Free. Uses the processes:write scope.

Authorization

bearerAuth processes:write
AuthorizationBearer <token>

In: header

Scope: processes:write

Path Parameters

sessionId*string

Query Parameters

path*string

Absolute workspace path, such as /Characters/hero. Names match exactly first, then ignoring case.

Length1 <= length <= 4000

Header Parameters

Idempotency-Key?string

Optional key that makes the edit safe to retry: a retry with the same key and body replays instead of editing twice, and the same key with a different body returns idempotency_conflict. Scoped to the credential and session.

Length1 <= length <= 255

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/sessions/string/workspace/nodes?path=%2FCharacters%2Fhero"
{  "removed": true,  "id": "string",  "path": "string",  "unlinkedAssetIds": [    "string"  ],  "unfiledAssetIds": [    "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"  }}

Remove a workspace item DELETE

Removes an item from the tree; a folder goes with everything in it. Never deletes assets, and does not always take media out of the session: media that was only filed here from elsewhere leaves it (unlinkedAssetIds), while media created in the session, or that joined it another way such as being used in a generation, stays in it unfiled (unfiledAssetIds). To take media out of the session itself, use DELETE /sessions/{sessionId}/assets. Removing the brief clears it. The workspace root cannot be removed. The change shows up in the Yapper web app and is recorded with the API key or MCP client that made it; the in-app Yapper agent in that session is told about it on its next turn. Free. Uses the processes:write scope.

Run canvas cards POST

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.