API et MCP de Cirrela

Créez des vidéos et des images depuis votre propre code, ou laissez Claude et ChatGPT les créer pour vous. Mêmes modèles, mêmes prix et mêmes remboursements que dans le studio.

REST et JSON, versionnée sous /v1 · Un serveur MCP pour Claude, ChatGPT et les agents · Inclus dans la formule Studio

Démarrage rapide

  1. Créez une clé dans les Paramètres, rubrique API et MCP (formule Studio).
  2. Lancez une vidéo. La réponse arrive tout de suite, avec un identifiant et status: queued.
  3. Redemandez-la jusqu’à ce que status vaille completed, puis téléchargez outputs[0].url.
POST /v1/generations
curl https://cirrela.com/api/v1/generations \
  -H "Authorization: Bearer $CIRRELA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: fox-snow-001" \
  -d '{
    "prompt": "A red fox running through fresh snow at sunrise",
    "tier": "great",
    "aspect_ratio": "9:16",
    "duration": 5
  }'
GET /v1/generations/:id
curl https://cirrela.com/api/v1/generations/GENERATION_ID \
  -H "Authorization: Bearer $CIRRELA_API_KEY"

Une vidéo prend environ 1 à 3 minutes, une image environ 20 secondes. Un rendu qui échoue est remboursé automatiquement.

Authentification

Envoyez votre clé dans l’en-tête Authorization à chaque requête. Les clés commencent par cir_live_ et ne sont affichées qu’une fois, à leur création. Gardez-les sur un serveur : toute personne qui a une clé peut dépenser vos crédits.

Authorization: Bearer cir_live_your_key

Révoquez une clé dans les Paramètres et elle s’arrête aussitôt. Les clés s’arrêtent aussi tant que le compte n’est pas sur Studio ou qu’il est suspendu, et remarchent quand il revient sur Studio.

URL de base https://cirrela.com/api/v1

Créer une vidéo ou une image

POST /v1/generations prend du JSON. Seul prompt est obligatoire : le reste part des réglages du niveau, comme dans le studio.

ChampRôle
typevideo (par défaut) ou image.
promptCe qu’il faut créer, de 3 à 4 000 caractères. Les @pseudos utilisent vos personnages enregistrés. Obligatoire.
tierquick, great (par défaut) ou cinema : les niveaux de qualité du studio (Rapide, Top, Cinéma).
modelUn identifiant de modèle donné par GET /v1/models, à la place d’un niveau.
durationEn secondes, parmi les durations du modèle.
aspect_ratio16:9, 9:16, 1:1… parmi les aspect_ratios du modèle.
resolutionUne des resolutions du modèle incluses dans votre formule.
soundSon activé ou non, sur les modèles qui ont l’option.
num_imagesImages par requête, jusqu’au max_images du modèle.
image, image_idUne image de départ : en base64 dans le corps (une URL data: fonctionne), ou l’identifiant renvoyé par POST /v1/uploads.
end_image, end_image_idUne image de fin, sur les modèles où accepts_end_image est vrai.
photo_consentObligatoire avec une image : true confirme que vous avez le droit de l’utiliser et que les personnes qui y figurent sont d’accord.
publicLa partager dans le fil public Exemples. false par défaut.
max_creditsRefuser plutôt que de dépenser plus que ce nombre de crédits.

Envoyez un en-tête Idempotency-Key (une chaîne unique de 255 caractères au plus) pour réessayer sans risque : la même clé avec le même corps renvoie la même création pendant 24 heures, sans facturer deux fois. La même clé avec un autre corps est refusée avec une 409.

Chaque requête passe par les contrôles du studio : le prix est débité au lancement du rendu et rendu en cas d’échec, le filtre de prompts s’applique, comme les limites de votre formule (rendus en même temps, rendus par jour, résolution). Les fichiers portent les métadonnées « généré par IA ».

Routes

GET/v1/me

Votre formule, votre solde de crédits et vos limites.

curl https://cirrela.com/api/v1/me -H "Authorization: Bearer $CIRRELA_API_KEY"
Réponse
{
  "object": "account",
  "plan": "studio",
  "credits": 3170,
  "rendering": 1,
  "limits": { "parallel_renders": 8, "renders_per_day": 1500, "max_video_resolution": "4K", … }
}

GET/v1/models

Les niveaux de qualité et tous les modèles, avec leurs options et leurs prix en crédits pour votre formule.

curl https://cirrela.com/api/v1/models -H "Authorization: Bearer $CIRRELA_API_KEY"

POST/v1/estimates

Le prix exact d’une requête, sans rien dépenser. Même corps que POST /v1/generations.

curl https://cirrela.com/api/v1/estimates \
  -H "Authorization: Bearer $CIRRELA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "prompt": "A lighthouse in a storm", "tier": "cinema", "duration": 10 }'
Réponse
{ "object": "estimate", "credits": 200, "balance": 3170, "affordable": true, … }

POST/v1/generations

Lance un rendu et débite ses crédits. Répond 201 avec la création, status: queued.

curl https://cirrela.com/api/v1/generations \
  -H "Authorization: Bearer $CIRRELA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: fox-snow-001" \
  -d '{
    "prompt": "A red fox running through fresh snow at sunrise",
    "tier": "great",
    "aspect_ratio": "9:16",
    "duration": 5
  }'
Réponse
{
  "id": "j57a8m3f0k2x9q1r4t6v",
  "object": "generation",
  "type": "video",
  "status": "queued",
  "progress": 0,
  "model": "minimax-h3",
  "tier": "great",
  "prompt": "A red fox running through fresh snow at sunrise",
  "settings": { "aspect_ratio": "9:16", "duration": 5, "sound": true, "resolution": "768P" },
  "credits": 30,
  "refunded": false,
  "outputs": [],
  "error": null,
  "public": false,
  "share_url": null,
  "ai_generated": true,
  "created_at": "2026-10-24T09:12:03.000Z",
  "completed_at": null
}

GET/v1/generations/:id

Une de vos créations : status (queued, running, completed, failed), progress de 0 à 1, et outputs une fois terminée.

curl https://cirrela.com/api/v1/generations/GENERATION_ID \
  -H "Authorization: Bearer $CIRRELA_API_KEY"
Réponse
{
  "id": "j57a8m3f0k2x9q1r4t6v",
  "status": "completed",
  "progress": 1,
  "outputs": [{ "url": "https://…/video.mp4", "width": 720, "height": 1280 }],
  …
}

GET/v1/generations

Vos créations, des plus récentes aux plus anciennes. limit (de 1 à 60, 20 par défaut), cursor (le next_cursor de la page précédente), type (video ou image).

curl "https://cirrela.com/api/v1/generations?limit=20&type=video" -H "Authorization: Bearer $CIRRELA_API_KEY"
Réponse
{ "object": "list", "data": [ … ], "has_more": true, "next_cursor": "…" }

POST/v1/uploads

Envoie une image de départ ou de fin (JPEG, PNG ou WebP, moins de 10 Mo) comme corps brut, et répond avec un id pour image_id. Les images qu’aucun rendu n’utilise sont supprimées au bout d’un jour.

curl https://cirrela.com/api/v1/uploads \
  -H "Authorization: Bearer $CIRRELA_API_KEY" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg
Réponse
{ "id": "kg2…", "object": "upload" }

Erreurs

Les erreurs sont du JSON avec un code stable. Décidez d’après le code, pas le message : les messages sont écrits pour des personnes et peuvent changer.

{
  "error": {
    "code": "insufficient_credits",
    "message": "This generation needs 100 credits — you have 42. Top up to continue.",
    "details": { "required": 100, "balance": 42 }
  }
}
StatutCodeSignification
400invalid_request, invalid_jsonLe corps ou un en-tête ne correspond pas à ce qu’attend la route.
401invalid_keyClé absente, inconnue ou révoquée.
402insufficient_creditsPas assez de crédits. details contient required et balance.
403plan_requiredLe compte n’est pas sur Studio, ou la formule n’inclut pas cette résolution.
403account_suspended, account_pausedLe compte ne peut pas créer pour le moment ; le message dit pourquoi et jusqu’à quand.
404not_foundRoute inconnue, ou aucune création avec cet identifiant sur votre compte.
409idempotency_conflictCette Idempotency-Key a déjà servi avec un autre corps.
413payload_too_largeLe corps ou l’image est trop lourd (photos : 10 Mo).
415unsupported_media_typeL’image n’est ni un JPEG, ni un PNG, ni un WebP.
422validation_errorUn champ est invalide : param le nomme, le message dit ce que le modèle accepte.
422moderation_blockedLe filtre de prompts l’a refusé. Rien n’a été facturé.
429rate_limited, concurrency_limit, daily_limitTrop de requêtes, de rendus en même temps ou de rendus aujourd’hui. Voir Retry-After.
500internal_errorUn problème de notre côté. Réessayez un peu plus tard.

Un rendu qui échoue plus tard n’est pas une erreur HTTP : GET /v1/generations/:id répond status: failed, error.message explique pourquoi en clair, et refunded vaut true.

Limites de requêtes

Chaque clé peut envoyer 120 requêtes par minute, et lancer 20 rendus par minute. Les limites de votre formule s’appliquent aussi : sur Studio, 8 rendus en même temps et 1 500 par jour.

Chaque réponse porte X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset (secondes Unix) ; une 429 ajoute Retry-After, en secondes.

Serveur MCP pour Claude, ChatGPT et les agents

Avec le serveur MCP, un assistant IA crée des vidéos sur votre compte. Demandez à Claude « fais-moi une vidéo 9:16 d’un renard qui court dans la neige » : il vérifie le prix, lance le rendu et vous rapporte le lien.

URL du serveur
https://cirrela.com/api/mcp

Streamable HTTP, réponses en JSON, sans session. Votre clé d’API va dans l’en-tête Authorization.

Claude Code

Lancez ceci une fois dans un terminal :

claude mcp add --transport http cirrela https://cirrela.com/api/mcp \
  --header "Authorization: Bearer cir_live_your_key"

Claude (claude.ai et l’application de bureau)

  1. Ouvrez les Paramètres, puis Connecteurs, et choisissez Ajouter un connecteur personnalisé.
  2. Nommez-le Cirrela et collez l’URL du serveur.
  3. Choisissez Sans connexion. Dans En-têtes de requête, ajoutez authorization avec la valeur Bearer suivie d’une espace et de votre clé.

Les en-têtes de requête sont en bêta sur claude.ai. Sur les formules Team et Enterprise, un propriétaire ajoute le connecteur pour l’organisation.

ChatGPT, Cursor et les autres clients

Tout client qui parle MCP en Streamable HTTP et peut envoyer un en-tête fonctionne : donnez-lui l’URL du serveur et Authorization: Bearer <clé>. Pour les clients réglés par un fichier JSON :

mcp.json
{
  "mcpServers": {
    "cirrela": {
      "type": "http",
      "url": "https://cirrela.com/api/mcp",
      "headers": { "Authorization": "Bearer cir_live_your_key" }
    }
  }
}

Outils

  • get_balanceFormule, solde de crédits et limites.
  • list_modelsNiveaux et modèles, avec leurs prix en crédits.
  • estimate_costLe prix d’une vidéo ou d’une image, sans rien dépenser.
  • create_videoLance une vidéo et débite ses crédits.
  • create_imageLance une ou plusieurs images.
  • get_generationStatut, avancement et liens de téléchargement.

Versions du protocole 2025-03-26 à 2025-11-25 (avec initialize) et 2026-07-28 (sans état, avec server/discover).

Obtenir une clé

Studio inclut l’API et le serveur MCP, avec 3 200 à 12 100 crédits par mois.