{"openapi":"3.1.0","info":{"title":"inker API","version":"1.0.0","description":"Generate images, video, audio and 3D with the models of inker.si, paid with your coins. Authenticate with an API key (`Authorization: Bearer inker_live_…`) created on your account page. Scopes: `generate`, `read`, `uploads`, `account`. Rate limits: 120 requests per 60 s per key and 300 per 60 s per account. Errors are RFC 9457 problem details (`application/problem+json`) with a stable `code`. v1 only changes additively.","contact":{"url":"https://inker.si/developers"}},"servers":[{"url":"https://api.inker.si","description":"Production"}],"tags":[{"name":"Models","description":"What you can run and what it costs."},{"name":"Generations","description":"Quote, start, follow and cancel generations."},{"name":"Files","description":"Input uploads and output files."},{"name":"Account","description":"Balance and limits."},{"name":"Webhooks","description":"Events sent to your endpoints."}],"security":[{"ApiKey":[]}],"paths":{"/v1/models":{"get":{"operationId":"listModels","summary":"List models","description":"Every model open to the API right now, in display order: task type, params with their enum values and ranges, defaults, input limits and `priceFromCoins` (the coins of a request that sets only the prompt). Send only the params you want to set: omitted params take the model default. Public, cached for a minute.","tags":["Models"],"security":[],"responses":{"200":{"description":"The catalog.","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicModelsResponse"}}}}}}},"/v1/effects":{"get":{"operationId":"listEffects","summary":"List effects","description":"Style filters and templates. Run one by quoting and submitting with its `modelId` and `effectId`; `params` then hold the effect input (`images` or `video`, and an optional `prompt` direction). Public.","tags":["Models"],"security":[],"responses":{"200":{"description":"The effects.","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EffectsResponse"}}}}}}},"/v1/quotes":{"post":{"operationId":"createQuote","summary":"Quote a generation","description":"Prices a request exactly as a submit would. The `quoteToken` (valid 10 minutes) reserves exactly `coins` when you submit with it; after it expires the submit is accepted only at the same price (else `price_changed`).","tags":["Generations"],"security":[{"ApiKey":[]}],"x-inker-scope":"generate","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRequest"}}}},"responses":{"200":{"description":"The price.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/generations":{"post":{"operationId":"createGeneration","summary":"Start a generation","description":"Holds the coins and queues the generation. Send exactly one of `quoteToken` (charge exactly the quoted coins) or `maxCoins` (charge the current price, refused with `max_coins_exceeded` above it): you are never charged more than either. The `Idempotency-Key` header is required: repeating a key with the same body returns the original generation (200); the same key with another body is `idempotency_conflict` (409). Failed generations are refunded in full; partial results are charged per delivered output.","tags":["Generations"],"security":[{"ApiKey":[]}],"x-inker-scope":"generate","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGenerationRequest"}}}},"responses":{"200":{"description":"A replay of an earlier request with the same key.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Generation"}}}},"201":{"description":"Created and queued.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Generation"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}},"get":{"operationId":"listGenerations","summary":"List generations","description":"Your generations, newest first, with cursor pagination: pass `nextCursor` back as `cursor` until it is null.","tags":["Generations"],"security":[{"ApiKey":[]}],"x-inker-scope":"read","parameters":[{"name":"cursor","in":"query","required":false,"description":"`nextCursor` of the previous page.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["queued","processing","succeeded","failed","canceled"]}},{"name":"modality","in":"query","required":false,"schema":{"type":"string","enum":["image","video","audio","3d"]}},{"name":"workspace","in":"query","required":false,"schema":{"type":"string","enum":["image","video","audio","3d","tools"]}},{"name":"modelId","in":"query","required":false,"schema":{"type":"string"}},{"name":"active","in":"query","required":false,"description":"Only generations that are still queued or processing.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"One page.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/generations/{id}":{"get":{"operationId":"getGeneration","summary":"Get a generation","description":"Status (`queued`, `processing`, `succeeded`, `failed`, `canceled`), progress, coins and outputs. Output URLs are signed and short-lived: read the generation again for fresh ones. Prefer webhooks to polling; poll no faster than every 2 seconds.","tags":["Generations"],"security":[{"ApiKey":[]}],"x-inker-scope":"read","parameters":[{"name":"id","in":"path","required":true,"description":"The generation id.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The generation.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Generation"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/generations/{id}/cancel":{"post":{"operationId":"cancelGeneration","summary":"Cancel a queued generation","description":"Free, and only while the generation is still queued (not yet sent for processing); the held coins are released. Otherwise `not_cancelable` (409).","tags":["Generations"],"security":[{"ApiKey":[]}],"x-inker-scope":"generate","parameters":[{"name":"id","in":"path","required":true,"description":"The generation id.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Canceled.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Generation"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/generations/concurrency":{"get":{"operationId":"getConcurrency","summary":"Running-generation limit","description":"How many generations run at once for you, and how many run or wait now. Generations over the limit wait in the queue.","tags":["Account"],"security":[{"ApiKey":[]}],"x-inker-scope":"read","responses":{"200":{"description":"The limit.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Concurrency"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/uploads":{"post":{"operationId":"createUpload","summary":"Upload an input file","description":"One image (PNG, JPEG, WebP ≤ 20 MB, ≤ 8192 px), audio file (MP3, WAV, M4A, OGG ≤ 50 MB, ≤ 10 min) or video (MP4, WebM, MOV ≤ 200 MB, ≤ 60 s, ≤ 4096 px) as `multipart/form-data` in the field `file`. Use the returned `id` in a media param (`image`, `images`, `first_frame`, `audio`, `video`…). Uploads are deleted after 30 days.","tags":["Files"],"security":[{"ApiKey":[]}],"x-inker-scope":"uploads","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","description":"One of image/png, image/jpeg, image/webp, audio/mpeg, audio/wav, audio/mp4, audio/ogg, video/mp4, video/webm, video/quicktime."}}}}}},"responses":{"201":{"description":"Stored.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/assets/{id}":{"get":{"operationId":"getAsset","summary":"Get a file","description":"An output or upload with freshly signed, short-lived download URLs (about an hour).","tags":["Files"],"security":[{"ApiKey":[]}],"x-inker-scope":"read","parameters":[{"name":"id","in":"path","required":true,"description":"The asset id.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The file.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Asset"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/account":{"get":{"operationId":"getAccount","summary":"Balance and limits","description":"Your coin balance, running-generation limit, rate limits and the calling key with its monthly spend.","tags":["Account"],"security":[{"ApiKey":[]}],"x-inker-scope":"account","responses":{"200":{"description":"The account.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAccount"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}}},"webhooks":{"generation.succeeded":{"post":{"operationId":"webhook_generation_succeeded","summary":"generation.succeeded","description":"Sent to your endpoint when a generation ends this way. Verify `Inker-Signature` (`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`), refuse a `t` more than 300 s off, dedupe on `Inker-Event-Id` and answer 2xx within 10 s. Failed deliveries are retried for about a day.","tags":["Webhooks"],"parameters":[{"name":"Inker-Signature","in":"header","required":true,"schema":{"type":"string"}},{"name":"Inker-Event-Id","in":"header","required":true,"schema":{"type":"string"}},{"name":"Inker-Event-Type","in":"header","required":true,"schema":{"type":"string","enum":["generation.succeeded","generation.failed","generation.canceled"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received (any 2xx)."}}}},"generation.failed":{"post":{"operationId":"webhook_generation_failed","summary":"generation.failed","description":"Sent to your endpoint when a generation ends this way. Verify `Inker-Signature` (`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`), refuse a `t` more than 300 s off, dedupe on `Inker-Event-Id` and answer 2xx within 10 s. Failed deliveries are retried for about a day.","tags":["Webhooks"],"parameters":[{"name":"Inker-Signature","in":"header","required":true,"schema":{"type":"string"}},{"name":"Inker-Event-Id","in":"header","required":true,"schema":{"type":"string"}},{"name":"Inker-Event-Type","in":"header","required":true,"schema":{"type":"string","enum":["generation.succeeded","generation.failed","generation.canceled"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received (any 2xx)."}}}},"generation.canceled":{"post":{"operationId":"webhook_generation_canceled","summary":"generation.canceled","description":"Sent to your endpoint when a generation ends this way. Verify `Inker-Signature` (`t=<unix>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>`), refuse a `t` more than 300 s off, dedupe on `Inker-Event-Id` and answer 2xx within 10 s. Failed deliveries are retried for about a day.","tags":["Webhooks"],"parameters":[{"name":"Inker-Signature","in":"header","required":true,"schema":{"type":"string"}},{"name":"Inker-Event-Id","in":"header","required":true,"schema":{"type":"string"}},{"name":"Inker-Event-Type","in":"header","required":true,"schema":{"type":"string","enum":["generation.succeeded","generation.failed","generation.canceled"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received (any 2xx)."}}}}},"components":{"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"inker_live_…","description":"An API key from your account page. Keep it server-side."}},"schemas":{"Asset":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"kind":{"type":"string","enum":["image","video","audio","3d","text"]},"url":{"type":"string","minLength":1},"thumbnailUrl":{"type":"string","minLength":1},"posterUrl":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"mimeType":{"type":"string","minLength":1},"width":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"durationSeconds":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}]},"waveformUrl":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"transparent":{"type":"boolean"},"downloads":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string","enum":["obj","fbx","usdz","stl"]},"url":{"type":"string","minLength":1},"bytes":{"type":"integer","exclusiveMinimum":0}},"required":["format","url","bytes"]}},"stem":{"anyOf":[{"type":"string","enum":["vocals","drums","bass","other"]},{"type":"null"}]},"subtitles":{"anyOf":[{"type":"object","properties":{"srtUrl":{"type":"string","minLength":1},"vttUrl":{"type":"string","minLength":1}},"required":["srtUrl","vttUrl"]},{"type":"null"}]}},"required":["id","kind","url","thumbnailUrl","posterUrl","mimeType","width","height","durationSeconds"]},"Generation":{"type":"object","properties":{"id":{"type":"string","minLength":1},"modelId":{"type":"string","minLength":1},"modelName":{"type":"string","minLength":1},"taskType":{"type":"string","enum":["image.generate","image.edit","video.generate","video.animate","image.upscale","image.remove-bg","image.inpaint","image.outpaint","image.relight","image.vectorize","image.restore","image.effect","video.v2v","video.extend","video.upscale","video.interpolate","video.remove-bg","video.add-audio","video.lipsync","video.effect","video.reframe","audio.tts","audio.music","audio.sfx","audio.voice-change","audio.isolate","audio.stt","3d.from-text","3d.from-image","image.erase","image.reframe","image.sketch","image.restyle","image.colorize","image.retouch","image.product-shot","image.replace-bg","image.try-on"]},"modality":{"type":"string","enum":["image","video","audio","3d"]},"workspace":{"type":"string","enum":["image","video","audio","3d","tools"]},"effect":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"text":{"type":["string","null"]}},"required":["id","text"]},{"type":"null"}]},"status":{"type":"string","enum":["queued","processing","succeeded","failed","canceled"]},"progress":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"queuePosition":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"params":{"type":"object","propertyNames":{"type":"string","enum":["prompt","negative_prompt","aspect_ratio","resolution","duration","num_outputs","seed","images","image","first_frame","last_frame","generate_audio","upscale_factor","mask","expand_left","expand_right","expand_top","expand_bottom","video","audio","fps","effect","text","voice","language","speed","lyrics","style","instrumental","stem","polycount","texture","format","garment","lighting","light_direction","palette","pbr","quad","geometry_quality","texture_quality"]},"additionalProperties":{"anyOf":[{"type":["string","number","boolean"]},{"type":"array","items":{"type":"string"}}]}},"coinsQuoted":{"type":"integer","exclusiveMinimum":0},"coinsCharged":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"outputs":{"type":"array","items":{"$ref":"#/components/schemas/Asset"}},"outputsRequested":{"type":"integer","exclusiveMinimum":0},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","enum":["content_policy","invalid_input","unavailable","timeout","internal"]}},"required":["code"]},{"type":"null"}]},"projectId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","modelId","modelName","taskType","modality","workspace","effect","status","progress","queuePosition","params","coinsQuoted","coinsCharged","outputs","outputsRequested","error","projectId","createdAt","startedAt","completedAt"]},"GenerationPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Generation"}},"nextCursor":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["items","nextCursor"]},"QuoteResponse":{"type":"object","properties":{"modelId":{"type":"string","minLength":1},"coins":{"type":"integer","exclusiveMinimum":0},"coinsPerOutput":{"type":"integer","exclusiveMinimum":0},"outputs":{"type":"integer","exclusiveMinimum":0},"quoteToken":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"expiresAt":{"type":"string","format":"date-time"},"availableCoins":{"type":"integer","minimum":0}},"required":["modelId","coins","coinsPerOutput","outputs","quoteToken","expiresAt","availableCoins"]},"Concurrency":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":0},"raisedLimit":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"running":{"type":"integer","minimum":0},"queued":{"type":"integer","minimum":0}},"required":["limit","raisedLimit","running","queued"]},"PublicModelsResponse":{"type":"object","properties":{"models":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"listingId":{"type":"string","minLength":1},"taskType":{"type":"string","enum":["image.generate","image.edit","video.generate","video.animate","image.upscale","image.remove-bg","image.inpaint","image.outpaint","image.relight","image.vectorize","image.restore","image.effect","video.v2v","video.extend","video.upscale","video.interpolate","video.remove-bg","video.add-audio","video.lipsync","video.effect","video.reframe","audio.tts","audio.music","audio.sfx","audio.voice-change","audio.isolate","audio.stt","3d.from-text","3d.from-image","image.erase","image.reframe","image.sketch","image.restyle","image.colorize","image.retouch","image.product-shot","image.replace-bg","image.try-on"]},"modality":{"type":"string","enum":["image","video","audio","3d"]},"workspace":{"type":"string","enum":["image","video","audio","3d","tools"]},"vendor":{"type":"string","minLength":1},"displayName":{"type":"string","minLength":1},"params":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","enum":["prompt","negative_prompt","aspect_ratio","resolution","duration","num_outputs","seed","images","image","first_frame","last_frame","generate_audio","upscale_factor","mask","expand_left","expand_right","expand_top","expand_bottom","video","audio","fps","effect","text","voice","language","speed","lyrics","style","instrumental","stem","polycount","texture","format","garment","lighting","light_direction","palette","pbr","quad","geometry_quality","texture_quality"]},"required":{"type":"boolean"},"ui":{"type":"object","properties":{"control":{"type":"string","enum":["prompt","textarea","aspect","segmented","select","switch","seed","image","images","script","lyrics","tags","voice","language","slider","audio","video","mask","expand","effect"]},"group":{"type":"string","enum":["prompt","inputs","basic","advanced"]},"order":{"type":"integer"}},"required":["control","group","order"]},"kind":{"type":"string","const":"text"},"maxLength":{"type":"integer","exclusiveMinimum":0},"minLength":{"type":"integer","exclusiveMinimum":0}},"required":["name","required","ui","kind","maxLength"]},{"type":"object","properties":{"name":{"type":"string","enum":["prompt","negative_prompt","aspect_ratio","resolution","duration","num_outputs","seed","images","image","first_frame","last_frame","generate_audio","upscale_factor","mask","expand_left","expand_right","expand_top","expand_bottom","video","audio","fps","effect","text","voice","language","speed","lyrics","style","instrumental","stem","polycount","texture","format","garment","lighting","light_direction","palette","pbr","quad","geometry_quality","texture_quality"]},"required":{"type":"boolean"},"ui":{"type":"object","properties":{"control":{"type":"string","enum":["prompt","textarea","aspect","segmented","select","switch","seed","image","images","script","lyrics","tags","voice","language","slider","audio","video","mask","expand","effect"]},"group":{"type":"string","enum":["prompt","inputs","basic","advanced"]},"order":{"type":"integer"}},"required":["control","group","order"]},"kind":{"type":"string","const":"enum"},"values":{"minItems":1,"type":"array","items":{"type":["string","number","boolean"]}}},"required":["name","required","ui","kind","values"]},{"type":"object","properties":{"name":{"type":"string","enum":["prompt","negative_prompt","aspect_ratio","resolution","duration","num_outputs","seed","images","image","first_frame","last_frame","generate_audio","upscale_factor","mask","expand_left","expand_right","expand_top","expand_bottom","video","audio","fps","effect","text","voice","language","speed","lyrics","style","instrumental","stem","polycount","texture","format","garment","lighting","light_direction","palette","pbr","quad","geometry_quality","texture_quality"]},"required":{"type":"boolean"},"ui":{"type":"object","properties":{"control":{"type":"string","enum":["prompt","textarea","aspect","segmented","select","switch","seed","image","images","script","lyrics","tags","voice","language","slider","audio","video","mask","expand","effect"]},"group":{"type":"string","enum":["prompt","inputs","basic","advanced"]},"order":{"type":"integer"}},"required":["control","group","order"]},"kind":{"type":"string","const":"range"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","exclusiveMinimum":0}},"required":["name","required","ui","kind","min","max","step"]},{"type":"object","properties":{"name":{"type":"string","enum":["prompt","negative_prompt","aspect_ratio","resolution","duration","num_outputs","seed","images","image","first_frame","last_frame","generate_audio","upscale_factor","mask","expand_left","expand_right","expand_top","expand_bottom","video","audio","fps","effect","text","voice","language","speed","lyrics","style","instrumental","stem","polycount","texture","format","garment","lighting","light_direction","palette","pbr","quad","geometry_quality","texture_quality"]},"required":{"type":"boolean"},"ui":{"type":"object","properties":{"control":{"type":"string","enum":["prompt","textarea","aspect","segmented","select","switch","seed","image","images","script","lyrics","tags","voice","language","slider","audio","video","mask","expand","effect"]},"group":{"type":"string","enum":["prompt","inputs","basic","advanced"]},"order":{"type":"integer"}},"required":["control","group","order"]},"kind":{"type":"string","const":"seed"},"max":{"type":"integer","exclusiveMinimum":0}},"required":["name","required","ui","kind","max"]},{"type":"object","properties":{"name":{"type":"string","enum":["prompt","negative_prompt","aspect_ratio","resolution","duration","num_outputs","seed","images","image","first_frame","last_frame","generate_audio","upscale_factor","mask","expand_left","expand_right","expand_top","expand_bottom","video","audio","fps","effect","text","voice","language","speed","lyrics","style","instrumental","stem","polycount","texture","format","garment","lighting","light_direction","palette","pbr","quad","geometry_quality","texture_quality"]},"required":{"type":"boolean"},"ui":{"type":"object","properties":{"control":{"type":"string","enum":["prompt","textarea","aspect","segmented","select","switch","seed","image","images","script","lyrics","tags","voice","language","slider","audio","video","mask","expand","effect"]},"group":{"type":"string","enum":["prompt","inputs","basic","advanced"]},"order":{"type":"integer"}},"required":["control","group","order"]},"kind":{"type":"string","const":"media"},"accept":{"type":"string","enum":["image","audio","video"]}},"required":["name","required","ui","kind","accept"]},{"type":"object","properties":{"name":{"type":"string","enum":["prompt","negative_prompt","aspect_ratio","resolution","duration","num_outputs","seed","images","image","first_frame","last_frame","generate_audio","upscale_factor","mask","expand_left","expand_right","expand_top","expand_bottom","video","audio","fps","effect","text","voice","language","speed","lyrics","style","instrumental","stem","polycount","texture","format","garment","lighting","light_direction","palette","pbr","quad","geometry_quality","texture_quality"]},"required":{"type":"boolean"},"ui":{"type":"object","properties":{"control":{"type":"string","enum":["prompt","textarea","aspect","segmented","select","switch","seed","image","images","script","lyrics","tags","voice","language","slider","audio","video","mask","expand","effect"]},"group":{"type":"string","enum":["prompt","inputs","basic","advanced"]},"order":{"type":"integer"}},"required":["control","group","order"]},"kind":{"type":"string","const":"media_list"},"accept":{"type":"string","const":"image"},"minItems":{"type":"integer","minimum":0},"maxItems":{"type":"integer","exclusiveMinimum":0}},"required":["name","required","ui","kind","accept","minItems","maxItems"]}]}},"defaults":{"type":"object","propertyNames":{"type":"string","enum":["prompt","negative_prompt","aspect_ratio","resolution","duration","num_outputs","seed","images","image","first_frame","last_frame","generate_audio","upscale_factor","mask","expand_left","expand_right","expand_top","expand_bottom","video","audio","fps","effect","text","voice","language","speed","lyrics","style","instrumental","stem","polycount","texture","format","garment","lighting","light_direction","palette","pbr","quad","geometry_quality","texture_quality"]},"additionalProperties":{"anyOf":[{"type":["string","number","boolean"]},{"type":"array","items":{"type":"string"}}]}},"inputLimits":{"type":"object","properties":{"maxOutputPixels":{"type":"integer","exclusiveMinimum":0},"maxOutputSide":{"type":"integer","exclusiveMinimum":0},"minInputSeconds":{"type":"integer","exclusiveMinimum":0},"maxInputSeconds":{"type":"integer","exclusiveMinimum":0},"maxInputBytes":{"type":"integer","exclusiveMinimum":0}}},"priceFromCoins":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]}},"required":["id","listingId","taskType","modality","workspace","vendor","displayName","params","defaults","priceFromCoins"]}}},"required":["models"]},"EffectsResponse":{"type":"object","properties":{"effects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,63}$"},"kind":{"type":"string","enum":["image","video"]},"category":{"type":"string","enum":["style","template"]},"nameKey":{"type":"string","minLength":1},"thumbnail":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"input":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"images"},"min":{"type":"integer","exclusiveMinimum":0},"max":{"type":"integer","exclusiveMinimum":0}},"required":["type","min","max"]},{"type":"object","properties":{"type":{"type":"string","const":"video"}},"required":["type"]}]},"modelId":{"type":"string","minLength":1}},"required":["id","kind","category","nameKey","thumbnail","input","modelId"]}}},"required":["effects"]},"PublicAccount":{"type":"object","properties":{"balance":{"type":"object","properties":{"available":{"type":"integer"},"held":{"type":"integer","minimum":0}},"required":["available","held"]},"concurrency":{"$ref":"#/components/schemas/Concurrency"},"rateLimits":{"type":"object","properties":{"key":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":0},"windowSeconds":{"type":"integer","exclusiveMinimum":0}},"required":["limit","windowSeconds"]},"account":{"type":"object","properties":{"limit":{"type":"integer","exclusiveMinimum":0},"windowSeconds":{"type":"integer","exclusiveMinimum":0}},"required":["limit","windowSeconds"]}},"required":["key","account"]},"key":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["generate","read","uploads","account"]}},"monthlySpendCapCoins":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}]},"spentThisMonthCoins":{"type":"integer","minimum":0},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","name","scopes","monthlySpendCapCoins","spentThisMonthCoins","expiresAt"]},{"type":"null"}]},"channel":{"type":"string","enum":["web","api","mcp"]}},"required":["balance","concurrency","rateLimits","key","channel"]},"WebhookEvent":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["generation.succeeded","generation.failed","generation.canceled"]},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"generation":{"$ref":"#/components/schemas/Generation"}},"required":["generation"]}},"required":["id","type","createdAt","data"]},"Problem":{"type":"object","properties":{"type":{"type":"string","minLength":1},"title":{"type":"string","minLength":1},"status":{"type":"integer","minimum":400,"maximum":599},"detail":{"type":"string"},"code":{"type":"string","enum":["invalid_params","unknown_model","invalid_quote","price_changed","max_coins_exceeded","insufficient_coins","idempotency_conflict","idempotency_key_required","cooldown","account_locked","unauthorized","not_found","not_cancelable","rate_limited","unavailable","input_too_large","input_duration","input_file_too_large","consent_required","upload_too_large","upload_invalid","upload_too_long","wrong_media","download_too_large","maintenance","explore_blocked","explore_limit","explore_not_shareable","explore_removed","internal","invalid_api_key","api_key_revoked","api_key_expired","insufficient_scope","channel_disabled","spend_cap_exceeded"]},"instance":{"type":"string"},"issues":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"]}}},"required":["type","title","status","detail","code"]},"QuoteRequest":{"type":"object","properties":{"modelId":{"type":"string","minLength":1},"params":{"type":"object","propertyNames":{"type":"string","enum":["prompt","negative_prompt","aspect_ratio","resolution","duration","num_outputs","seed","images","image","first_frame","last_frame","generate_audio","upscale_factor","mask","expand_left","expand_right","expand_top","expand_bottom","video","audio","fps","effect","text","voice","language","speed","lyrics","style","instrumental","stem","polycount","texture","format","garment","lighting","light_direction","palette","pbr","quad","geometry_quality","texture_quality"]},"additionalProperties":{"anyOf":[{"type":["string","number","boolean"]},{"type":"array","items":{"type":"string"}}]}},"draft":{"default":false,"type":"boolean"},"effectId":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,63}$"}},"required":["modelId","params"]},"CreateGenerationRequest":{"type":"object","properties":{"modelId":{"type":"string","minLength":1},"params":{"type":"object","propertyNames":{"type":"string","enum":["prompt","negative_prompt","aspect_ratio","resolution","duration","num_outputs","seed","images","image","first_frame","last_frame","generate_audio","upscale_factor","mask","expand_left","expand_right","expand_top","expand_bottom","video","audio","fps","effect","text","voice","language","speed","lyrics","style","instrumental","stem","polycount","texture","format","garment","lighting","light_direction","palette","pbr","quad","geometry_quality","texture_quality"]},"additionalProperties":{"anyOf":[{"type":["string","number","boolean"]},{"type":"array","items":{"type":"string"}}]}},"quoteToken":{"type":"string","minLength":1},"maxCoins":{"type":"integer","exclusiveMinimum":0},"projectId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"effectId":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,63}$"},"consent":{"type":"boolean","const":true}},"required":["modelId","params"]}},"parameters":{"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":true,"description":"16–128 characters of A–Z a–z 0–9 _ -, unique per intended generation (a UUID works). Scoped to your account.","schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}},"headers":{"RateLimitLimit":{"description":"Requests allowed in the current window (the tighter of key and account).","schema":{"type":"integer"}},"RateLimitRemaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimitReset":{"description":"Seconds until the window resets.","schema":{"type":"integer"}},"RateLimitPolicy":{"description":"The limit and window, e.g. `120;w=60`.","schema":{"type":"string"}}},"responses":{"BadRequest":{"description":"Invalid request: `invalid_params`, `invalid_quote`, `idempotency_key_required`, `consent_required`, `input_too_large`, `input_duration`, `wrong_media`…","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"Unauthorized":{"description":"No valid key: `unauthorized`, `invalid_api_key`, `api_key_revoked`, `api_key_expired`.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"PaymentRequired":{"description":"`insufficient_coins`, or `spend_cap_exceeded` for the key's monthly cap.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"Forbidden":{"description":"`insufficient_scope`, `cooldown`, `account_locked`.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"NotFound":{"description":"`not_found` or `unknown_model`.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"Conflict":{"description":"`idempotency_conflict`, `price_changed`, `max_coins_exceeded`, `not_cancelable`.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"PayloadTooLarge":{"description":"`upload_too_large`, `upload_too_long`.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"UnsupportedMediaType":{"description":"`upload_invalid`.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"TooManyRequests":{"description":"`rate_limited`: wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}}},"Unavailable":{"description":"`unavailable`, `maintenance` or `channel_disabled`: nothing was charged; retry later.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}