Référence de l’API
Générée à partir du document OpenAPI 3.1 servi par l’API. Ouvrez une requête ou une réponse pour voir ses champs.
Models
What you can run and what it costs.
get/v1/models
· List modelsPublic, sans clé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.
Réponses
200The catalog.
get/v1/effects
· List effectsPublic, sans clé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.
Réponses
200The effects.
Generations
Quote, start, follow and cancel generations.
post/v1/quotes
· Quote a generationPermission: generatePrices 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).
Corps de la requête
application/json QuoteRequest
modelIdstringobligatoiremin length 1
paramsobjectobligatoiredraftbooleandefault false
effectIdstringpattern ^[a-z0-9][a-z0-9-]{0,63}$
Réponses
200The price.
400Invalid request: invalid_params, invalid_quote, idempotency_key_required, consent_required, input_too_large, input_duration, wrong_media…
401No valid key: unauthorized, invalid_api_key, api_key_revoked, api_key_expired.
403insufficient_scope, cooldown, account_locked.
404not_found or unknown_model.
429rate_limited: wait Retry-After seconds.
503unavailable, maintenance or channel_disabled: nothing was charged; retry later.
get/v1/generations
· List generationsPermission: readYour generations, newest first, with cursor pagination: pass nextCursor back as cursor until it is null.
Paramètres
cursorstringrequêtenextCursorof the previous page.limitintegerrequête≥ 1 · ≤ 100 · default 30
statusstringrequêteone of "queued", "processing", "succeeded", "failed", "canceled"
modalitystringrequêteone of "image", "video", "audio", "3d"
workspacestringrequêteone of "image", "video", "audio", "3d", "tools"
modelIdstringrequêteactivebooleanrequêteOnly generations that are still queued or processing.
Réponses
200One page.
400Invalid request: invalid_params, invalid_quote, idempotency_key_required, consent_required, input_too_large, input_duration, wrong_media…
401No valid key: unauthorized, invalid_api_key, api_key_revoked, api_key_expired.
403insufficient_scope, cooldown, account_locked.
429rate_limited: wait Retry-After seconds.
post/v1/generations
· Start a generationPermission: generateHolds 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.
Paramètres
Idempotency-Keystringen-têteobligatoiremin length 16 · max length 128 · pattern ^[A-Za-z0-9_-]+$
16–128 characters of A–Z a–z 0–9 _ -, unique per intended generation (a UUID works). Scoped to your account.
Corps de la requête
application/json CreateGenerationRequest
modelIdstringobligatoiremin length 1
paramsobjectobligatoirequoteTokenstringmin length 1
maxCoinsinteger> 0
projectIdstring | nullmin length 1
effectIdstringpattern ^[a-z0-9][a-z0-9-]{0,63}$
consenttrue
Réponses
200A replay of an earlier request with the same key.
201Created and queued.
400Invalid request: invalid_params, invalid_quote, idempotency_key_required, consent_required, input_too_large, input_duration, wrong_media…
401No valid key: unauthorized, invalid_api_key, api_key_revoked, api_key_expired.
402insufficient_coins, or spend_cap_exceeded for the key's monthly cap.
403insufficient_scope, cooldown, account_locked.
404not_found or unknown_model.
409idempotency_conflict, price_changed, max_coins_exceeded, not_cancelable.
429rate_limited: wait Retry-After seconds.
503unavailable, maintenance or channel_disabled: nothing was charged; retry later.
get/v1/generations/{id}
· Get a generationPermission: readStatus (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.
Paramètres
idstring (uuid)cheminobligatoireThe generation id.
Réponses
200The generation.
401No valid key: unauthorized, invalid_api_key, api_key_revoked, api_key_expired.
403insufficient_scope, cooldown, account_locked.
404not_found or unknown_model.
429rate_limited: wait Retry-After seconds.
post/v1/generations/{id}/cancel
· Cancel a queued generationPermission: generateFree, and only while the generation is still queued (not yet sent for processing); the held coins are released. Otherwise not_cancelable (409).
Paramètres
idstring (uuid)cheminobligatoireThe generation id.
Réponses
200Canceled.
401No valid key: unauthorized, invalid_api_key, api_key_revoked, api_key_expired.
403insufficient_scope, cooldown, account_locked.
404not_found or unknown_model.
409idempotency_conflict, price_changed, max_coins_exceeded, not_cancelable.
429rate_limited: wait Retry-After seconds.
Files
Input uploads and output files.
post/v1/uploads
· Upload an input filePermission: uploadsOne 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.
Corps de la requête
multipart/form-data object
filestringobligatoireOne of image/png, image/jpeg, image/webp, audio/mpeg, audio/wav, audio/mp4, audio/ogg, video/mp4, video/webm, video/quicktime.
Réponses
201Stored.
400Invalid request: invalid_params, invalid_quote, idempotency_key_required, consent_required, input_too_large, input_duration, wrong_media…
401No valid key: unauthorized, invalid_api_key, api_key_revoked, api_key_expired.
403insufficient_scope, cooldown, account_locked.
413upload_too_large, upload_too_long.
415upload_invalid.
429rate_limited: wait Retry-After seconds.
503unavailable, maintenance or channel_disabled: nothing was charged; retry later.
get/v1/assets/{id}
· Get a filePermission: readAn output or upload with freshly signed, short-lived download URLs (about an hour).
Paramètres
idstring (uuid)cheminobligatoireThe asset id.
Réponses
200The file.
401No valid key: unauthorized, invalid_api_key, api_key_revoked, api_key_expired.
403insufficient_scope, cooldown, account_locked.
404not_found or unknown_model.
429rate_limited: wait Retry-After seconds.
Account
Balance and limits.
get/v1/generations/concurrency
· Running-generation limitPermission: readHow many generations run at once for you, and how many run or wait now. Generations over the limit wait in the queue.
Réponses
200The limit.
401No valid key: unauthorized, invalid_api_key, api_key_revoked, api_key_expired.
403insufficient_scope, cooldown, account_locked.
429rate_limited: wait Retry-After seconds.
get/v1/account
· Balance and limitsPermission: accountYour coin balance, running-generation limit, rate limits and the calling key with its monthly spend.
Réponses
200The account.
401No valid key: unauthorized, invalid_api_key, api_key_revoked, api_key_expired.
403insufficient_scope, cooldown, account_locked.
429rate_limited: wait Retry-After seconds.
Événements de webhook
Les requêtes qu’inker envoie à vos endpoints.
POST generation.succeeded
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.
application/json
idstringobligatoiremin length 1
typestringobligatoireone of "generation.succeeded", "generation.failed", "generation.canceled"
createdAtstring (date-time)obligatoiredataobjectobligatoireChamps
- Generation
generationGenerationobligatoire
POST generation.failed
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.
application/json
idstringobligatoiremin length 1
typestringobligatoireone of "generation.succeeded", "generation.failed", "generation.canceled"
createdAtstring (date-time)obligatoiredataobjectobligatoireChamps
- Generation
generationGenerationobligatoire
POST generation.canceled
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.
application/json
idstringobligatoiremin length 1
typestringobligatoireone of "generation.succeeded", "generation.failed", "generation.canceled"
createdAtstring (date-time)obligatoiredataobjectobligatoireChamps
- Generation
generationGenerationobligatoire
Schémas
Les objets acceptés et renvoyés par les endpoints, chacun documenté une seule fois.
Asset
idstringobligatoiremin length 1 · max length 128 · pattern ^[A-Za-z0-9_-]+$
kindstringobligatoireone of "image", "video", "audio", "3d", "text"
urlstringobligatoiremin length 1
thumbnailUrlstringobligatoiremin length 1
posterUrlstring | nullobligatoiremin length 1
mimeTypestringobligatoiremin length 1
widthinteger | nullobligatoire> 0
heightinteger | nullobligatoire> 0
durationSecondsnumber | nullobligatoire> 0
waveformUrlstring | nullmin length 1
transparentbooleandownloadsarray of objectChamps
formatstringobligatoireone of "obj", "fbx", "usdz", "stl"
urlstringobligatoiremin length 1
bytesintegerobligatoire> 0
stemstring | nullone of "vocals", "drums", "bass", "other"
subtitlesobject | nullChamps
srtUrlstringobligatoiremin length 1
vttUrlstringobligatoiremin length 1
Generation
idstringobligatoiremin length 1
modelIdstringobligatoiremin length 1
modelNamestringobligatoiremin length 1
taskTypestringobligatoireone of "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"
modalitystringobligatoireone of "image", "video", "audio", "3d"
workspacestringobligatoireone of "image", "video", "audio", "3d", "tools"
effectobject | nullobligatoireChamps
idstringobligatoiremin length 1
textstring | nullobligatoire
statusstringobligatoireone of "queued", "processing", "succeeded", "failed", "canceled"
progressnumber | nullobligatoire≥ 0 · ≤ 1
queuePositioninteger | nullobligatoire> 0
paramsobjectobligatoirecoinsQuotedintegerobligatoire> 0
coinsChargedinteger | nullobligatoire≥ 0
- Asset
outputsarray of Assetobligatoire outputsRequestedintegerobligatoire> 0
errorobject | nullobligatoireChamps
codestringobligatoireone of "content_policy", "invalid_input", "unavailable", "timeout", "internal"
projectIdstring | nullobligatoiremin length 1
createdAtstring (date-time)obligatoirestartedAtstring (date-time) | nullobligatoirecompletedAtstring (date-time) | nullobligatoire
GenerationPage
- Generation
itemsarray of Generationobligatoire nextCursorstring | nullobligatoiremin length 1
QuoteResponse
modelIdstringobligatoiremin length 1
coinsintegerobligatoire> 0
coinsPerOutputintegerobligatoire> 0
outputsintegerobligatoire> 0
quoteTokenstring | nullobligatoiremin length 1
expiresAtstring (date-time)obligatoireavailableCoinsintegerobligatoire≥ 0
Concurrency
limitintegerobligatoire> 0
raisedLimitinteger | nullobligatoire> 0
runningintegerobligatoire≥ 0
queuedintegerobligatoire≥ 0
PublicModelsResponse
modelsarray of objectobligatoireChamps
idstringobligatoiremin length 1
listingIdstringobligatoiremin length 1
taskTypestringobligatoireone of "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"
modalitystringobligatoireone of "image", "video", "audio", "3d"
workspacestringobligatoireone of "image", "video", "audio", "3d", "tools"
vendorstringobligatoiremin length 1
displayNamestringobligatoiremin length 1
paramsarray of object | object | object | object | object | objectobligatoireChamps
namestringobligatoireone of "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"
requiredbooleanobligatoireuiobjectobligatoireChamps
controlstringobligatoireone of "prompt", "textarea", "aspect", "segmented", "select", "switch", "seed", "image", "images", "script", "lyrics", "tags", "voice", "language", "slider", "audio", "video", "mask", "expand", "effect"
groupstringobligatoireone of "prompt", "inputs", "basic", "advanced"
orderintegerobligatoire
kind"text"obligatoiremaxLengthintegerobligatoire> 0
minLengthinteger> 0
Champs
namestringobligatoireone of "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"
requiredbooleanobligatoireuiobjectobligatoireChamps
controlstringobligatoireone of "prompt", "textarea", "aspect", "segmented", "select", "switch", "seed", "image", "images", "script", "lyrics", "tags", "voice", "language", "slider", "audio", "video", "mask", "expand", "effect"
groupstringobligatoireone of "prompt", "inputs", "basic", "advanced"
orderintegerobligatoire
kind"enum"obligatoirevaluesarray of string | number | booleanobligatoiremin items 1
Champs
namestringobligatoireone of "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"
requiredbooleanobligatoireuiobjectobligatoireChamps
controlstringobligatoireone of "prompt", "textarea", "aspect", "segmented", "select", "switch", "seed", "image", "images", "script", "lyrics", "tags", "voice", "language", "slider", "audio", "video", "mask", "expand", "effect"
groupstringobligatoireone of "prompt", "inputs", "basic", "advanced"
orderintegerobligatoire
kind"range"obligatoireminnumberobligatoiremaxnumberobligatoirestepnumberobligatoire> 0
Champs
namestringobligatoireone of "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"
requiredbooleanobligatoireuiobjectobligatoireChamps
controlstringobligatoireone of "prompt", "textarea", "aspect", "segmented", "select", "switch", "seed", "image", "images", "script", "lyrics", "tags", "voice", "language", "slider", "audio", "video", "mask", "expand", "effect"
groupstringobligatoireone of "prompt", "inputs", "basic", "advanced"
orderintegerobligatoire
kind"seed"obligatoiremaxintegerobligatoire> 0
Champs
namestringobligatoireone of "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"
requiredbooleanobligatoireuiobjectobligatoireChamps
controlstringobligatoireone of "prompt", "textarea", "aspect", "segmented", "select", "switch", "seed", "image", "images", "script", "lyrics", "tags", "voice", "language", "slider", "audio", "video", "mask", "expand", "effect"
groupstringobligatoireone of "prompt", "inputs", "basic", "advanced"
orderintegerobligatoire
kind"media"obligatoireacceptstringobligatoireone of "image", "audio", "video"
Champs
namestringobligatoireone of "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"
requiredbooleanobligatoireuiobjectobligatoireChamps
controlstringobligatoireone of "prompt", "textarea", "aspect", "segmented", "select", "switch", "seed", "image", "images", "script", "lyrics", "tags", "voice", "language", "slider", "audio", "video", "mask", "expand", "effect"
groupstringobligatoireone of "prompt", "inputs", "basic", "advanced"
orderintegerobligatoire
kind"media_list"obligatoireaccept"image"obligatoireminItemsintegerobligatoire≥ 0
maxItemsintegerobligatoire> 0
defaultsobjectobligatoirepriceFromCoinsinteger | nullobligatoire> 0
inputLimitsobjectChamps
maxOutputPixelsinteger> 0
maxOutputSideinteger> 0
minInputSecondsinteger> 0
maxInputSecondsinteger> 0
maxInputBytesinteger> 0
EffectsResponse
effectsarray of objectobligatoireChamps
idstringobligatoirepattern ^[a-z0-9][a-z0-9-]{0,63}$
kindstringobligatoireone of "image", "video"
categorystringobligatoireone of "style", "template"
nameKeystringobligatoiremin length 1
thumbnailstring | nullobligatoiremin length 1
inputobject | objectobligatoireChamps
type"images"obligatoireminintegerobligatoire> 0
maxintegerobligatoire> 0
Champs
type"video"obligatoire
modelIdstringobligatoiremin length 1
PublicAccount
balanceobjectobligatoireChamps
availableintegerobligatoireheldintegerobligatoire≥ 0
- Concurrency
concurrencyConcurrencyobligatoire rateLimitsobjectobligatoireChamps
keyobjectobligatoireChamps
limitintegerobligatoire> 0
windowSecondsintegerobligatoire> 0
accountobjectobligatoireChamps
limitintegerobligatoire> 0
windowSecondsintegerobligatoire> 0
keyobject | nullobligatoireChamps
idstring (uuid)obligatoirepattern ^([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)$
namestringobligatoirescopesarray of stringobligatoiremonthlySpendCapCoinsinteger | nullobligatoire> 0
spentThisMonthCoinsintegerobligatoire≥ 0
expiresAtstring (date-time) | nullobligatoire
channelstringobligatoireone of "web", "api", "mcp"
WebhookEvent
idstringobligatoiremin length 1
typestringobligatoireone of "generation.succeeded", "generation.failed", "generation.canceled"
createdAtstring (date-time)obligatoiredataobjectobligatoireChamps
- Generation
generationGenerationobligatoire
Problem
typestringobligatoiremin length 1
titlestringobligatoiremin length 1
statusintegerobligatoire≥ 400 · ≤ 599
detailstringobligatoirecodestringobligatoireone of "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"
instancestringissuesarray of objectChamps
pathstringobligatoiremessagestringobligatoire
QuoteRequest
modelIdstringobligatoiremin length 1
paramsobjectobligatoiredraftbooleandefault false
effectIdstringpattern ^[a-z0-9][a-z0-9-]{0,63}$
CreateGenerationRequest
modelIdstringobligatoiremin length 1
paramsobjectobligatoirequoteTokenstringmin length 1
maxCoinsinteger> 0
projectIdstring | nullmin length 1
effectIdstringpattern ^[a-z0-9][a-z0-9-]{0,63}$
consenttrue