L'API Opencran
Chaque modèle du catalogue, depuis votre propre code. Une clé, un solde, les mêmes prix que dans le studio.
1 · Authentification
Créez une clé dans Réglages, Clés API. Envoyez-la avec chaque requête comme jeton Bearer. Les clés commencent par oc_live_ et ne fonctionnent que sur Opencran ; gardez-les sur votre serveur, jamais dans un navigateur ou une application.
curl https://opencran.com/api/v1/api/catalog/me \
-H 'Authorization: Bearer oc_live_...'2 · Choisissez un modèle
Choisissez un modèle pour voir une requête prête construite à partir de ses propres champs. Les champs obligatoires sont remplis et chaque réglage facultatif utilise la valeur par défaut du modèle.
opencran/fast-image/text-to-image| Nom | Type | Obligatoire | Par défaut |
|---|---|---|---|
| prompt | text | oui | - |
| aspect_ratio | 1:1 | 2:1 | 1:2 | 3:1 | 1:3 | 21:9 | ... | non | 1:1 |
3 · Lancez un rendu
Un seul appel calcule le prix de vos entrées exactes et débite votre solde. La réponse revient aussitôt avec le statut queued ; le rendu s'exécute en arrière-plan. Envoyez un en-tête Idempotency-Key pour qu'une requête relancée ne soit jamais facturée deux fois.
curl -X POST https://opencran.com/api/v1/api/catalog/generations \
-H 'Authorization: Bearer oc_live_...' \
-H 'Content-Type: application/json' \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"modelId": "opencran/fast-image/text-to-image",
"inputs": {
"prompt": "a lighthouse on a cliff at dusk, soft light"
}
}'Vérifiez d'abord le prix (facultatif)
Les mêmes entrées, chiffrées sans rien lancer. La réponse est en centimes.
curl -X POST https://opencran.com/api/v1/api/catalog/quote \
-H 'Authorization: Bearer oc_live_...' \
-H 'Content-Type: application/json' \
-d '{"modelId":"opencran/fast-image/text-to-image","inputs":{"prompt":"a lighthouse on a cliff at dusk, soft light"}}'4 · Interrogez et téléchargez
Demandez le rendu toutes les quelques secondes jusqu'à ce que le statut soit succeeded, failed ou refunded. En cas de succès, téléchargez le fichier depuis contentUrl avec la même clé. Un modèle de texte renvoie plutôt sa réponse dans textOutput.
curl https://opencran.com/api/v1/api/catalog/generations/GENERATION_ID \
-H 'Authorization: Bearer oc_live_...'curl https://opencran.com/api/v1/api/catalog/generations/GENERATION_ID/content \
-H 'Authorization: Bearer oc_live_...' \
-o result.pngEndpoints
URL de base: https://opencran.com/api/v1/api/catalog
| GET | /me | Votre clé et votre solde |
| GET | /models | Tous les modèles |
| GET | /models/detail?id=MODEL_ID | Un modèle et ses champs |
| POST | /quote | Prix pour des entrées exactes |
| POST | /generations | Lancer un rendu |
| GET | /generations | Vos rendus récents |
| GET | /generations/ID | Statut d'un rendu |
| GET | /generations/ID/content | Le fichier résultat |
| DELETE | /generations/ID | Supprimer un rendu |
Prix et solde
Les rendus via l'API utilisent le même solde que le studio et coûtent le même prix. Tous les montants de l'API sont en centimes d'euro : costCents est ce qu'un rendu a coûté, balanceCents ce qui reste.
Erreurs et limites
Les erreurs reviennent en JSON avec un code et un message. 401 : clé absente, incorrecte ou révoquée. 400 : un champ est invalide (les détails le nomment). 402 : solde insuffisant. 429 : trop de requêtes, ralentissez. Un rendu échoué est remboursé automatiquement. Les limites exactes seront publiées au lancement des clés. 403 avec une page HTML : la requête a été arrêtée avant d'atteindre l'API, souvent à cause du User-Agent. Celui par défaut de Python-urllib est bloqué, envoyez le vôtre, par exemple User-Agent: my-app/1.0.