Doro API Entrar
API Doro

Documentación de la API

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.

Crear una clave

PTENESITFRNO

Autenticación

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_..."

Cobro

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.

Precios

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.

Vídeo

MotormotorResoluciónPrecio (USD)
Seedance 2.0seedance_2_0720p US$ 0.92 por segundo
Omni Flash 1.1omni_flash_1_1720p US$ 0.36 por segundo
Omni Flash 1.1omni_flash_1_11080p US$ 0.51 por segundo
Hailuo 3hailuo_h3768P US$ 0.27 por segundo
Hailuo 3hailuo_h32K US$ 0.43 por segundo
Hailuo 3 Maxhailuo_h3_max480P US$ 0.19 por segundo
Hailuo 3 Maxhailuo_h3_max768P US$ 0.27 por segundo
Kling 2.5 Turbokling_2_5— US$ 0.23 por segundo
Kling 3.0kling_3_0— US$ 0.53 por segundo
Kling 3.0 Omnikling_3_0_omni— US$ 0.43 por segundo
Grok Imagine 1.5grok_imagine_1_5480p US$ 0.27 por segundo
Grok Imagine 1.5grok_imagine_1_5720p US$ 0.45 por segundo
Grok Imagine 1.5grok_imagine_1_51080p US$ 0.77 por segundo
FLUX 3 Videoflux_3_video720p US$ 0.53 por segundo
FLUX 3 Videoflux_3_video1080p US$ 0.89 por segundo
FLUX 3 Video Draftflux_3_video_draft— US$ 0.19 por segundo
Wan 3.0wan_3_0480p US$ 0.17 por segundo
Wan 3.0wan_3_0720p US$ 0.31 por segundo
Wan 3.0wan_3_01080p US$ 0.61 por segundo
Seedance 2.5seedance_2_5480p US$ 0.69 por segundo
Seedance 2.5seedance_2_5720p US$ 1.43 por segundo
Seedance 2.5seedance_2_51080p US$ 3.51 por segundo

Imagen

MotormotorResoluciónPrecio (USD)
Nano Banana Pronano_banana_pro1K US$ 0.45 por imagen
Nano Banana Pronano_banana_pro2K US$ 0.45 por imagen
Nano Banana Pronano_banana_pro4K US$ 0.90 por imagen
GPT Image 2.5 Sunburstgpt_image_2_5_sunburst— US$ 0.71 por imagen
GPT Image 2.5 Flaregpt_image_2_5_flare— US$ 0.71 por imagen
Nano Banana 2nano_banana_21K US$ 0.31 por imagen
Nano Banana 2nano_banana_22K US$ 0.41 por imagen
Nano Banana 2nano_banana_24K US$ 0.51 por imagen
Muse Imagemuse_image— US$ 0.11 por imagen
Seedream 5.0 Proseedream_5_pro1.5K US$ 0.31 por imagen
Seedream 5.0 Proseedream_5_pro2K US$ 0.51 por imagen
Seedream 5.0 Liteseedream_5_lite— US$ 0.21 por imagen
FLUX 3flux_31K US$ 0.31 por imagen
FLUX 3flux_32K US$ 0.81 por imagen
Recraft V4recraft_v4— US$ 0.21 por imagen
Recraft V4 Prorecraft_v4_pro— US$ 0.81 por imagen

Endpoints

Base: la dirección de este sitio. Los importes vienen en centavos de dólar (enteros).

GET/v1/motores

Lista 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"

POST/v1/estimativa

Dice 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"}}'

POST/v1/geracoes

Crea 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}}

GET/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"

GET/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"

POST/v1/geracoes/<id>/cancelar

Cancela mientras la generación no empezó y devuelve el valor. Después, 409 nao_cancelavel.

GET/v1/geracoes?pagina=1

Las generaciones de tu cuenta por la API, las más nuevas primero, 50 por página.

GET/v1/saldo

Tu saldo en dólares, en centavos.

{"saldo": {"USD": 2000}}

Repetir sin pagar dos veces

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.

Aviso al terminar (webhook)

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.

Límites

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.

Errores

Todo error es JSON: {"erro": "<código>"}, con "campo" en el 400. El texto del código no cambia; úsalo en tu manejo.

HTTPerro
400parametroAlgún campo está fuera de lo aceptado (el nombre viene en "campo").
401chave_invalidaClave ausente, incorrecta o revocada.
402sem_saldoEl saldo en dólares no cubre la generación. No se creó nada.
404nao_encontradaNo existe, o no es de tu cuenta.
409nao_cancelavelLa generación ya empezó y no se puede cancelar.
429limiteLímite alcanzado ("motivo" dice cuál). Espera el Retry-After.
503indisponivelEl motor no está disponible ahora. No se cobró nada; inténtalo de nuevo.
500internoError nuestro. El "codigo" ayuda al soporte a encontrar el caso.