Nurama Developers
AI

Mint a Scratch upload bundle for an image-revision source frame.

Returns signed multipart upload URLs the client uses to upload a source image (a captured video frame — always JPEG) directly to storage BEFORE calling `POST /ai/revisions` with `source.scratchId`. The bytes never pass through the API. After uploading the parts, complete the upload via `POST /v1/scratch/{scratchId}/complete-upload`. Same checks as `POST /ai/revisions` minus the balance check (staging is free): `canAiGenerateImageRevision`, an active subscription, the `ai` capability and `aiImageRevisionEnabled`.

POST
/ai/revisions/source-upload

Returns signed multipart upload URLs the client uses to upload a source image (a captured video frame — always JPEG) directly to storage BEFORE calling POST /ai/revisions with source.scratchId. The bytes never pass through the API. After uploading the parts, complete the upload via POST /v1/scratch/{scratchId}/complete-upload.

Same checks as POST /ai/revisions minus the balance check (staging is free): canAiGenerateImageRevision, an active subscription, the ai capability and aiImageRevisionEnabled.

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/ai/revisions/source-upload" \  -H "Content-Type: application/json" \  -d '{    "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c",    "sizeInMB": 0  }'
{  "scratchId": "212cade5-f209-4c67-9dd0-8a68ab06d5be",  "key": "string",  "uploadId": "string",  "urls": [    "http://example.com"  ],  "expires": "2019-08-24T14:15:22Z"}