L'API Doro génère images et vidéos avec les mêmes moteurs que le site. Vous envoyez la demande, suivez l'avancement et téléchargez le résultat. Toutes les réponses sont en JSON.
Créez une clé dans votre compte et envoyez-la à chaque appel, dans l'en-tête Authorization: Bearer. La clé ne s'affiche qu'une fois ; gardez-la comme un mot de passe et ne la mettez jamais dans du code exécuté dans le navigateur. Révoquée, elle s'arrête immédiatement.
curl https://dorovisual.com/v1/saldo \ -H "Authorization: Bearer doro_xxxxxxxxxxxx_..."
Uniquement un solde prépayé, uniquement en dollars : vous rechargez en USD (minimum US$ 10) et chaque génération déduit son prix. Sans abonnement, et le solde n'expire pas.
Les crédits des forfaits du site ne paient pas l'API. Même les abonnés utilisent ici le solde en dollars.
Le montant est réservé à la création de la génération. Si elle échoue, est refusée ou annulée, le montant revient entièrement au solde. Sans solde suffisant, la réponse est 402 et rien n'est créé ni facturé.
Vous payez l'unité réelle de consommation : par seconde de vidéo et par image, selon la résolution. Utilisez /v1/estimativa pour connaître le prix exact avant de générer.
| Moteur | motor | Résolution | Prix (USD) |
|---|---|---|---|
| Seedance 2.0 | seedance_2_0 | 720p | US$ 0.92 par seconde |
| Omni Flash 1.1 | omni_flash_1_1 | 720p | US$ 0.36 par seconde |
| Omni Flash 1.1 | omni_flash_1_1 | 1080p | US$ 0.51 par seconde |
| Hailuo 3 | hailuo_h3 | 768P | US$ 0.27 par seconde |
| Hailuo 3 | hailuo_h3 | 2K | US$ 0.43 par seconde |
| Hailuo 3 Max | hailuo_h3_max | 480P | US$ 0.19 par seconde |
| Hailuo 3 Max | hailuo_h3_max | 768P | US$ 0.27 par seconde |
| Kling 2.5 Turbo | kling_2_5 | — | US$ 0.23 par seconde |
| Kling 3.0 | kling_3_0 | — | US$ 0.53 par seconde |
| Kling 3.0 Omni | kling_3_0_omni | — | US$ 0.43 par seconde |
| Grok Imagine 1.5 | grok_imagine_1_5 | 480p | US$ 0.27 par seconde |
| Grok Imagine 1.5 | grok_imagine_1_5 | 720p | US$ 0.45 par seconde |
| Grok Imagine 1.5 | grok_imagine_1_5 | 1080p | US$ 0.77 par seconde |
| FLUX 3 Video | flux_3_video | 720p | US$ 0.53 par seconde |
| FLUX 3 Video | flux_3_video | 1080p | US$ 0.89 par seconde |
| FLUX 3 Video Draft | flux_3_video_draft | — | US$ 0.19 par seconde |
| Wan 3.0 | wan_3_0 | 480p | US$ 0.17 par seconde |
| Wan 3.0 | wan_3_0 | 720p | US$ 0.31 par seconde |
| Wan 3.0 | wan_3_0 | 1080p | US$ 0.61 par seconde |
| Seedance 2.5 | seedance_2_5 | 480p | US$ 0.69 par seconde |
| Seedance 2.5 | seedance_2_5 | 720p | US$ 1.43 par seconde |
| Seedance 2.5 | seedance_2_5 | 1080p | US$ 3.51 par seconde |
| Moteur | motor | Résolution | Prix (USD) |
|---|---|---|---|
| Nano Banana Pro | nano_banana_pro | 1K | US$ 0.45 par image |
| Nano Banana Pro | nano_banana_pro | 2K | US$ 0.45 par image |
| Nano Banana Pro | nano_banana_pro | 4K | US$ 0.90 par image |
| GPT Image 2.5 Sunburst | gpt_image_2_5_sunburst | — | US$ 0.71 par image |
| GPT Image 2.5 Flare | gpt_image_2_5_flare | — | US$ 0.71 par image |
| Nano Banana 2 | nano_banana_2 | 1K | US$ 0.31 par image |
| Nano Banana 2 | nano_banana_2 | 2K | US$ 0.41 par image |
| Nano Banana 2 | nano_banana_2 | 4K | US$ 0.51 par image |
| Muse Image | muse_image | — | US$ 0.11 par image |
| Seedream 5.0 Pro | seedream_5_pro | 1.5K | US$ 0.31 par image |
| Seedream 5.0 Pro | seedream_5_pro | 2K | US$ 0.51 par image |
| Seedream 5.0 Lite | seedream_5_lite | — | US$ 0.21 par image |
| FLUX 3 | flux_3 | 1K | US$ 0.31 par image |
| FLUX 3 | flux_3 | 2K | US$ 0.81 par image |
| Recraft V4 | recraft_v4 | — | US$ 0.21 par image |
| Recraft V4 Pro | recraft_v4_pro | — | US$ 0.81 par image |
Base : l'adresse de ce site. Les montants sont en cents de dollar (entiers).
/v1/motoresListe les moteurs, les paramètres acceptés (valeurs et défauts), les références acceptées et le prix unitaire en dollars. Filtrez avec ?tipo=imagem ou ?tipo=video.
curl https://dorovisual.com/v1/motores -H "Authorization: Bearer $DORO_KEY"
/v1/estimativaIndique le coût d'une génération en dollars, sans rien créer.
curl https://dorovisual.com/v1/estimativa -H "Authorization: Bearer $DORO_KEY" \
-H "Content-Type: application/json" \
-d '{"motor": "seedance_2_0", "params": {"duracao": 5, "resolucao": "720p"}}'
/v1/geracoesCrée une génération et renvoie 201 avec elle en "criando". Champs : motor, prompt, params (facultatif ; le reste prend la valeur par défaut) et webhook_url (facultatif). Toujours débité du solde en dollars.
curl https://dorovisual.com/v1/geracoes -H "Authorization: Bearer $DORO_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-123" \
-d '{"motor": "nano_banana_pro", "prompt": "a red fox in the snow, golden hour",
"params": {"resolucao": "2K", "proporcao": "16:9", "quantidade": 1},
"webhook_url": "https://example.com/doro/aviso"}'
Avec des images de référence, envoyez du multipart/form-data : les mêmes champs en texte (params en JSON) et chaque image dans le champ referencias (PNG, JPEG ou WebP, jusqu'à 10 Mo chacune).
curl https://dorovisual.com/v1/geracoes -H "Authorization: Bearer $DORO_KEY" \
-F motor=seedance_2_0 -F prompt="the fox starts to run" \
-F 'params={"duracao": 5}' -F [email protected]
{"geracao": {"id": "3f1c…", "motor": "Seedance 2.0", "tipo": "video", "estado": "criando",
"cobranca": "saldo", "valor": {"moeda": "USD", "centavos": 460}, "arquivos": [],
"estornado": false, "criado_em": "2026-10-06T12:00:00+00:00", "pronto_em": null}}
/v1/geracoes/<id>Le statut de la génération : criando, pronta, falhou ou cancelada. Quand elle est prête, "arquivos" donne l'adresse de chaque fichier. "estornado": true quand le montant a été remboursé.
curl https://dorovisual.com/v1/geracoes/3f1c… -H "Authorization: Bearer $DORO_KEY"
/v1/geracoes/<id>/arquivos/<n>Redirige (302) vers un lien de téléchargement temporaire du fichier. Utilisez -L avec curl pour le suivre.
curl -L -o resultado.mp4 https://dorovisual.com/v1/geracoes/3f1c…/arquivos/0 \ -H "Authorization: Bearer $DORO_KEY"
/v1/geracoes/<id>/cancelarAnnule tant que la génération n'a pas commencé et rembourse le montant. Ensuite, 409 nao_cancelavel.
/v1/geracoes?pagina=1Les générations de votre compte via l'API, les plus récentes d'abord, 50 par page.
/v1/saldoVotre solde en dollars, en cents.
{"saldo": {"USD": 2000}}
Envoyez l'en-tête Idempotency-Key (lettres, chiffres, . _ : -, jusqu'à 128) sur POST /v1/geracoes. Répéter la même clé renvoie la même génération, sans nouveau débit : sûr pour réessayer après une erreur réseau.
Avec webhook_url (https, port 443, adresse publique), Doro envoie un POST JSON quand la génération se termine : {"evento": "geracao.terminada", "geracao": {...}}, le même corps que la consultation. Les réponses 2xx comptent comme livrées ; jusqu'à 3 tentatives. Les redirections ne sont pas suivies.
Doro-Signature: t=1760000000,v1=5f2b…
# Python
import hmac, hashlib
t, v1 = (p.split("=", 1)[1] for p in header.split(","))
esperado = hmac.new(segredo.encode(), f"{t}.".encode() + corpo, hashlib.sha256).hexdigest()
assert hmac.compare_digest(esperado, v1)
Vérifiez l'en-tête Doro-Signature : HMAC-SHA256 du secret de votre compte (dans l'espace des clés) sur "<t>.<corps>". Refusez les avis dont t est trop ancien.
Par clé : 3 générations en cours à la fois et 60 par heure ; par compte : 6 en cours et 120 par heure ; et 120 appels par minute par clé. Au-delà, 429 avec l'en-tête Retry-After.
Toute erreur est en JSON : {"erro": "<code>"}, avec "campo" en 400. Le texte du code ne change pas ; utilisez-le dans votre traitement.
| HTTP | erro | |
|---|---|---|
| 400 | parametro | Un champ est hors de ce qui est accepté (son nom est dans "campo"). |
| 401 | chave_invalida | Clé absente, erronée ou révoquée. |
| 402 | sem_saldo | Le solde en dollars ne couvre pas la génération. Rien n'a été créé. |
| 404 | nao_encontrada | N'existe pas, ou n'appartient pas à votre compte. |
| 409 | nao_cancelavel | La génération a déjà commencé et ne peut plus être annulée. |
| 429 | limite | Limite atteinte ("motivo" indique laquelle). Attendez le Retry-After. |
| 503 | indisponivel | Le moteur est indisponible pour l'instant. Rien n'a été débité ; réessayez. |
| 500 | interno | Erreur de notre côté. Le "codigo" aide le support à retrouver le cas. |
Nous utilisons des cookies pour comprendre comment les visiteurs arrivent sur le site. Rien de tout cela n’est nécessaire pour acheter : refuser ne change rien à votre commande. En savoir plus