KozeKoze
← Retour au blog
Tutoriel2026ćčŽ6月28æ—„Â·çźĄç†ć‘˜

Documentation relative aux appels d'API de génération vidéo

Kozeai fournit une interface de gĂ©nĂ©ration vidĂ©o compatible avec OpenAI Sora, utilisant un mode de tĂąche asynchrone : soumettez d’abord la tĂąche pour obtenir l’`task_id`, puis interrogez l’état de la tĂąche et tĂ©lĂ©chargez le contenu vidĂ©o une fois celle-ci terminĂ©e.

Documentation de l'appel d'API de génération vidéo

kozeai fournit une interface de génération vidéo compatible avec OpenAI Sora, utilisant un mode de tùche **asynchrone** : soumettez d'abord la tùche pour obtenir l'identifiant `task_id`, puis interrogez son état et téléchargez le contenu vidéo une fois la tùche terminée.

Authentification

Toutes les requĂȘtes sont authentifiĂ©es Ă  l'aide de `Authorization: Bearer `. Utilisez ceci aprĂšs avoir créé un jeton API dans la console.

export KOZEAI_API_KEY="sk-your-token"

export KOZEAI_BASE_URL="https://api.kozeai.com"

Interface Aperçu

mp4
Méthode Chemin Objectif
POST /v1/videos/generations Créer une tùche vidéo
GET /v1/videos/{task_id} Consulter l'état de la tùche
GET /v1/videos/{task_id}/content Jouer en ligne ou Télécharger

L'identifiant de la tùche, sous la forme task_12345, renvoyé par l'interface de soumission, appartient uniquement à l'utilisateur actuel.


1. Créer une tùche vidéo

curl "$KOZEAI_BASE_URL/v1/videos/generations" \

-H "Authorization: Bearer $KOZEAI_API_KEY" \

-H "Content-Type: application/json" \

-d '{

"model": "video-ds-2.0",

"prompt": "Une vidéo cinématographique au format 9:16 d'un chat courant sous un soleil chaud",

"seconds": 15,

"aspect_ratio": "9:16"

}'

ParamĂštres de la requĂȘte

ParamĂštres Type Obligatoire Description
model string Oui Nom du modÚle vidéo, par exemple video-ds-2.0
prompt string Oui Description du contenu vidéo
secondes entier Non Durée de la vidéo (secondes), basée sur la plage de compatibilité du modÚle en amont
ratio_aspect chaßne de caractÚres Non Format d'image, couramment utilisé : 9:16, 16:9, 1:1
images tableau Non URL ou base64
videos array Non URL de la vidéo de référence
audios array Non URL de l'audio de référence

Différents modÚles en amont peuvent prendre en charge différents paramÚtres. Les paramÚtres non listés seront transmis conformément au protocole en amont.

Vidéo générée à partir d'images (avec images de référence)

Transmettez le tableau images pour générer une vidéo à partir des images de référence :

curl &34;$KOZEAI_BASE_URL/v1/videos/generations&34; \

-H &34;Authorization: Bearer $KOZEAI_API_KEY&34; \

-H &34;Content-Type: application/json&34; \

-d {

model: video-ds-2.0,

prompt: Utilisez le style d'image de référence et créez une vidéo produit fluide,

seconds: 15,

aspect_ratio: 9:16,

images: ["https://example.com/input.png"],

"videos": ["https://example.com/input.mp4"],

"audios": ["https://example.com/input.mp3"]

}'

  • images prend en charge les URL d'images ou le base64.
  • videos / audios sont des documents de rĂ©fĂ©rence facultatifs.
  • Lors d'un appel via l'interface de saisie semi-automatique du chat (voir fin de l'article), il suffit de joindre l'image au message ; le systĂšme la convertira automatiquement en paramĂštre images.

Réponse (soumission réussie)

{

"id": "task_12345",

"task_id": "task_12345",

"object": "video",

"model": "video-ds-2.0",

"status": "queued",

"progress": 0,

"created_at": 

}

status Valeurs : queued (en file d’attente), in_progress (en cours), completed (terminĂ©), failed (Ă©chouĂ©).


2. État de la tñche d'interrogation

Utilisez l'id renvoyé par la soumission pour interroger, avec un intervalle recommandé de 3 à 5 secondes.

curl "$KOZEAI_BASE_URL/v1/videos/task_12345" \

-H "Authorization: Bearer $KOZEAI_API_KEY"

Réponse (génération)

{

"id": "task_12345",

"object": "video",

"model": "video-ds-2.0",

"status": "in_progress",

"progress": 45,

"created_at": 1751000000
}

Réponse (Terminée)

{

"id": "task_12345",

"object": "video",

"model": "video-ds-2.0",

"status": "completed",

"progress": 100,

"created_at": 1751000000,

Une fois l'opĂ©ration terminĂ©e, `metadata.content_url` fournit l'adresse d'accĂšs direct Ă  la vidĂ©o ; elle peut Ă©galement ĂȘtre tĂ©lĂ©chargĂ©e via l'interface de contenu ci-dessous.

Réponse (échec)

{

"id": "task_12345",

"object": "video",

"status": "failed",

"error": { "message": "Raison de l'échec" }
}

Télécharger le contenu vidéo
curl -L "$KOZEAI_BASE_URL/v1/videos/task_12345/content" \

-H "Authorization: Bearer $KOZEAI_API_KEY" \

-o result.mp4

  • Renvoie une erreur 409 (Conflit) si la tĂąche n'est pas terminĂ©e (Toujours en file d'attente/en cours de gĂ©nĂ©ration).
  • Prend en charge le tĂ©lĂ©chargement segmentĂ© et la lecture par glisser-dĂ©poser grĂące Ă  l'en-tĂȘte de requĂȘte .
  • Renvoie .

Exemple complet

JavaScript (fetch + polling)

const BASE = process.env.KOZEAI_BASE_URL;

const KEY = process.env.KOZEAI_API_KEY;

const headers = { Authorization: `Bearer ${KEY}` };

// 1. Soumettre la tĂąche

const submit = await fetch(`${BASE}/v1/videos/generations`, {

method: POST,

headers: { ...headers, Content-Type: application/json },

body: JSON.stringify({

model: video-ds-2.0,

prompt: Une vidéo commerciale fluide d'un flacon de parfum sur verre,

seconds: 15,

aspect_ratio: 9:16,

}),

});

const task = await submit.json();

const taskId = task.id;

// 2. Interroger jusqu'Ă  la fin

async function poll() {

while (true) {

const res = await fetch(`${BASE}/v1/videos/${taskId}`, { headers });

const data = await res.json();

if (data.status === "completed") return data;

if (data.status === "failed") throw new Error(data.error?.message || "failed");

await new Promise((r) => setTimeout(r, 5000));

}
} const done = await poll();

// 3. Récupérer l'adresse de la vidéo

console.log('Adresse de la vidéo :', done.metadata?.content_url

|| `${BASE}/v1/videos/${taskId}/content`);

Python (requĂȘtes + interrogation)

import os, time, requests

BASE = os.environ["KOZEAI_BASE_URL"]

KEY = os.environ["KOZEAI_API_KEY"]

headers = {"Authorization": f"Bearer {KEY}"}

# 1. Soumettre la tĂąche

resp = requests.post(

f{BASE}/v1/videos/generations",

headers=headers,

json={

model": video-ds-2.0",

prompt": Une vidéo cinématographique de 9 min 16 s montrant un chat courant dans un environnement chaud lumiÚre_du_soleil,

secondes : 15,

rapport_aspect : 9:16,

},

)
id_tĂąche = resp.json()[id]

# 2. Interrogation
while True :

data = requests.get(f{BASE}/v1/videos/{task_id}, headers=headers).json()

if data["status"] == "completed":

break

if data["status"] == "failed":

raise RuntimeError(data.get("error", {}).get("message", &34;échec&34;))

time.sleep(5)

# 3. Téléchargement
mp4 = requests.get(f&34;{BASE}/v1/videos/{task_id}/content&34;, headers=headers)
with open(&34;result.mp4&34;, &34;wb&34;) as f: f.write(mp4.content)


id="-">Appelé dans l'interface de saisie semi-automatique du chat (utilisation compatible)

Le modĂšle vidĂ©o peut Ă©galement ĂȘtre appelĂ© via /v1/chat/completions, facilitant ainsi la rĂ©utilisation des clients de chat.

Lors d'une requĂȘte, il suffit de passer le nom du modĂšle vidĂ©o dans `model`, et le systĂšme le convertira automatiquement en une tĂąche vidĂ©o :
curl $KOZEAI_BASE_URL/v1/chat/completions

\ -H Authorization: Bearer $KOZEAI_API_KEY \ -H Content-Type: application/json \ -d { Model: } `

renvoie "video-ds-2.0

, &34;messages: [{&34;role: "user, "content: "a cat running in the sunshine, cinematic, 9:16}] }

Renvoie la fin de la conversation

Le format est `message.content`, qui contient l'état de la tùche et un lien `/v1/videos/{task_id}`. Ce lien lancera la vidéo une fois la conversation terminée. La page du salon de discussion utilise cette méthode.

Les deux points d'entrĂ©e (/v1/videos/generations et /v1/chat/completions) partagent le mĂȘme systĂšme de tĂąches et ne sont pas en conflit. Pour une intĂ©gration directe, il est recommandĂ© d'utiliser la mĂ©thode standard. Interface `/v1/videos/*`.


Code d'erreur

Code d'état Signification
401 Jeton manquant, expiré ou invalide
403 Solde insuffisant ou le groupe actuel ne dispose pas des autorisations nécessaires pour ce modÚle
404 L'ID de tùche n'existe pas ou n'appartient pas à l'utilisateur actuel ; ou le modÚle n'est pas disponible. Configuré.
409 Le contenu vidĂ©o n'est pas prĂȘt (la tĂąche est toujours en cours de mise en file d'attente/gĂ©nĂ©ration)
429 Déclenchement de la limite de débit
502 Le fournisseur en amont a échoué ou a renvoyé un résultat invalide

Documentation relative aux appels d'API de génération vidéo | Koze AI