Accueil/Creovox API
API développeur · v1
Creovox API
Appelez depuis votre propre code les mêmes modèles que le studio Creovox. La version 1 prend en charge GPT Image 2.6 pour le texte-vers-image et l'édition d'images. Chaque requête est une tâche asynchrone : créez-la, puis interrogez jusqu'à ce que l'image soit prête.
Démarrage rapide
- 01
Créer une clé API
Connectez-vous et ouvrez API Keys dans le tableau de bord. Créez une clé distincte par application pour en désactiver une sans casser les autres.
- 02
Acheter des crédits
L'API ne dépense que les crédits achetés. Les crédits gratuits et bonus restent utilisables sur le site, mais pas via l'API.
- 03
Créer une tâche et l'interroger
Envoyez votre prompt en POST sur /api/v1/tasks, conservez le task_id, puis faites GET /api/v1/tasks/ toutes les quelques secondes jusqu'à ce que le statut soit succeeded ou failed.
Authentification
Envoyez votre clé dans l'en-tête Authorization à chaque requête. Les clés sont liées à votre compte Creovox ; les clés créées sur d'autres sites sont refusées. Ne mettez jamais une clé dans du code navigateur ou un dépôt public.
Authorization: Bearer YOUR_API_KEYPoints de terminaison
| Méthode | Chemin | Description |
|---|---|---|
| POST | /api/v1/tasks | Créer une tâche de génération |
| GET | /api/v1/tasks/{task_id} | Récupérer le statut et la sortie d'une tâche |
| GET | /api/v1/tasks | Lister les tâches créées avec cette clé, les plus récentes en premier |
| GET | /api/v1/models | Lister les modèles avec leur schéma d'entrée et leurs prix (aucune clé requise) |
| GET | /api/v1/account/credits | Vérifier le solde de crédits du propriétaire de la clé |
| GET | /api/v1/openapi.json | Document OpenAPI 3.1 (aucune clé requise) |
Créer une tâche
Placez l'id du modèle dans model et ses paramètres dans input. Les noms de paramètres inconnus sont refusés, pour que les fautes de frappe échouent tout de suite. Envoyez un en-tête Idempotency-Key pour qu'une requête renvoyée ne crée ni ne facture une seconde tâche.
curl -X POST https://creovox.ai/api/v1/tasks \
-H "Authorization: Bearer $CREOVOX_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1234-fox" \
-d '{
"model": "gpt-image-2.6",
"input": {
"prompt": "A red fox in fresh snow, cinematic light",
"variant": "flare",
"aspect_ratio": "16:9",
"resolution": "2k"
}
}'{
"code": 200,
"message": "success",
"data": {
"task_id": "n42…gptimg",
"model": "gpt-image-2.6",
"status": "processing",
"output": null,
"credits_charged": 20,
"refund_pending": false,
"error": null,
"created_at": "2026-11-07T08:00:00.000Z"
}
}Paramètres de GPT Image 2.6
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
prompt | string | — | Quoi dessiner, ou comment modifier les images de référence. Jusqu'à 20 000 caractères. Obligatoire. |
variant | flare | sunburst | economy | flare | flare est l'équilibre par défaut entre vitesse et détail, sunburst privilégie le détail, economy est le moins cher et ne rend qu'en 1K. |
aspect_ratio | string | auto | Format du cadre, par exemple 1:1, 16:9 ou 9:16. auto laisse le modèle choisir. Economy n'en prend en charge qu'une partie. |
resolution | 1k | 2k | 4k | 1k | 1k, 2k ou 4k. Economy rend toujours en 1k. |
output_format | png | jpeg | webp | png | png, jpeg ou webp. Economy renvoie toujours du png. |
images | string[] | [] | Jusqu'à 16 URL d'images publiques en HTTP(S). Si elles sont fournies, la tâche modifie ces images au lieu de dessiner de zéro. |
Interroger le résultat
Interrogez toutes les 3 à 5 secondes et arrêtez dès que le statut est succeeded ou failed. Les images prennent en général de quelques secondes à quelques minutes ; si une tâche est encore en processing après 10 minutes, arrêtez et contactez le support avec son task_id. Quand la tâche réussit, output.images contient les URL des images ; téléchargez-les si vous voulez les conserver.
curl https://creovox.ai/api/v1/tasks/TASK_ID \
-H "Authorization: Bearer $CREOVOX_API_KEY"{
"code": 200,
"message": "success",
"data": {
"task_id": "n42…gptimg",
"model": "gpt-image-2.6",
"status": "succeeded",
"output": { "images": [{ "url": "https://…/image.png" }] },
"credits_charged": 20,
"refund_pending": false,
"error": null,
"created_at": "2026-11-07T08:00:00.000Z"
}
}Statut de la tâche
processing- La tâche est en cours ou attend la confirmation du débit ou de son acceptation par le fournisseur.
succeeded- Terminé. output.images contient les résultats et credits_charged est définitif.
failed- La génération a échoué et error.message en explique la raison. Les crédits débités sont remboursés automatiquement : refund_pending vaut true jusqu'au remboursement, puis credits_charged indique 0. Vous pouvez arrêter d'interroger.
// Node.js 18+
const API = 'https://creovox.ai/api/v1'
const headers = {
Authorization: `Bearer ${process.env.CREOVOX_API_KEY}`,
'Content-Type': 'application/json',
}
async function call(path, init = {}) {
const res = await fetch(API + path, { ...init, headers: { ...headers, ...init.headers }, signal: AbortSignal.timeout(30_000) })
const body = await res.json().catch(() => ({ code: res.status, message: res.statusText }))
if (body.code !== 200) {
const error = new Error(body.message)
Object.assign(error, { status: res.status, type: body.error_type, data: body.data, retryAfter: res.headers.get('retry-after') })
throw error
}
return body.data
}
// Reuse the same key when you retry this request: you get the same task and pay once.
const idempotencyKey = crypto.randomUUID()
let task
try {
task = await call('/tasks', {
method: 'POST',
headers: { 'Idempotency-Key': idempotencyKey },
body: JSON.stringify({ model: 'gpt-image-2.6', input: { prompt: 'A red fox in fresh snow' } }),
})
} catch (error) {
if (!error.data?.task_id || !['billing_unconfirmed', 'submission_unconfirmed'].includes(error.type)) throw error
task = { task_id: error.data.task_id, status: 'processing' }
}
const deadline = Date.now() + 10 * 60_000
while (task.status === 'processing') {
if (Date.now() > deadline) throw new Error(`Task ${task.task_id} is still processing; contact support.`)
await new Promise(resolve => setTimeout(resolve, 4000))
try {
task = await call(`/tasks/${task.task_id}`)
} catch (error) {
// 429 and 5xx are temporary: wait and poll again. Anything else is final.
if (error.status !== 429 && error.status < 500) throw error
await new Promise(resolve => setTimeout(resolve, (Number(error.retryAfter) || 5) * 1000))
}
}
console.log(task.status, task.output?.images, task.error, task.refund_pending)Tarifs
Les prix sont en crédits et correspondent exactement au site. 1 crédit vaut US$0.01. Chaque image de référence ajoute un petit montant. GET /api/v1/models renvoie toujours la grille tarifaire actuelle.
| Variante | Résolution | Crédits par image | Par image de référence |
|---|---|---|---|
flare | 1k | 10 | +2 |
flare | 2k | 20 | +2 |
flare | 4k | 36 | +2 |
sunburst | 1k | 10 | +2 |
sunburst | 2k | 20 | +2 |
sunburst | 4k | 36 | +2 |
economy | 1k | 5 | — |
Erreurs
Les erreurs utilisent le code de statut HTTP et la même structure JSON : code, message, error_type et data.
| HTTP | error_type | Signification |
|---|---|---|
| 400 | invalid_request | Un paramètre est manquant ou invalide. Le message le nomme. |
| 401 | invalid_api_key | La clé est absente, incorrecte, désactivée ou supprimée. |
| 402 | insufficient_credits | Pas assez de crédits achetés pour cette tâche. |
| 403 | key_not_allowed, account_suspended | La clé appartient à un autre site, ou le compte est suspendu. |
| 404 | not_found | La tâche n'existe pas ou a été créée avec une autre clé. |
| 409 | idempotency_conflict | Cet Idempotency-Key a déjà été utilisé pour une autre requête. |
| 429 | rate_limited | Trop de requêtes, de tâches en cours ou de vérifications de statut pour cette clé. Attendez le nombre de secondes indiqué par Retry-After. |
| 5xx | provider_error, billing_unconfirmed, upstream_unavailable | En cas de provider_error, les débits confirmés sont remboursés. En cas de billing_unconfirmed ou submission_unconfirmed, conservez data.task_id et consultez cette tâche pendant la vérification du résultat. Réessayez les erreurs temporaires avec le même Idempotency-Key. |
Limites et bonnes pratiques
- Chaque clé a une limite par minute et une limite de tâches en cours. Les offres payantes ont des limites plus élevées.
- Envoyez un en-tête Idempotency-Key à chaque requête de création. Si une requête expire, renvoyez-la avec le même Idempotency-Key : vous obtenez la même tâche et n'êtes jamais facturé deux fois.
- Les images de référence doivent être accessibles depuis l'internet public. Les URL signées conviennent si elles restent valides quelques minutes.
- Les tâches sont privées. Une clé ne peut lire que les tâches qu'elle a créées.
Questions fréquentes
Puis-je utiliser mes crédits gratuits avec l'API ?
Non. L'API ne dépense que les crédits achetés. Les crédits gratuits et bonus restent utilisables sur le site.
Suis-je facturé quand une tâche échoue ?
Non. Les tâches échouées sont remboursées automatiquement. Pendant le remboursement, refund_pending vaut true ; une fois qu'il est appliqué, credits_charged vaut 0.
Quels modèles sont disponibles ?
La version 1 propose GPT Image 2.6. D'autres modèles d'image et de vidéo seront ajoutés ; GET /api/v1/models liste ce qui est disponible à l'instant présent.
Puis-je appeler l'API depuis un navigateur ?
L'API autorise les requêtes cross-origin, mais quiconque voit votre page peut lire la clé. Appelez-la plutôt depuis votre serveur.
Est-ce une API OpenAI officielle ?
Non. Creovox AI est un service indépendant qui vous donne accès à GPT Image 2.6 via sa propre API et ses propres crédits.