Authentification
Utilisez votre clé FECINE comme jeton Bearer. Aucun compte requis pour lire la documentation.
Du scénario au montage final, connectez votre production avec FECINE.
Utilisez votre clé FECINE comme jeton Bearer. Aucun compte requis pour lire la documentation.
Créez une œuvre, importez les scénarios et les ressources, puis ajoutez personnages, décors, accessoires et grilles. Créez les épisodes et les scènes, associez les références et générez les vidéos. Sélectionnez une prise par scène, puis exportez le montage final. Attendez la fin de chaque génération et envoyez la dernière revision pour les modifications. Lancez séparément la construction pour structurer les scénarios importés.
Consultez le statut ou recevez un Webhook. Les identifiants des fichiers donnent accès aux liens de téléchargement signés.
curl -X GET 'https://YOUR_FECINE_HOST/api/v1/capabilities' \
-H 'Authorization: Bearer YOUR_FECINE_API_KEY'GET /api/v1/capabilitiesAucun endpoint correspondant
Erreur FECINE. Communiquez request_id au support.
Copiez le JSON puis remplacez les identifiants, URL et contenus par vos valeurs.
/api/v1/capabilitiesVoir ce qui est disponible maintenantRenvoie les fonctions, modèles, formats de transfert et limites de production disponibles dans cet environnement API.
Permission requise: projects:read
Aucun paramètre
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"items": [
{
"studio_workflow": {
"equivalent": false,
"stages": [
"script"
],
"project_access": "read_only",
"gaps": [
"example"
]
},
"template_id": "example",
"template_version": 1,
"enabled": false,
"stages": [
"example"
],
"output_profiles": [
"example"
],
"unsupported_reasons": [
"example"
],
"max_shots": 1,
"max_episode_seconds": 1,
"upload_mime_types": [
"example"
],
"max_upload_bytes": 1
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/worksVoir la liste de vos projetsListe les projets accessibles. Filtrez par state et paginez avec cursor et limit.
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
cursorquery | string | — |
|
limitquery | integer | — |
|
statequery | string | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"name": "example",
"revision": 1,
"state": "active",
"created_at": "2026-09-20T00:00:00Z",
"client_reference": "example"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/worksCréer un projetCrée un projet avec le name fourni. Utilisez son ID pour ajouter des ressources et lancer la production.
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | * |
|
client_reference | string | — |
|
{
"name": "example"
}HTTP 201 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"name": "example",
"revision": 1,
"state": "active",
"created_at": "2026-09-20T00:00:00Z",
"client_reference": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}Voir les infos d’un projetRenvoie le nom, l’état et la revision du projet, à consulter avant une modification ou une demande de production.
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"name": "example",
"revision": 1,
"state": "active",
"created_at": "2026-09-20T00:00:00Z",
"client_reference": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}Modifier les infos d’un projetModifie le nom ou l’état active/archived du projet. Envoyez le dernier ETag dans If-Match.
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
If-Matchheader | string | * | Utilisez le dernier ETag, guillemets compris. |
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | — |
|
state | string | — |
|
{}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"name": "example",
"revision": 1,
"state": "active",
"created_at": "2026-09-20T00:00:00Z",
"client_reference": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}/resourcesVoir les éléments déjà envoyésListe les scénarios, personnages, scènes, accessoires, épisodes et plans du projet. Sélectionnez le type avec kind.
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
kindquery | string | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"content": {
"kind": "script",
"name": "example",
"data": {
"language": "example"
}
},
"created_at": "2026-09-20T00:00:00Z"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}/resourcesAjouter des éléments (scénario, images…)Ajoute une ressource structurée via kind et data, par exemple un scénario ou un plan. Transférez les fichiers via /uploads.
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
kind | string | * | kind = script
|
name | string | * | kind = script
|
data | object | * | kind = scriptFournissez uniquement text ou source_asset_id. |
data.text | string | — | kind = script
|
data.source_asset_id | string | — | kind = script
|
data.language | string | * | kind = script
|
kind | string | * | kind = character
|
name | string | * | kind = character
|
data | object | * | kind = character |
data.description | string | * | kind = character
|
data.reference_asset_ids | array | — | kind = character
|
kind | string | * | kind = scene
|
name | string | * | kind = scene
|
data | object | * | kind = scene |
data.description | string | * | kind = scene
|
data.reference_asset_ids | array | — | kind = scene
|
kind | string | * | kind = prop
|
name | string | * | kind = prop
|
data | object | * | kind = prop |
data.description | string | * | kind = prop
|
data.reference_asset_ids | array | — | kind = prop
|
kind | string | * | kind = episode
|
name | string | * | kind = episode
|
data | object | * | kind = episode |
data.script_resource_id | string | * | kind = episode
|
data.sequence | integer | * | kind = episode
|
data.raw_content | string | — | kind = episode
|
data.description | string | — | kind = episode
|
kind | string | * | kind = shot
|
name | string | * | kind = shot
|
data | object | * | kind = shot |
data.episode_id | string | * | kind = shot
|
data.scene_id | string | — | kind = shot
|
data.character_ids | array | — | kind = shot
|
data.prop_ids | array | — | kind = shot
|
data.description | string | * | kind = shot
|
data.video_prompt | oneOf | — | kind = shot |
data.sequence | integer | — | kind = shot
|
data.duration_seconds | integer | * | kind = shot
|
data.selected_image_asset_id | string | — | kind = shot
|
data.selected_video_asset_id | string | — | kind = shot
|
{
"kind": "script",
"name": "example",
"data": {
"language": "example"
}
}HTTP 201 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"content": {
"kind": "script",
"name": "example",
"data": {
"language": "example"
}
},
"created_at": "2026-09-20T00:00:00Z"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}/resources/{resource_id}Voir un élémentRenvoie le type, le contenu et la revision de la ressource désignée par resource_id dans le projet.
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
resource_idpath | string | * |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"content": {
"kind": "script",
"name": "example",
"data": {
"language": "example"
}
},
"created_at": "2026-09-20T00:00:00Z"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}/resources/{resource_id}Modifier un élémentMet à jour kind et data. Envoyez le dernier ETag dans If-Match pour éviter les conflits de modification.
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
resource_idpath | string | * |
|
If-Matchheader | string | * | Utilisez le dernier ETag, guillemets compris. |
| Nom | Type | Requis | Description |
|---|---|---|---|
kind | string | * | kind = script
|
name | string | * | kind = script
|
data | object | * | kind = scriptFournissez uniquement text ou source_asset_id. |
data.text | string | — | kind = script
|
data.source_asset_id | string | — | kind = script
|
data.language | string | * | kind = script
|
kind | string | * | kind = character
|
name | string | * | kind = character
|
data | object | * | kind = character |
data.description | string | * | kind = character
|
data.reference_asset_ids | array | — | kind = character
|
kind | string | * | kind = scene
|
name | string | * | kind = scene
|
data | object | * | kind = scene |
data.description | string | * | kind = scene
|
data.reference_asset_ids | array | — | kind = scene
|
kind | string | * | kind = prop
|
name | string | * | kind = prop
|
data | object | * | kind = prop |
data.description | string | * | kind = prop
|
data.reference_asset_ids | array | — | kind = prop
|
kind | string | * | kind = episode
|
name | string | * | kind = episode
|
data | object | * | kind = episode |
data.script_resource_id | string | * | kind = episode
|
data.sequence | integer | * | kind = episode
|
data.raw_content | string | — | kind = episode
|
data.description | string | — | kind = episode
|
kind | string | * | kind = shot
|
name | string | * | kind = shot
|
data | object | * | kind = shot |
data.episode_id | string | * | kind = shot
|
data.scene_id | string | — | kind = shot
|
data.character_ids | array | — | kind = shot
|
data.prop_ids | array | — | kind = shot
|
data.description | string | * | kind = shot
|
data.video_prompt | oneOf | — | kind = shot |
data.sequence | integer | — | kind = shot
|
data.duration_seconds | integer | * | kind = shot
|
data.selected_image_asset_id | string | — | kind = shot
|
data.selected_video_asset_id | string | — | kind = shot
|
{
"kind": "script",
"name": "example",
"data": {
"language": "example"
}
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"content": {
"kind": "script",
"name": "example",
"data": {
"language": "example"
}
},
"created_at": "2026-09-20T00:00:00Z"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}/workflowConsulter la production StudioRenvoie ensemble le scénario, les épisodes, designs, scènes, assets, prises, sélections de montage et la dernière revision.
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"api_runs": [
{
"id": "11111111-1111-4111-8111-111111111111",
"state": "example",
"created_at": "example",
"completed_at": "example",
"total_steps": 0,
"completed_steps": 0,
"error_code": "example"
}
],
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example",
"trash": [
{
"id": "11111111-1111-4111-8111-111111111111",
"entity_type": "asset",
"name": "example",
"deleted_at": "example"
}
],
"assets": [
{
"id": "11111111-1111-4111-8111-111111111111",
"name": "example",
"kind": "example",
"media_type": "example",
"status": "example",
"mime": "example",
"lineage_id": "11111111-1111-4111-8111-111111111111",
"version": 1,
"is_current_version": false
}
],
"settings": {
"title": "example",
"tags": [
"example"
],
"cover": "example",
"aspect": "example",
"resolution": "example",
"style": "example",
"style_prompt": "example",
"state": "example"
},
"script": {
"text": "example",
"logline": "example",
"synopsis": "example"
},
"episodes": [
{
"id": "11111111-1111-4111-8111-111111111111",
"number": 1,
"title": "example",
"raw_content": "example",
"description": "example"
}
],
"designs": [
{
"id": "11111111-1111-4111-8111-111111111111",
"kind": "character",
"name": "example",
"description": "example",
"tags": [
"example"
],
"primary_asset_id": "11111111-1111-4111-8111-111111111111"
}
],
"scenes": [
{
"id": "11111111-1111-4111-8111-111111111111",
"episode_id": "11111111-1111-4111-8111-111111111111",
"number": 1,
"heading": "example",
"description": "example",
"video_prompt": "example"
}
],
"scene_designs": [
{
"scene_id": "11111111-1111-4111-8111-111111111111",
"design_id": "11111111-1111-4111-8111-111111111111",
"kind": "example",
"position": 1
}
],
"takes": [
{
"scene_id": "11111111-1111-4111-8111-111111111111",
"asset_id": "11111111-1111-4111-8111-111111111111",
"position": 1
}
],
"cut_selections": [
{
"scene_id": "11111111-1111-4111-8111-111111111111",
"asset_id": "11111111-1111-4111-8111-111111111111"
}
],
"design_assets": [
{
"design_id": "11111111-1111-4111-8111-111111111111",
"asset_id": "11111111-1111-4111-8111-111111111111",
"kind": "example",
"name": "example",
"position": 1
}
]
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}/script/analysesAnalyser le scénario StudioAnalyse le scénario pour en extraire la structure de production. Fournissez script_text pour le mettre à jour, sinon le scénario enregistré est utilisé. Suivez le job avec getJob.
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
model | string | — |
|
script_text | string | — |
|
{
"revision": 1
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{project_id}/script/buildsConstruire la production depuis le scénarioEnvoyez script_asset_ids validés et revision pour créer le scénario, les références et le storyboard. full_rebuild remplace la structure existante. Générez les images et vidéos séparément. Les jetons d’entrée et de sortie déclarés sont facturés aux mêmes tarifs que Studio. Aucun budget de crédits par requête n’est requis. GET /jobs/{job_id} → output_asset_ids.
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
model | string | — |
|
script_asset_ids | array | — |
|
material_scope | string | — |
|
preprocess | object | — | |
preprocess.ignoreAttachments | boolean | — |
|
preprocess.discardKeywords | array | — |
|
preprocess.keepLabels | array | — |
|
rebuild_policy | string | * |
|
{
"revision": 1,
"rebuild_policy": "full_rebuild"
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{project_id}/libraryConsulter la bibliothèque partagéeListe les assets importables. scope=personal consulte votre bibliothèque ; scope=studio, par défaut, consulte la bibliothèque partagée.
Permission requise: assets:read
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
limit | integer | — |
|
cursor | string | — | |
scope | string | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"name": "example",
"kind": "example",
"media_type": "example",
"mime": "example",
"version": 1,
"is_current_version": false
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}/importsImporter une ressource dans un projetCopie l’asset indiqué par asset_id depuis une bibliothèque personnelle ou partagée dans le projet. Les changements ultérieurs de la source n’affectent pas la copie.
Permission requise: assets:write, assets:read, projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
asset_id | string | * |
|
{
"revision": 1,
"asset_id": "11111111-1111-4111-8111-111111111111"
}HTTP 201 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"state": "pending",
"mime_type": "example",
"size_bytes": 0,
"download_url": "example",
"expires_at": "2026-09-20T00:00:00Z"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}/script/draftsGénérer un brouillon de scénarioEnvoyez instructions, source_text facultatif, revision et max_output_tokens. Enregistre un nouveau scénario sans remplacer l’existant. Les jetons d’entrée et de sortie déclarés sont facturés aux mêmes tarifs que Studio. Aucun budget de crédits par requête n’est requis. GET /jobs/{job_id} → output_asset_ids.
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
model | string | — |
|
instructions | string | * |
|
source_text | string | — |
|
max_output_tokens | integer | — |
|
{
"revision": 1,
"instructions": "example"
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{work_id}/charactersPersonnage · Consulter (list)Personnage · Consulter (list). GET /api/v1/works/{work_id}/characters. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"kind": "character",
"name": "example",
"description": "example",
"tags": [
"example"
],
"primary_asset_id": "11111111-1111-4111-8111-111111111111"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/charactersPersonnage · CréerPersonnage · Créer. POST /api/v1/works/{work_id}/characters. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | * |
|
description | string | — |
|
tags | array | — |
|
revision | integer | * |
{
"name": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/characters/{reference_id}Personnage · ConsulterPersonnage · Consulter. GET /api/v1/works/{work_id}/characters/{reference_id}. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"kind": "character",
"name": "example",
"description": "example",
"tags": [
"example"
],
"primary_asset_id": "11111111-1111-4111-8111-111111111111"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/characters/{reference_id}Personnage · ModifierPersonnage · Modifier. PATCH /api/v1/works/{work_id}/characters/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | * |
|
description | string | — |
|
tags | array | — |
|
revision | integer | * |
{
"name": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/characters/{reference_id}Personnage · SupprimerPersonnage · Supprimer. DELETE /api/v1/works/{work_id}/characters/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/characters/{reference_id}/primary-imagePersonnage · Définir l’image de référencePersonnage · Définir l’image de référence. PUT /api/v1/works/{work_id}/characters/{reference_id}/primary-image. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
asset_id | string | * |
|
current_asset_id | oneOf | * | |
revision | integer | * |
{
"asset_id": "11111111-1111-4111-8111-111111111111",
"current_asset_id": "11111111-1111-4111-8111-111111111111",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/characters/{reference_id}/image-generationsPersonnage · Générer l’image de référencePersonnage · Générer l’image de référence. POST /api/v1/works/{work_id}/characters/{reference_id}/image-generations. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
variants | integer | — |
|
model | string | — |
|
prompt | string | — |
|
aspect_ratio | string | — | |
image_size | string | — |
|
quality | string | — |
|
background | string | — |
|
output_format | string | — |
|
reference_asset_ids | array | — |
|
slot | string | — |
|
variant_name | string | — |
|
current_asset_id | string | — |
|
{
"revision": 1
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{work_id}/scenes/{scene_id}/references/characters/{reference_id}Personnage · Associer à la scènePersonnage · Associer à la scène. PUT /api/v1/works/{work_id}/scenes/{scene_id}/references/characters/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/scenes/{scene_id}/references/characters/{reference_id}Personnage · Dissocier de la scènePersonnage · Dissocier de la scène. DELETE /api/v1/works/{work_id}/scenes/{scene_id}/references/characters/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/background-scenesDécor · Consulter (list)Décor · Consulter (list). GET /api/v1/works/{work_id}/background-scenes. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"kind": "character",
"name": "example",
"description": "example",
"tags": [
"example"
],
"primary_asset_id": "11111111-1111-4111-8111-111111111111"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/background-scenesDécor · CréerDécor · Créer. POST /api/v1/works/{work_id}/background-scenes. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | * |
|
description | string | — |
|
tags | array | — |
|
revision | integer | * |
{
"name": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/background-scenes/{reference_id}Décor · ConsulterDécor · Consulter. GET /api/v1/works/{work_id}/background-scenes/{reference_id}. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"kind": "character",
"name": "example",
"description": "example",
"tags": [
"example"
],
"primary_asset_id": "11111111-1111-4111-8111-111111111111"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/background-scenes/{reference_id}Décor · ModifierDécor · Modifier. PATCH /api/v1/works/{work_id}/background-scenes/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | * |
|
description | string | — |
|
tags | array | — |
|
revision | integer | * |
{
"name": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/background-scenes/{reference_id}Décor · SupprimerDécor · Supprimer. DELETE /api/v1/works/{work_id}/background-scenes/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/background-scenes/{reference_id}/primary-imageDécor · Définir l’image de référenceDécor · Définir l’image de référence. PUT /api/v1/works/{work_id}/background-scenes/{reference_id}/primary-image. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
asset_id | string | * |
|
current_asset_id | oneOf | * | |
revision | integer | * |
{
"asset_id": "11111111-1111-4111-8111-111111111111",
"current_asset_id": "11111111-1111-4111-8111-111111111111",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/background-scenes/{reference_id}/image-generationsDécor · Générer l’image de référenceDécor · Générer l’image de référence. POST /api/v1/works/{work_id}/background-scenes/{reference_id}/image-generations. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
variants | integer | — |
|
model | string | — |
|
prompt | string | — |
|
aspect_ratio | string | — | |
image_size | string | — |
|
quality | string | — |
|
background | string | — |
|
output_format | string | — |
|
reference_asset_ids | array | — |
|
slot | string | — |
|
variant_name | string | — |
|
current_asset_id | string | — |
|
{
"revision": 1
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{work_id}/scenes/{scene_id}/references/background-scenes/{reference_id}Décor · Associer à la scèneDécor · Associer à la scène. PUT /api/v1/works/{work_id}/scenes/{scene_id}/references/background-scenes/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/scenes/{scene_id}/references/background-scenes/{reference_id}Décor · Dissocier de la scèneDécor · Dissocier de la scène. DELETE /api/v1/works/{work_id}/scenes/{scene_id}/references/background-scenes/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/propsAccessoire · Consulter (list)Accessoire · Consulter (list). GET /api/v1/works/{work_id}/props. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"kind": "character",
"name": "example",
"description": "example",
"tags": [
"example"
],
"primary_asset_id": "11111111-1111-4111-8111-111111111111"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/propsAccessoire · CréerAccessoire · Créer. POST /api/v1/works/{work_id}/props. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | * |
|
description | string | — |
|
tags | array | — |
|
revision | integer | * |
{
"name": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/props/{reference_id}Accessoire · ConsulterAccessoire · Consulter. GET /api/v1/works/{work_id}/props/{reference_id}. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"kind": "character",
"name": "example",
"description": "example",
"tags": [
"example"
],
"primary_asset_id": "11111111-1111-4111-8111-111111111111"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/props/{reference_id}Accessoire · ModifierAccessoire · Modifier. PATCH /api/v1/works/{work_id}/props/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | * |
|
description | string | — |
|
tags | array | — |
|
revision | integer | * |
{
"name": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/props/{reference_id}Accessoire · SupprimerAccessoire · Supprimer. DELETE /api/v1/works/{work_id}/props/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/props/{reference_id}/primary-imageAccessoire · Définir l’image de référenceAccessoire · Définir l’image de référence. PUT /api/v1/works/{work_id}/props/{reference_id}/primary-image. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
asset_id | string | * |
|
current_asset_id | oneOf | * | |
revision | integer | * |
{
"asset_id": "11111111-1111-4111-8111-111111111111",
"current_asset_id": "11111111-1111-4111-8111-111111111111",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/props/{reference_id}/image-generationsAccessoire · Générer l’image de référenceAccessoire · Générer l’image de référence. POST /api/v1/works/{work_id}/props/{reference_id}/image-generations. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
variants | integer | — |
|
model | string | — |
|
prompt | string | — |
|
aspect_ratio | string | — | |
image_size | string | — |
|
quality | string | — |
|
background | string | — |
|
output_format | string | — |
|
reference_asset_ids | array | — |
|
slot | string | — |
|
variant_name | string | — |
|
current_asset_id | string | — |
|
{
"revision": 1
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{work_id}/scenes/{scene_id}/references/props/{reference_id}Accessoire · Associer à la scèneAccessoire · Associer à la scène. PUT /api/v1/works/{work_id}/scenes/{scene_id}/references/props/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/scenes/{scene_id}/references/props/{reference_id}Accessoire · Dissocier de la scèneAccessoire · Dissocier de la scène. DELETE /api/v1/works/{work_id}/scenes/{scene_id}/references/props/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/gridsGrille · Consulter (list)Grille · Consulter (list). GET /api/v1/works/{work_id}/grids. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"kind": "character",
"name": "example",
"description": "example",
"tags": [
"example"
],
"primary_asset_id": "11111111-1111-4111-8111-111111111111"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/gridsGrille · CréerGrille · Créer. POST /api/v1/works/{work_id}/grids. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | * |
|
description | string | — |
|
tags | array | — |
|
revision | integer | * |
{
"name": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/grids/{reference_id}Grille · ConsulterGrille · Consulter. GET /api/v1/works/{work_id}/grids/{reference_id}. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"kind": "character",
"name": "example",
"description": "example",
"tags": [
"example"
],
"primary_asset_id": "11111111-1111-4111-8111-111111111111"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/grids/{reference_id}Grille · ModifierGrille · Modifier. PATCH /api/v1/works/{work_id}/grids/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
name | string | * |
|
description | string | — |
|
tags | array | — |
|
revision | integer | * |
{
"name": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/grids/{reference_id}Grille · SupprimerGrille · Supprimer. DELETE /api/v1/works/{work_id}/grids/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/grids/{reference_id}/primary-imageGrille · Définir l’image de référenceGrille · Définir l’image de référence. PUT /api/v1/works/{work_id}/grids/{reference_id}/primary-image. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
asset_id | string | * |
|
current_asset_id | oneOf | * | |
revision | integer | * |
{
"asset_id": "11111111-1111-4111-8111-111111111111",
"current_asset_id": "11111111-1111-4111-8111-111111111111",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/grids/{reference_id}/image-generationsGrille · Générer l’image de référenceGrille · Générer l’image de référence. POST /api/v1/works/{work_id}/grids/{reference_id}/image-generations. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
variants | integer | — |
|
model | string | — |
|
prompt | string | — |
|
aspect_ratio | string | — | |
image_size | string | — |
|
quality | string | — |
|
background | string | — |
|
output_format | string | — |
|
reference_asset_ids | array | — |
|
slot | string | — |
|
variant_name | string | — |
|
current_asset_id | string | — |
|
{
"revision": 1
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{work_id}/scenes/{scene_id}/references/grids/{reference_id}Grille · Associer à la scèneGrille · Associer à la scène. PUT /api/v1/works/{work_id}/scenes/{scene_id}/references/grids/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/scenes/{scene_id}/references/grids/{reference_id}Grille · Dissocier de la scèneGrille · Dissocier de la scène. DELETE /api/v1/works/{work_id}/scenes/{scene_id}/references/grids/{reference_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
reference_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/episodesÉpisode · Consulter (list)Épisode · Consulter (list). GET /api/v1/works/{work_id}/episodes. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"number": 1,
"title": "example",
"raw_content": "example",
"description": "example"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/episodesCréer un épisodeCréer un épisode. POST /api/v1/works/{work_id}/episodes. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
title | string | * |
|
number | integer | — | |
raw_content | string | — |
|
description | string | — |
|
revision | integer | * |
{
"title": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/episodes/{episode_id}Épisode · ConsulterÉpisode · Consulter. GET /api/v1/works/{work_id}/episodes/{episode_id}. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
episode_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"number": 1,
"title": "example",
"raw_content": "example",
"description": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/episodes/{episode_id}Épisode · ModifierÉpisode · Modifier. PATCH /api/v1/works/{work_id}/episodes/{episode_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
episode_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
title | string | * |
|
number | integer | — | |
raw_content | string | — |
|
description | string | — |
|
revision | integer | * |
{
"title": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/episodes/{episode_id}Épisode · SupprimerÉpisode · Supprimer. DELETE /api/v1/works/{work_id}/episodes/{episode_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
episode_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/episodes/{episode_id}/scenesScène · Consulter (list)Scène · Consulter (list). GET /api/v1/works/{work_id}/episodes/{episode_id}/scenes. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
episode_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"episode_id": "11111111-1111-4111-8111-111111111111",
"number": 1,
"heading": "example",
"description": "example",
"video_prompt": "example"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/episodes/{episode_id}/scenesCréer une scèneCréer une scène. POST /api/v1/works/{work_id}/episodes/{episode_id}/scenes. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
episode_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
heading | string | * |
|
number | integer | — | |
description | string | — |
|
video_prompt | oneOf | — | |
revision | integer | * |
{
"heading": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/episodes/{episode_id}/scenes/{scene_id}Scène · ConsulterScène · Consulter. GET /api/v1/works/{work_id}/episodes/{episode_id}/scenes/{scene_id}. GET
Permission requise: projects:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
episode_idpath | string | * |
|
scene_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"episode_id": "11111111-1111-4111-8111-111111111111",
"number": 1,
"heading": "example",
"description": "example",
"video_prompt": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/episodes/{episode_id}/scenes/{scene_id}Scène · ModifierScène · Modifier. PATCH /api/v1/works/{work_id}/episodes/{episode_id}/scenes/{scene_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
episode_idpath | string | * |
|
scene_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
heading | string | * |
|
number | integer | — | |
description | string | — |
|
video_prompt | oneOf | — | |
revision | integer | * |
{
"heading": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/archive-importsImporter une archive ZIPImporter une archive ZIP. POST /api/v1/works/{work_id}/archive-imports. Use a verified ZIP asset_id and current revision. Preserves the archive and uses the same name-based material update rules as Studio. Check imported, failed and asset_ids on completion. Creation requires jobs:create, assets:read, assets:write and projects:write. Idempotency-Key; GET /api/v1/works/{work_id}/archive-imports/{import_id}
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
asset_id | string | * |
|
{
"revision": 1,
"asset_id": "11111111-1111-4111-8111-111111111111"
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"progress": {
"phase": "extracting",
"current": 0,
"total": 0
},
"imported": 0,
"failed": 0,
"asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{work_id}/archive-imports/{import_id}Consulter une importation ZIPConsulter une importation ZIP. GET /api/v1/works/{work_id}/archive-imports/{import_id}. Use a verified ZIP asset_id and current revision. Preserves the archive and uses the same name-based material update rules as Studio. Check imported, failed and asset_ids on completion. Creation requires jobs:create, assets:read, assets:write and projects:write. jobs:read
Permission requise: jobs:read
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
import_idpath | string | * |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"progress": {
"phase": "extracting",
"current": 0,
"total": 0
},
"imported": 0,
"failed": 0,
"asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/uploadsPréparer un lot de fichiersPréparer un lot de fichiers. POST /api/v1/works/{work_id}/uploads. Idempotency-Key + files (1–20) → PUT upload_url → POST /api/v1/uploads/{upload_id}/complete
Permission requise: assets:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
files | array | * |
|
files[].filename | string | * |
|
files[].mime_type | string | * |
|
files[].size_bytes | integer | * |
|
files[].sha256 | string | * |
{
"files": [
{
"filename": "example",
"mime_type": "text/plain",
"size_bytes": 1,
"sha256": "example"
}
]
}HTTP 201 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"items": [
{
"filename": "example",
"ticket": {
"id": "11111111-1111-4111-8111-111111111111",
"asset_id": "11111111-1111-4111-8111-111111111111",
"upload_url": "example",
"method": "PUT",
"content_type": "example",
"expires_at": "2026-09-20T00:00:00Z"
}
}
]
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/scenes/{scene_id}Scène · SupprimerScène · Supprimer. DELETE /api/v1/works/{work_id}/scenes/{scene_id}. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * |
{
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/episodes/{episode_id}/scene-orderRéordonner les scènesRéordonner les scènes. PUT /api/v1/works/{work_id}/episodes/{episode_id}/scene-order. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
episode_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
scene_ids | array | * |
|
revision | integer | * |
{
"scene_ids": [
"11111111-1111-4111-8111-111111111111"
],
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/scriptEnregistrer le scénarioEnregistrer le scénario. PUT /api/v1/works/{work_id}/script. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
text | string | * |
|
revision | integer | * |
{
"text": "example",
"revision": 1
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/scenes/{scene_id}/video-generationsGénérer la vidéo de scèneGénérer la vidéo de scène. POST /api/v1/works/{work_id}/scenes/{scene_id}/video-generations. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
anchor_asset_id | string | — |
|
reference_asset_ids | array | — |
|
model | string | — |
|
prompt | string | — |
|
duration_seconds | integer | * |
|
resolution | string | * |
|
aspect_ratio | string | * |
|
generate_audio | boolean | — |
{
"revision": 1,
"duration_seconds": 1,
"resolution": "example",
"aspect_ratio": "example"
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{work_id}/scenes/{scene_id}/selected-takeChoisir la prise finaleChoisir la prise finale. PUT /api/v1/works/{work_id}/scenes/{scene_id}/selected-take. revision + Idempotency-Key
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
scene_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
take_id | oneOf | * |
{
"revision": 1,
"take_id": "11111111-1111-4111-8111-111111111111"
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{work_id}/exportsExporter la vidéo finaleExporter la vidéo finale. POST /api/v1/works/{work_id}/exports. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
work_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
allow_partial | boolean | — |
|
selections | array | — |
|
selections[].scene_id | string | * |
|
selections[].asset_id | string | * |
|
{
"revision": 1
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{project_id}/plansVoir le plan et les crédits prévusVoyez ce qui sera produit et combien de crédits cela coûtera, sans lancer la production.
Permission requise: runs:write
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
template_id | string | * |
|
template_version | number | * |
|
project_revision | integer | * | |
episode_ids | array | * | Les identifiants des épisodes doivent être uniques.
|
mode | string | * |
|
output_profile | string | * |
|
{
"template_id": "episode-production",
"template_version": 1,
"project_revision": 1,
"episode_ids": [
"11111111-1111-4111-8111-111111111111"
],
"mode": "reviewed",
"output_profile": "sandbox-episode-v1"
}HTTP 201 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"project_revision": 1,
"template_id": "example",
"template_version": 1,
"executable": false,
"expires_at": "2026-09-20T00:00:00Z",
"budget_ceiling": {
"currency": "example",
"micro_units": "example"
},
"steps": [
{
"stage_key": "example",
"target_ids": [
"11111111-1111-4111-8111-111111111111"
],
"depends_on": [
"example"
],
"requires_review": false,
"max_cost": {
"currency": "example",
"micro_units": "example"
}
}
],
"unsupported_reasons": [
"example"
]
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}/runsLancer la productionLance la production depuis un plan_id existant et renvoie un ID d’exécution. Suivez l’état et les résultats avec getRun.
Permission requise: runs:write
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
plan_id | string | * |
|
client_reference | string | — |
|
{
"plan_id": "11111111-1111-4111-8111-111111111111"
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"plan_id": "11111111-1111-4111-8111-111111111111",
"version": 1,
"state": "queued",
"client_reference": "example",
"created_at": "2026-09-20T00:00:00Z",
"completed_at": "2026-09-20T00:00:00Z",
"budget_remaining": {
"currency": "example",
"micro_units": "example"
},
"committed_cost": {
"currency": "example",
"micro_units": "example"
},
"unresolved_cost": {
"currency": "example",
"micro_units": "example"
},
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
]
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{project_id}/workflow/commandsModifier la production StudioModifie les données de production : scénario, scènes, designs ou prises sélectionnées. Choisissez operation et envoyez input avec la dernière revision.
Permission requise: projects:write
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | operation = design.asset.set |
operation | string | * | operation = design.asset.set
|
input | object | * | operation = design.asset.set |
input.id | string | * | operation = design.asset.set
|
input.asset_id | string | * | operation = design.asset.set
|
input.kind | string | * | operation = design.asset.set
|
input.current_asset_id | oneOf | * | operation = design.asset.set |
input.name | string | — | operation = design.asset.set
|
revision | integer | * | operation = asset.delete |
operation | string | * | operation = asset.delete
|
input | object | * | operation = asset.delete |
input.id | string | * | operation = asset.delete
|
revision | integer | * | operation = trash.restore |
operation | string | * | operation = trash.restore
|
input | object | * | operation = trash.restore |
input.id | string | * | operation = trash.restore
|
input.entity_type | string | * | operation = trash.restore
|
revision | integer | * | operation = scene.duplicate |
operation | string | * | operation = scene.duplicate
|
input | object | * | operation = scene.duplicate |
input.id | string | * | operation = scene.duplicate
|
revision | integer | * | operation = project.settings.update |
operation | string | * | operation = project.settings.update
|
input | object | * | operation = project.settings.update |
input.title | string | * | operation = project.settings.update
|
input.tags | array | * | operation = project.settings.update
|
input.cover | string | * | operation = project.settings.update
|
input.aspect | string | * | operation = project.settings.update
|
input.resolution | string | * | operation = project.settings.update
|
input.style | string | * | operation = project.settings.update
|
input.style_prompt | string | * | operation = project.settings.update
|
revision | integer | * | operation = project.rename |
operation | string | * | operation = project.rename
|
input | object | * | operation = project.rename |
input.title | string | * | operation = project.rename
|
revision | integer | * | operation = project.state.set |
operation | string | * | operation = project.state.set
|
input | object | * | operation = project.state.set |
input.state | string | * | operation = project.state.set
|
revision | integer | * | operation = script.update |
operation | string | * | operation = script.update
|
input | object | * | operation = script.update |
input.text | string | * | operation = script.update
|
revision | integer | * | operation = script.bible.update |
operation | string | * | operation = script.bible.update
|
input | object | * | operation = script.bible.update |
input.logline | string | * | operation = script.bible.update
|
input.synopsis | string | * | operation = script.bible.update
|
revision | integer | * | operation = episode.save |
operation | string | * | operation = episode.save
|
input | object | * | operation = episode.save |
input.id | string | — | operation = episode.save
|
input.title | string | * | operation = episode.save
|
input.number | integer | — | operation = episode.save |
input.raw_content | string | — | operation = episode.save
|
input.description | string | — | operation = episode.save
|
revision | integer | * | operation = episode.delete |
operation | string | * | operation = episode.delete
|
input | object | * | operation = episode.delete |
input.id | string | * | operation = episode.delete
|
revision | integer | * | operation = scene.save |
operation | string | * | operation = scene.save
|
input | object | * | operation = scene.save |
input.id | string | — | operation = scene.save
|
input.episode_id | string | * | operation = scene.save
|
input.heading | string | * | operation = scene.save
|
input.number | integer | — | operation = scene.save |
input.description | string | — | operation = scene.save
|
input.video_prompt | oneOf | — | operation = scene.save |
revision | integer | * | operation = scene.delete |
operation | string | * | operation = scene.delete
|
input | object | * | operation = scene.delete |
input.id | string | * | operation = scene.delete
|
revision | integer | * | operation = scene.reorder |
operation | string | * | operation = scene.reorder
|
input | object | * | operation = scene.reorder |
input.episode_id | string | * | operation = scene.reorder
|
input.scene_ids | array | * | operation = scene.reorder
|
revision | integer | * | operation = design.save |
operation | string | * | operation = design.save
|
input | object | * | operation = design.save |
input.id | string | — | operation = design.save
|
input.kind | string | * | operation = design.save
|
input.name | string | * | operation = design.save
|
input.description | string | — | operation = design.save
|
input.tags | array | — | operation = design.save
|
revision | integer | * | operation = design.delete |
operation | string | * | operation = design.delete
|
input | object | * | operation = design.delete |
input.id | string | * | operation = design.delete
|
revision | integer | * | operation = design.voice.set |
operation | string | * | operation = design.voice.set
|
input | object | * | operation = design.voice.set |
input.id | string | * | operation = design.voice.set
|
input.asset_id | oneOf | * | operation = design.voice.set |
revision | integer | * | operation = design.asset.detach |
operation | string | * | operation = design.asset.detach
|
input | object | * | operation = design.asset.detach |
input.id | string | * | operation = design.asset.detach
|
input.asset_id | string | * | operation = design.asset.detach
|
input.kind | string | * | operation = design.asset.detach
|
revision | integer | * | operation = design.asset.restore |
operation | string | * | operation = design.asset.restore
|
input | object | * | operation = design.asset.restore |
input.id | string | * | operation = design.asset.restore
|
input.current_asset_id | string | * | operation = design.asset.restore
|
input.restore_asset_id | string | * | operation = design.asset.restore
|
input.kind | string | * | operation = design.asset.restore
|
revision | integer | * | operation = design.variant.rename |
operation | string | * | operation = design.variant.rename
|
input | object | * | operation = design.variant.rename |
input.id | string | * | operation = design.variant.rename
|
input.asset_id | string | * | operation = design.variant.rename
|
input.name | string | * | operation = design.variant.rename
|
revision | integer | * | operation = scene.design.attach |
operation | string | * | operation = scene.design.attach
|
input | object | * | operation = scene.design.attach |
input.scene_id | string | * | operation = scene.design.attach
|
input.design_id | string | * | operation = scene.design.attach
|
revision | integer | * | operation = scene.design.detach |
operation | string | * | operation = scene.design.detach
|
input | object | * | operation = scene.design.detach |
input.scene_id | string | * | operation = scene.design.detach
|
input.design_id | string | * | operation = scene.design.detach
|
revision | integer | * | operation = cut.take.select |
operation | string | * | operation = cut.take.select
|
input | object | * | operation = cut.take.select |
input.scene_id | string | * | operation = cut.take.select
|
input.asset_id | oneOf | * | operation = cut.take.select |
revision | integer | * | operation = take.delete |
operation | string | * | operation = take.delete
|
input | object | * | operation = take.delete |
input.scene_id | string | * | operation = take.delete
|
input.asset_id | string | * | operation = take.delete
|
{
"revision": 1,
"operation": "design.asset.set",
"input": {
"id": "11111111-1111-4111-8111-111111111111",
"asset_id": "11111111-1111-4111-8111-111111111111",
"kind": "primary",
"current_asset_id": "11111111-1111-4111-8111-111111111111"
}
}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"work_id": "11111111-1111-4111-8111-111111111111",
"changed_id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"studio_url": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/works/{project_id}/cut/exportsExporter le montage StudioAssemble les vidéos dans l’ordre des épisodes et scènes. selections choisit les prises ; allow_partial autorise les scènes manquantes. Suivez l’export avec getJob.
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
allow_partial | boolean | — |
|
selections | array | — |
|
selections[].scene_id | string | * |
|
selections[].asset_id | string | * |
|
{
"revision": 1
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{project_id}/storyboard/videosGénérer la vidéo d’une scèneGénère une prise vidéo pour scene_id avec le modèle, la durée et la résolution choisis. anchor_asset_id définit l’image initiale. Suivez le job avec getJob.
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
scene_id | string | * |
|
anchor_asset_id | string | — |
|
reference_asset_ids | array | — |
|
model | string | — |
|
prompt | string | — |
|
duration_seconds | integer | * |
|
resolution | string | * |
|
aspect_ratio | string | * |
|
generate_audio | boolean | — |
{
"revision": 1,
"scene_id": "11111111-1111-4111-8111-111111111111",
"duration_seconds": 1,
"resolution": "example",
"aspect_ratio": "example"
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/works/{project_id}/designs/imagesGénérer une image de personnage, de décor, d’accessoire ou de grilleGénère une à quatre images pour design_id avec un prompt et des références facultatives. Choisissez l’image principale ou une variante, puis suivez getJob.
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
project_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
revision | integer | * | |
design_id | string | * |
|
variants | integer | — |
|
model | string | — |
|
prompt | string | — |
|
aspect_ratio | string | — | |
image_size | string | — |
|
quality | string | — |
|
background | string | — |
|
output_format | string | — |
|
reference_asset_ids | array | — |
|
slot | string | — |
|
variant_name | string | — |
|
current_asset_id | string | — |
|
{
"revision": 1,
"design_id": "11111111-1111-4111-8111-111111111111"
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/uploadsObtenir une adresse pour envoyer un fichierEnregistre les métadonnées et renvoie upload_url. Envoyez le fichier par PUT, puis confirmez la fin du transfert. Formats : TXT, Markdown, DOCX, PNG, JPEG, WebP, AVIF, WAV et ZIP. Les limites partagent les paramètres de Studio : consultez upload_limits dans GET /capabilities. Scénarios : 5 000 000 caractères maximum. Aucun séparateur de chemin dans le nom. WAV en PCM ou IEEE float.
Permission requise: assets:write
| Nom | Type | Requis | Description |
|---|---|---|---|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
project_id | string | * |
|
filename | string | * |
|
mime_type | string | * |
|
size_bytes | integer | * |
|
sha256 | string | * |
{
"project_id": "11111111-1111-4111-8111-111111111111",
"filename": "example",
"mime_type": "text/plain",
"size_bytes": 1,
"sha256": "example"
}HTTP 201 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"asset_id": "11111111-1111-4111-8111-111111111111",
"upload_url": "example",
"method": "PUT",
"content_type": "example",
"expires_at": "2026-09-20T00:00:00Z"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/uploads/{upload_id}/completeSignaler que le fichier est bien envoyéVérifie le fichier transféré par rapport aux métadonnées déclarées et renvoie l’asset utilisable en production.
Permission requise: assets:write
| Nom | Type | Requis | Description |
|---|---|---|---|
upload_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
{}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"state": "pending",
"mime_type": "example",
"size_bytes": 0,
"download_url": "example",
"expires_at": "2026-09-20T00:00:00Z"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/uploads/{upload_id}/contentEnvoyer le contenu du fichierEnvoie les octets du fichier en application/octet-stream pour un transfert préparé. Appelez completeUpload après l’envoi.
Permission requise: assets:write
| Nom | Type | Requis | Description |
|---|---|---|---|
upload_idpath | string | * |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"uploaded": true
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/assets/{asset_id}Voir un résultat et son lien de téléchargementRenvoie les métadonnées et, si disponible, un download_url signé. Téléchargez le fichier avant son expiration.
Permission requise: assets:read
| Nom | Type | Requis | Description |
|---|---|---|---|
asset_idpath | string | * |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"state": "pending",
"mime_type": "example",
"size_bytes": 0,
"download_url": "example",
"expires_at": "2026-09-20T00:00:00Z"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/downloads/{asset_id}Télécharger le fichier terminéTélécharge le fichier via le download_url signé complet renvoyé par getAsset. Le lien expire après cinq minutes.
| Nom | Type | Requis | Description |
|---|---|---|---|
asset_idpath | string | * |
|
expiresquery | string | * | |
signaturequery | string | * |
HTTP 200 Octets du fichier
application/octet-stream · Octets du fichier
/api/v1/runsVoir la liste des productionsListe les exécutions avec des filtres par projet, état, client_reference et période.
Permission requise: runs:read
| Nom | Type | Requis | Description |
|---|---|---|---|
cursorquery | string | — |
|
limitquery | integer | — |
|
project_idquery | string | — |
|
statequery | string | — |
|
client_referencequery | string | — |
|
fromquery | string | — |
|
toquery | string | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"plan_id": "11111111-1111-4111-8111-111111111111",
"version": 1,
"state": "queued",
"client_reference": "example",
"created_at": "2026-09-20T00:00:00Z",
"completed_at": "2026-09-20T00:00:00Z",
"budget_remaining": {
"currency": "example",
"micro_units": "example"
},
"committed_cost": {
"currency": "example",
"micro_units": "example"
},
"unresolved_cost": {
"currency": "example",
"micro_units": "example"
},
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
]
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/runs/{run_id}Voir l’avancement d’une productionRenvoie l’état, la version et les résultats disponibles d’une exécution. Utilisez cette version pour soumettre une décision.
Permission requise: runs:read
| Nom | Type | Requis | Description |
|---|---|---|---|
run_idpath | string | * |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"plan_id": "11111111-1111-4111-8111-111111111111",
"version": 1,
"state": "queued",
"client_reference": "example",
"created_at": "2026-09-20T00:00:00Z",
"completed_at": "2026-09-20T00:00:00Z",
"budget_remaining": {
"currency": "example",
"micro_units": "example"
},
"committed_cost": {
"currency": "example",
"micro_units": "example"
},
"unresolved_cost": {
"currency": "example",
"micro_units": "example"
},
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
]
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/runs/{run_id}/stepsVoir l’avancement étape par étapeListe les étapes d’une exécution pour identifier celles en attente, en cours ou terminées.
Permission requise: runs:read
| Nom | Type | Requis | Description |
|---|---|---|---|
run_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"stage_key": "example",
"target_id": "11111111-1111-4111-8111-111111111111",
"job_id": "11111111-1111-4111-8111-111111111111",
"state": "blocked",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example",
"ordinal": 1
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/runs/{run_id}/eventsVoir ce qui s’est passé pendant la productionListe les événements, tels que changements d’état et demandes de validation, pour retracer la production.
Permission requise: runs:read
| Nom | Type | Requis | Description |
|---|---|---|---|
run_idpath | string | * |
|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"items": [
{
"event_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"sequence": 1,
"type": "run.state_changed",
"state": "queued",
"step_id": "11111111-1111-4111-8111-111111111111",
"created_at": "2026-09-20T00:00:00Z"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/runs/{run_id}/decisionsValider la suite ou arrêterSoumet une décision : approve, stop, resume, cancel_remaining ou retry_result. Envoyez la dernière version dans expected_version. retry_result reprend uniquement la consultation du résultat vidéo enregistré. Fournissez expected_version à jour et step_id. Le travail et la réservation sont conservés, sans nouvelle génération. Limite : 24 heures après admission. Les autres résultats ou usages incertains nécessitent une vérification opérateur.
Permission requise: runs:write
| Nom | Type | Requis | Description |
|---|---|---|---|
run_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
action | string | * | retry_result resumes result polling for an accepted Studio video on the original reservation; requires step_id and expected_version. It never resubmits generation. Unconfirmed usage without a saved video task requires operator review.
|
expected_version | integer | * | |
step_id | string | — |
|
selected_asset_ids | array | — |
|
{
"action": "approve",
"expected_version": 1
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"plan_id": "11111111-1111-4111-8111-111111111111",
"version": 1,
"state": "queued",
"client_reference": "example",
"created_at": "2026-09-20T00:00:00Z",
"completed_at": "2026-09-20T00:00:00Z",
"budget_remaining": {
"currency": "example",
"micro_units": "example"
},
"committed_cost": {
"currency": "example",
"micro_units": "example"
},
"unresolved_cost": {
"currency": "example",
"micro_units": "example"
},
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
]
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/jobs/{job_id}Voir l’état et le résultat d’une tâcheRenvoie l’état du job et les ID des assets produits. Après achèvement, utilisez getAsset pour récupérer les fichiers.
Permission requise: jobs:read
| Nom | Type | Requis | Description |
|---|---|---|---|
job_idpath | string | * |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/jobs/{job_id}/buildConsulter la progression et les sourcesRenvoie l’étape, les messages de progression et les sources d’une construction de scénario, avec le texte préparé pour le traitement.
Permission requise: jobs:read, assets:read
| Nom | Type | Requis | Description |
|---|---|---|---|
job_idpath | string | * |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"state": "example",
"stage": "example",
"messages": [
{
"id": "11111111-1111-4111-8111-111111111111",
"role": "assistant",
"stage": "example",
"content": "example",
"status": "streaming",
"seq": 1,
"created_at": "example",
"updated_at": "example"
}
],
"sources": [
{
"id": "11111111-1111-4111-8111-111111111111",
"name": "example",
"filterMode": "prompt_index",
"sourceText": "example",
"llmText": "example",
"originalChars": 1,
"preparedChars": 1
}
]
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/jobsLancer une seule fonction tout de suiteExécutez une seule fonction au lieu de toute la production. analyze_script lit le scénario et crée les plans, generate_image crée les images de personnages, décors, accessoires et plans, generate_video crée la vidéo d’un plan dont vous avez choisi l’image, et assemble_video assemble un épisode dont tous les plans ont une vidéo. Envoyez toujours la dernière revision du projet. Une requête Live réserve les crédits à l’avance.
Permission requise: jobs:create
| Nom | Type | Requis | Description |
|---|---|---|---|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
project_id | string | * |
|
project_revision | integer | * | |
target_id | string | * |
|
type | string | * |
|
profile_id | string | * |
|
client_reference | string | — |
|
{
"project_id": "11111111-1111-4111-8111-111111111111",
"project_revision": 1,
"target_id": "11111111-1111-4111-8111-111111111111",
"type": "analyze_script",
"profile_id": "example"
}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"state": "queued",
"output_asset_ids": [
"11111111-1111-4111-8111-111111111111"
],
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/requestsVoir les requêtes que vous avez envoyéesListe les appels API avec statut HTTP et durée. Filtrez par projet et période pour examiner les requêtes.
Permission requise: requests:read
| Nom | Type | Requis | Description |
|---|---|---|---|
cursorquery | string | — |
|
limitquery | integer | — |
|
fromquery | string | — |
|
toquery | string | — |
|
project_idquery | string | — |
|
run_idquery | string | — |
|
job_idquery | string | — |
|
key_idquery | string | — |
|
status_codequery | integer | — |
|
methodquery | string | — |
|
route_templatequery | string | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"items": [
{
"request_id": "11111111-1111-4111-8111-111111111111",
"created_at": "2026-09-20T00:00:00Z",
"method": "GET",
"route_template": "example",
"status_code": 100,
"duration_ms": 0,
"actor_kind": "api_key",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"job_id": "11111111-1111-4111-8111-111111111111",
"replayed": false,
"error_code": "example"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/requests/{request_id}Voir une requête envoyéeRetrouve un appel par request_id avec son statut HTTP, sa durée et l’exécution ou le job associé.
Permission requise: requests:read
| Nom | Type | Requis | Description |
|---|---|---|---|
request_idpath | string | * |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"request_id": "11111111-1111-4111-8111-111111111111",
"created_at": "2026-09-20T00:00:00Z",
"method": "GET",
"route_template": "example",
"status_code": 100,
"duration_ms": 0,
"actor_kind": "api_key",
"work_id": "11111111-1111-4111-8111-111111111111",
"run_id": "11111111-1111-4111-8111-111111111111",
"job_id": "11111111-1111-4111-8111-111111111111",
"replayed": false,
"error_code": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/usageVoir votre consommation de créditsRenvoie les totaux d’utilisation sur la période demandée, avec les montants réservés et facturés.
Permission requise: usage:read
Aucun paramètre
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"period_start": "2026-09-20T00:00:00Z",
"period_end": "2026-09-20T00:00:00Z",
"as_of": "2026-09-20T00:00:00Z",
"http_requests": 0,
"runs": 0,
"jobs": 0,
"reserved": {
"currency": "example",
"micro_units": "example"
},
"committed": {
"currency": "example",
"micro_units": "example"
},
"unresolved": {
"currency": "example",
"micro_units": "example"
},
"remaining": {
"currency": "example",
"micro_units": "example"
},
"amount_basis": "partner_limit",
"billing_mode": "pilot"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/webhook-endpointsVoir vos adresses de notification WebhookListe les URL Webhook enregistrées, les événements suivis et leur état d’activation.
Permission requise: webhooks:read
| Nom | Type | Requis | Description |
|---|---|---|---|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"url": "example",
"work_ids": [
"11111111-1111-4111-8111-111111111111"
],
"events": [
"run.state_changed"
],
"enabled": false,
"verified": false,
"secret_version": 1,
"created_at": "2026-09-20T00:00:00Z"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/webhook-endpointsAjouter une adresse WebhookEnregistre une URL Webhook pour recevoir les événements de production sélectionnés pour les projets indiqués.
Permission requise: webhooks:write
| Nom | Type | Requis | Description |
|---|---|---|---|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
| Nom | Type | Requis | Description |
|---|---|---|---|
url | string | * |
|
project_ids | array | * |
|
events | array | * |
|
{
"url": "example",
"project_ids": [
"11111111-1111-4111-8111-111111111111"
],
"events": [
"run.state_changed"
]
}HTTP 201 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"endpoint": {
"id": "11111111-1111-4111-8111-111111111111",
"url": "example",
"work_ids": [
"11111111-1111-4111-8111-111111111111"
],
"events": [
"run.state_changed"
],
"enabled": false,
"verified": false,
"secret_version": 1,
"created_at": "2026-09-20T00:00:00Z"
}
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/webhook-endpoints/{endpoint_id}Modifier une adresse WebhookActive ou désactive un Webhook, ou modifie les événements reçus.
Permission requise: webhooks:write
| Nom | Type | Requis | Description |
|---|---|---|---|
endpoint_idpath | string | * |
|
If-Matchheader | string | * | Utilisez le dernier ETag, guillemets compris. |
| Nom | Type | Requis | Description |
|---|---|---|---|
enabled | boolean | — | |
events | array | — |
|
{}HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"url": "example",
"work_ids": [
"11111111-1111-4111-8111-111111111111"
],
"events": [
"run.state_changed"
],
"enabled": false,
"verified": false,
"secret_version": 1,
"created_at": "2026-09-20T00:00:00Z"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/webhook-deliveriesVoir les envois Webhook effectuésListe les tentatives de livraison Webhook et leur état pour vérifier la réception des notifications.
Permission requise: webhooks:read
| Nom | Type | Requis | Description |
|---|---|---|---|
cursorquery | string | — |
|
limitquery | integer | — |
|
HTTP 200 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"items": [
{
"id": "11111111-1111-4111-8111-111111111111",
"endpoint_id": "11111111-1111-4111-8111-111111111111",
"event_id": "11111111-1111-4111-8111-111111111111",
"state": "pending",
"attempt": 0,
"http_status": 1,
"next_attempt_at": "2026-09-20T00:00:00Z",
"created_at": "2026-09-20T00:00:00Z"
}
],
"next_cursor": "example"
}
}En-têtes de réponse: X-Request-Id · ETag
/api/v1/webhook-deliveries/{delivery_id}/redeliverRenvoyer un WebhookDemande une nouvelle livraison de la notification Webhook désignée par delivery_id.
Permission requise: webhooks:write
| Nom | Type | Requis | Description |
|---|---|---|---|
delivery_idpath | string | * |
|
Idempotency-Keyheader | string | * | Réessayez avec la même Idempotency-Key et le même corps.
|
{}HTTP 202 Succès
{
"request_id": "11111111-1111-4111-8111-111111111111",
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"endpoint_id": "11111111-1111-4111-8111-111111111111",
"event_id": "11111111-1111-4111-8111-111111111111",
"state": "pending",
"attempt": 0,
"http_status": 1,
"next_attempt_at": "2026-09-20T00:00:00Z",
"created_at": "2026-09-20T00:00:00Z"
}
}En-têtes de réponse: X-Request-Id · ETag · Retry-After
/api/v1/openapi.jsonTélécharger la spécification de l’APITélécharge la spécification OpenAPI avec les chemins, champs de requête et schémas de réponse.
Aucun paramètre
HTTP 200 Document OpenAPI
{}error.code 71Une réponse 2xx signifie que la requête est bien passée. 201 veut dire qu’une ressource a été créée, 202 que la demande est acceptée et encore en cours : il n’y a pas encore de résultat, consultez l’état du job pour savoir quand c’est terminé. Les réponses réussies contiennent request_id et data. Seuls le téléchargement de fichiers et la spécification de l’API font exception. En cas d’échec, tous les endpoints renvoient le même objet error. Faites vos conditions sur error.code ; message explique la cause et la marche à suivre pour une personne. C’est retryable qui dit si vous pouvez renvoyer la requête. Ne réessayez automatiquement que s’il vaut true, et attendez le délai indiqué par retry_after_seconds ou l’en-tête Retry-After. Pour réessayer un POST, renvoyez la même Idempotency-Key et le même corps afin de ne rien facturer ni créer deux fois. Si un error.code vous est inconnu, traitez-le à partir du statut HTTP et de retryable. Indiquez request_id lorsque vous contactez le support. Les échecs survenus après l’acceptation d’un job apparaissent dans son état et son résultat, pas dans cette réponse.
{
"request_id": "11111111-1111-4111-8111-111111111111",
"error": {
"code": "INVALID_REQUEST",
"message": "Invalid input. Check the required fields, types and values.",
"retryable": false
}
}| error.code | HTTP | Description |
|---|---|---|
INVALID_REFERENCE | 422 | A selected reference is unavailable or does not belong to this project. Select a ready image from this project. |
MODEL_UNAVAILABLE | 422 | The selected model is unavailable. Refresh the model list and select another model. |
MODEL_POLICY_REQUIRED | 503 | No default model policy is configured. Specify a model or ask the administrator to configure the task policy. |
BUILD_REPLAY_CONFLICT | 409 | The build inputs changed. Review the saved build before continuing. |
INVALID_REQUEST | 400,422 | Invalid input. Check the required fields, types and values. |
INVALID_API_KEY | 401 | Invalid credentials or download signature. Check the API key or obtain a new download URL. |
INSUFFICIENT_SCOPE | 403 | Permission denied. Check the key scopes and project access. |
PARTNER_BLOCKED | 403 | Account blocked. Contact support. |
PARTNER_PAUSED | 403 | Account paused. Ask the administrator to resume access. |
RESOURCE_NOT_FOUND | 404 | Resource unavailable. Check its ID and access permissions. |
METHOD_NOT_ALLOWED | 405 | Unsupported HTTP method. Use the documented method. |
REQUEST_TIMEOUT | 408 | Request body timed out. Check the connection and upload size. |
IDEMPOTENCY_KEY_REQUIRED | 400 | Provide a valid Idempotency-Key header. |
IDEMPOTENCY_CONFLICT | 409 | This Idempotency-Key belongs to a different request. Reuse it only with the original request. |
IDEMPOTENCY_KEY_EXPIRED | 409 | Idempotency record expired. Check the original result before starting a new operation. |
PRECONDITION_FAILED | 412 | Provide the latest quoted ETag in If-Match. |
REVISION_CONFLICT | 409 | Resource changed. Read the latest revision before updating. |
RESOURCE_CONFLICT | 409 | Resource conflicts with existing data. Review the current resource. |
INVALID_TRANSITION | 409 | Action is unavailable in the current state. Read the latest state. |
RUN_IN_PROGRESS | 409 | A run is in progress. Check its status before starting another. |
JOB_RUNNING | 409 | A job is running. Wait for completion before editing. |
PLAN_EXPIRED | 409 | Plan expired. Create a new plan and review its quote. |
INSUFFICIENT_CREDITS | 402 | Insufficient credits. Check the balance and required credits. |
BUDGET_EXCEEDED | 409,429 | Budget limit exceeded. Review usage and the configured budget. |
RATE_LIMITED | 429 | Request rate exceeded. Follow retryable and Retry-After before retrying. |
CAPACITY_EXCEEDED | 429 | Capacity limit exceeded. Reduce the workload or wait for active work to finish. |
PAYLOAD_TOO_LARGE | 413 | Request body too large. Reduce it to the documented limit. |
UNSUPPORTED_MEDIA_TYPE | 415 | Unsupported content type or encoding. Use the documented Content-Type without Content-Encoding. |
UPLOAD_TOO_LARGE | 422 | Uploaded content exceeds its processing limit. Reduce the file size. |
UPLOAD_NOT_VERIFIED | 422 | Upload is incomplete, expired or invalid. Check the upload and verification steps. |
ASSET_KIND_MISMATCH | 422 | Asset type does not match the operation. Select a compatible asset. |
SELECTED_IMAGE_REQUIRED | 422 | Select a valid image before generating video. |
SELECTED_VIDEO_REQUIRED | 422 | Select valid videos for the requested shots before assembly. |
REFERENCE_LIMIT_EXCEEDED | 422 | Too many reference assets. Reduce them to the model limit. |
REFERENCE_IMAGE_REQUIRED | 422 | This model requires a reference image. Add an image or select a text-to-image model. |
INVALID_GENERATION_OPTIONS | 422 | Generation options are invalid. Check the model capabilities. |
PROMPT_REQUIRED | 422 | Provide a generation prompt. |
SCRIPT_TEXT_REQUIRED | 422 | Provide script text before starting this operation. |
SCENES_REQUIRED | 422 | Create scenes before starting this operation. |
VARIANT_NAME_REQUIRED | 422 | Provide a variant name. |
EPISODE_ALREADY_STRUCTURED | 409 | Episode already has shots. Review its existing structure. |
ONE_SCRIPT_PER_PROJECT | 409 | This project supports one script. Use the existing script. |
MULTIPLE_SCRIPTS_REQUIRE_REVIEW | 409 | Multiple scripts need review before continuing. |
NATIVE_CONTENT_ALREADY_EXISTS | 409 | Studio content already exists. Review it before continuing. |
LIVE_PROJECT_REQUIRED | 409 | This operation requires a live project. |
STUDIO_MIGRATION_REQUIRED | 409 | Project needs Studio migration. Contact support. |
UNSUPPORTED_CAPABILITY | 422 | Unsupported operation or profile. Check GET /capabilities. |
CAPABILITY_UNAVAILABLE | 503 | Capability currently unavailable. Check GET /capabilities. |
API_NOT_ACCEPTING | 503 | New requests are paused. Check service availability. |
DEPENDENCY_UNAVAILABLE | 503 | A required service is unavailable. Follow the retry guidance or contact support. |
PRICING_UNAVAILABLE | 503 | Pricing unavailable. A valid quote is required to proceed. |
MEDIA_TOOLS_UNAVAILABLE | 503 | Media processing unavailable. Contact support. |
STORAGE_READ_FAILED | 503 | Could not read the stored asset. Contact support with request_id. |
STORAGE_WRITE_FAILED | 503 | Could not save the asset. Check the result before retrying. |
INTERNAL_ERROR | 500 | Internal error. Follow retry guidance; include request_id when contacting support. |
RESPONSE_CONTRACT_VIOLATION | 500 | Server response validation failed. Contact support with request_id. |
INVALID_EXECUTION_CONTEXT | 500 | Execution context is invalid. Contact support. |
RETRY_TRANSACTION | 503 | Transaction could not complete. Follow the response retry guidance. |
CLAIM_LOST | 409 | Execution ownership changed. Check the current job state. |
PROVIDER_TIMEOUT | 504 | Generation service timed out. Check the existing job before submitting again. |
PROVIDER_TERMINAL_FAILURE | 422 | Generation failed. Review the job result and inputs. |
PROVIDER_RESULT_UNAVAILABLE | 502 | Generation result unavailable. Check the existing job and recovery options. |
INVALID_RESULT | 422,503 | Result failed validation. Review the job or contact support. |
RESULT_TOO_LARGE | 422 | Result exceeds the processing limit. Reduce the requested output. |
EXPORT_TOO_LARGE | 422 | Export exceeds the size limit. Reduce the export selection. |
RECOVERY_BACKOFF | 409 | Existing result recovery is delayed. Check again later; do not resubmit generation. |
VIDEO_RECOVERY_REVIEW_REQUIRED | 503 | The original video task needs scheduled recovery or operator review. Do not resubmit generation. |
RESULT_RECOVERY_REQUIRED | 409,503 | Existing result needs recovery. Check the run recovery options before resubmitting. |
RESULT_NOT_RECOVERABLE | 409 | Result cannot be recovered through this action. Review the run or contact support. |
RECOVERY_CAPACITY_EXCEEDED | 409 | Recovery limit reached. Contact support before further recovery attempts. |
USAGE_RECOVERY_REQUIRED | 503 | Usage needs reconciliation. Contact support; do not resubmit generation blindly. |