La API de Doro genera imagen y video con los mismos motores del sitio. Envías el pedido, sigues el avance y descargas el resultado. Todas las respuestas son JSON.
Crea una clave en tu cuenta y envíala en cada llamada, en el encabezado Authorization: Bearer. La clave se muestra una sola vez; guárdala como una contraseña y nunca la pongas en código que corre en el navegador. Revocada, deja de funcionar al instante.
curl https://dorovisual.com/v1/saldo \ -H "Authorization: Bearer doro_xxxxxxxxxxxx_..."
Solo saldo prepago, solo en dólares: recargas en US$ (mínimo US$ 10) y cada generación descuenta su valor. Sin mensualidad, y el saldo no vence.
Los créditos de los planes del sitio no pagan la API. Incluso quien tiene un plan usa aquí el saldo en dólares.
El valor se reserva cuando se crea la generación. Si falla, es rechazada o cancelada, el valor vuelve entero al saldo. Sin saldo suficiente, la respuesta es 402 y no se crea ni se cobra nada.
Pagas por la unidad real de consumo: por segundo de video y por imagen, según la resolución. Usa /v1/estimativa para saber el valor exacto antes de generar.
| Motor | motor | Resolución | Precio (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 | Resolución | Precio (USD) |
|---|---|---|---|
| Nano Banana Pro | nano_banana_pro | 1K | US$ 0.45 por imagen |
| Nano Banana Pro | nano_banana_pro | 2K | US$ 0.45 por imagen |
| Nano Banana Pro | nano_banana_pro | 4K | US$ 0.90 por imagen |
| GPT Image 2.5 Sunburst | gpt_image_2_5_sunburst | — | US$ 0.71 por imagen |
| GPT Image 2.5 Flare | gpt_image_2_5_flare | — | US$ 0.71 por imagen |
| Nano Banana 2 | nano_banana_2 | 1K | US$ 0.31 por imagen |
| Nano Banana 2 | nano_banana_2 | 2K | US$ 0.41 por imagen |
| Nano Banana 2 | nano_banana_2 | 4K | US$ 0.51 por imagen |
| Muse Image | muse_image | — | US$ 0.11 por imagen |
| Seedream 5.0 Pro | seedream_5_pro | 1.5K | US$ 0.31 por imagen |
| Seedream 5.0 Pro | seedream_5_pro | 2K | US$ 0.51 por imagen |
| Seedream 5.0 Lite | seedream_5_lite | — | US$ 0.21 por imagen |
| FLUX 3 | flux_3 | 1K | US$ 0.31 por imagen |
| FLUX 3 | flux_3 | 2K | US$ 0.81 por imagen |
| Recraft V4 | recraft_v4 | — | US$ 0.21 por imagen |
| Recraft V4 Pro | recraft_v4_pro | — | US$ 0.81 por imagen |
Base: la dirección de este sitio. Los importes vienen en centavos de dólar (enteros).
/v1/motoresLista los motores, los parámetros aceptados (valores y predeterminados), las referencias aceptadas y el precio por unidad en dólares. Filtra con ?tipo=imagem o ?tipo=video.
curl https://dorovisual.com/v1/motores -H "Authorization: Bearer $DORO_KEY"
/v1/estimativaDice cuánto cuesta una generación en dólares, sin crear 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/geracoesCrea una generación y devuelve 201 con ella en "criando". Campos: motor, prompt, params (opcional; lo que falte usa el predeterminado) y webhook_url (opcional). Siempre se cobra del saldo en dólares.
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"}'
Con imágenes de referencia, envía multipart/form-data: los mismos campos como texto (params en JSON) y cada imagen en el campo referencias (PNG, JPEG o WebP, hasta 10 MB cada una).
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>El estado de la generación: criando, pronta, falhou o cancelada. Cuando está lista, "arquivos" trae la dirección de cada archivo. "estornado": true cuando el valor ya fue devuelto.
curl https://dorovisual.com/v1/geracoes/3f1c… -H "Authorization: Bearer $DORO_KEY"
/v1/geracoes/<id>/arquivos/<n>Redirige (302) a un enlace de descarga temporal del archivo. Usa -L en curl para seguirlo.
curl -L -o resultado.mp4 https://dorovisual.com/v1/geracoes/3f1c…/arquivos/0 \ -H "Authorization: Bearer $DORO_KEY"
/v1/geracoes/<id>/cancelarCancela mientras la generación no empezó y devuelve el valor. Después, 409 nao_cancelavel.
/v1/geracoes?pagina=1Las generaciones de tu cuenta por la API, las más nuevas primero, 50 por página.
/v1/saldoTu saldo en dólares, en centavos.
{"saldo": {"USD": 2000}}
Envía el encabezado Idempotency-Key (letras, números, . _ : -, hasta 128) en POST /v1/geracoes. Repetir la misma clave devuelve la misma generación, sin cobrar de nuevo: seguro para reintentar tras un error de red.
Con webhook_url (https, puerto 443, dirección pública), Doro hace un POST JSON cuando la generación termina: {"evento": "geracao.terminada", "geracao": {...}}, el mismo cuerpo de la consulta. Las respuestas 2xx cuentan como entregado; hasta 3 intentos. No se siguen redirecciones.
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)
Verifica la firma del encabezado Doro-Signature: HMAC-SHA256 del secreto de tu cuenta (en el área de claves) sobre "<t>.<cuerpo>". Rechaza avisos con t muy antiguo.
Por clave: 3 generaciones en curso a la vez y 60 por hora; por cuenta: 6 en curso y 120 por hora; y 120 llamadas por minuto por clave. Por encima, 429 con el encabezado Retry-After.
Todo error es JSON: {"erro": "<código>"}, con "campo" en el 400. El texto del código no cambia; úsalo en tu manejo.
| HTTP | erro | |
|---|---|---|
| 400 | parametro | Algún campo está fuera de lo aceptado (el nombre viene en "campo"). |
| 401 | chave_invalida | Clave ausente, incorrecta o revocada. |
| 402 | sem_saldo | El saldo en dólares no cubre la generación. No se creó nada. |
| 404 | nao_encontrada | No existe, o no es de tu cuenta. |
| 409 | nao_cancelavel | La generación ya empezó y no se puede cancelar. |
| 429 | limite | Límite alcanzado ("motivo" dice cuál). Espera el Retry-After. |
| 503 | indisponivel | El motor no está disponible ahora. No se cobró nada; inténtalo de nuevo. |
| 500 | interno | Error nuestro. El "codigo" ayuda al soporte a encontrar el caso. |
Usamos cookies para entender cómo llega la gente al sitio. Nada de eso hace falta para comprar: rechazar no cambia nada en tu pedido. Saber más