A API do Doro gera imagem e vídeo com os mesmos motores do site. Você manda o pedido, acompanha o andamento e baixa o resultado. Todas as respostas são JSON.
Crie uma chave na sua conta e mande em toda chamada, no cabeçalho Authorization: Bearer. A chave aparece uma vez só; guarde como uma senha e nunca a coloque em código que roda no navegador. Revogada, ela para na hora.
curl https://dorovisual.com/v1/saldo \ -H "Authorization: Bearer doro_xxxxxxxxxxxx_..."
Só saldo pré-pago, só em dólar: você recarrega em US$ (mínimo de US$ 10) e cada geração desconta o valor dela. Sem mensalidade, e o saldo não vence.
Os créditos dos planos do site não pagam a API. Mesmo quem assina um plano usa o saldo em dólar aqui.
O valor é reservado quando a geração é criada. Se ela falhar, for recusada ou cancelada, o valor volta inteiro ao saldo. Sem saldo suficiente, a resposta é 402 e nada é criado nem cobrado.
Você paga pela unidade real de consumo: por segundo de vídeo e por imagem, conforme a resolução. Use /v1/estimativa para saber o valor exato antes de gerar.
| Motor | motor | Resolução | Preço (USD) |
|---|---|---|---|
| Seedance 2.0 | seedance_2_0 | 720p | US$ 0.92 por segundo |
| Omni Flash 1.1 | omni_flash_1_1 | 720p | US$ 0.36 por segundo |
| Omni Flash 1.1 | omni_flash_1_1 | 1080p | US$ 0.51 por segundo |
| Hailuo 3 | hailuo_h3 | 768P | US$ 0.27 por segundo |
| Hailuo 3 | hailuo_h3 | 2K | US$ 0.43 por segundo |
| Hailuo 3 Max | hailuo_h3_max | 480P | US$ 0.19 por segundo |
| Hailuo 3 Max | hailuo_h3_max | 768P | US$ 0.27 por segundo |
| Kling 2.5 Turbo | kling_2_5 | — | US$ 0.23 por segundo |
| Kling 3.0 | kling_3_0 | — | US$ 0.53 por segundo |
| Kling 3.0 Omni | kling_3_0_omni | — | US$ 0.43 por segundo |
| Grok Imagine 1.5 | grok_imagine_1_5 | 480p | US$ 0.27 por segundo |
| Grok Imagine 1.5 | grok_imagine_1_5 | 720p | US$ 0.45 por segundo |
| Grok Imagine 1.5 | grok_imagine_1_5 | 1080p | US$ 0.77 por segundo |
| FLUX 3 Video | flux_3_video | 720p | US$ 0.53 por segundo |
| FLUX 3 Video | flux_3_video | 1080p | US$ 0.89 por segundo |
| FLUX 3 Video Draft | flux_3_video_draft | — | US$ 0.19 por segundo |
| Wan 3.0 | wan_3_0 | 480p | US$ 0.17 por segundo |
| Wan 3.0 | wan_3_0 | 720p | US$ 0.31 por segundo |
| Wan 3.0 | wan_3_0 | 1080p | US$ 0.61 por segundo |
| Seedance 2.5 | seedance_2_5 | 480p | US$ 0.69 por segundo |
| Seedance 2.5 | seedance_2_5 | 720p | US$ 1.43 por segundo |
| Seedance 2.5 | seedance_2_5 | 1080p | US$ 3.51 por segundo |
| Motor | motor | Resolução | Preço (USD) |
|---|---|---|---|
| Nano Banana Pro | nano_banana_pro | 1K | US$ 0.45 por imagem |
| Nano Banana Pro | nano_banana_pro | 2K | US$ 0.45 por imagem |
| Nano Banana Pro | nano_banana_pro | 4K | US$ 0.90 por imagem |
| GPT Image 2.5 Sunburst | gpt_image_2_5_sunburst | — | US$ 0.71 por imagem |
| GPT Image 2.5 Flare | gpt_image_2_5_flare | — | US$ 0.71 por imagem |
| Nano Banana 2 | nano_banana_2 | 1K | US$ 0.31 por imagem |
| Nano Banana 2 | nano_banana_2 | 2K | US$ 0.41 por imagem |
| Nano Banana 2 | nano_banana_2 | 4K | US$ 0.51 por imagem |
| Muse Image | muse_image | — | US$ 0.11 por imagem |
| Seedream 5.0 Pro | seedream_5_pro | 1.5K | US$ 0.31 por imagem |
| Seedream 5.0 Pro | seedream_5_pro | 2K | US$ 0.51 por imagem |
| Seedream 5.0 Lite | seedream_5_lite | — | US$ 0.21 por imagem |
| FLUX 3 | flux_3 | 1K | US$ 0.31 por imagem |
| FLUX 3 | flux_3 | 2K | US$ 0.81 por imagem |
| Recraft V4 | recraft_v4 | — | US$ 0.21 por imagem |
| Recraft V4 Pro | recraft_v4_pro | — | US$ 0.81 por imagem |
Base: o endereço deste site. Valores em dinheiro vêm em centavos de dólar (inteiros).
/v1/motoresLista os motores, os parâmetros aceitos (valores e padrões), as referências aceitas e o preço por unidade em dólar. Filtre com ?tipo=imagem ou ?tipo=video.
curl https://dorovisual.com/v1/motores -H "Authorization: Bearer $DORO_KEY"
/v1/estimativaDiz quanto uma geração custa em dólar, sem criar nada.
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/geracoesCria uma geração e devolve 201 com ela em "criando". Campos: motor, prompt, params (opcional; o que faltar usa o padrão) e webhook_url (opcional). A cobrança é sempre no saldo em dólar.
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"}'
Com imagens de referência, mande multipart/form-data: os mesmos campos como texto (params em JSON) e cada imagem no campo referencias (PNG, JPEG ou WebP, até 10 MB cada).
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>O estado da geração: criando, pronta, falhou ou cancelada. Quando fica pronta, "arquivos" traz o endereço de cada arquivo. "estornado": true quando o valor já voltou.
curl https://dorovisual.com/v1/geracoes/3f1c… -H "Authorization: Bearer $DORO_KEY"
/v1/geracoes/<id>/arquivos/<n>Redireciona (302) para um link de download temporário do arquivo. Use -L no curl para seguir.
curl -L -o resultado.mp4 https://dorovisual.com/v1/geracoes/3f1c…/arquivos/0 \ -H "Authorization: Bearer $DORO_KEY"
/v1/geracoes/<id>/cancelarCancela enquanto a geração ainda não começou e devolve o valor. Depois disso, 409 nao_cancelavel.
/v1/geracoes?pagina=1As gerações da sua conta pela API, mais novas primeiro, 50 por página.
/v1/saldoO saldo em dólar, em centavos.
{"saldo": {"USD": 2000}}
Mande o cabeçalho Idempotency-Key (letras, números, . _ : -, até 128) em POST /v1/geracoes. Repetir a mesma chave devolve a mesma geração, sem cobrar de novo: seguro para tentar de novo depois de um erro de rede.
Com webhook_url (https, porta 443, endereço público), o Doro faz um POST JSON quando a geração termina: {"evento": "geracao.terminada", "geracao": {...}}, o mesmo corpo da consulta. Respostas 2xx contam como entregue; até 3 tentativas. Redirecionamentos não são seguidos.
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)
Confira a assinatura do cabeçalho Doro-Signature: HMAC-SHA256 do segredo da sua conta (na área de chaves) sobre "<t>.<corpo>". Recuse aviso com t muito antigo.
Por chave: 3 gerações em andamento ao mesmo tempo e 60 por hora; por conta: 6 em andamento e 120 por hora; e 120 chamadas por minuto por chave. Acima disso, 429 com o cabeçalho Retry-After.
Todo erro é JSON: {"erro": "<código>"}, com "campo" no 400. O texto do código não muda; use ele no seu tratamento.
| HTTP | erro | |
|---|---|---|
| 400 | parametro | Algum campo está fora do aceito (o nome vem em "campo"). |
| 401 | chave_invalida | Chave ausente, errada ou revogada. |
| 402 | sem_saldo | O saldo em dólar não cobre a geração. Nada foi criado. |
| 404 | nao_encontrada | Não existe, ou não é da sua conta. |
| 409 | nao_cancelavel | A geração já começou e não pode mais ser cancelada. |
| 429 | limite | Limite atingido ("motivo" diz qual). Espere o Retry-After. |
| 503 | indisponivel | O motor está indisponível agora. Nada foi cobrado; tente de novo. |
| 500 | interno | Erro nosso. O "codigo" ajuda o suporte a achar o caso. |
Usamos cookies para entender como as pessoas chegam ao site. Nada disso é necessário para comprar — recusar não muda nada no seu pedido. Saiba mais