Documentación

Una sola API para modelos de chat, imagen y video. El chat sigue el formato Chat Completions de OpenAI, así que cualquier SDK de OpenAI funciona cambiando la URL base y la clave; las imágenes siguen el formato de imágenes de OpenAI; los videos se ejecutan como tareas.

Quickstart

from openai import OpenAI

client = OpenAI(base_url="https://api.apistore.cloud/v1", api_key="sk-...")

stream = client.chat.completions.create(
    model="deepseek-v4-1-flash",
    messages=[{"role": "user", "content": "Hello!"}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

Autenticación

Envía tu clave en el encabezado Authorization. Crea claves en la página Claves de API.

Authorization: Bearer sk-...
Base URL: https://api.apistore.cloud/v1

Una clave puede limitarse a tus propias direcciones IP: en la página Claves de API, define sus direcciones o rangos permitidos (por ejemplo 203.0.113.7 o 198.51.100.0/24). Las solicitudes desde cualquier otro lugar se rechazan con 403 ip_not_allowed.

Endpoints

Todas las rutas son relativas a la URL base. Toda solicitud necesita tu clave de API, salvo GET /models, que es pública; con una clave, lista solo los modelos que esa clave puede usar.

GET/modelsLos modelos que puedes usar, con su tipo y sus precios
GET/balanceTu saldo, el límite de crédito y el límite diario de la clave
POST/chat/completionsChat, con streaming y llamadas a herramientas (formato OpenAI)
POST/images/generationsGenerar o editar imágenes
POST/videosIniciar una tarea de video
GET/videos/{id}Estado y resultado de una tarea de video
GET/videos/{id}/contentDescargar el video terminado (MP4)
GET/videos/{id}/last_frameEl último fotograma como imagen, cuando se pidió
POST/mcpServidor MCP para agentes de IA (un nivel por encima de la URL base)

Modelos

Lista los modelos que puedes usar. Cada uno tiene un tipo (chat, image o video) y sus precios: por token en chat, por imagen en imágenes, por 1M de tokens de video según la resolución en video.

curl https://api.apistore.cloud/v1/models

Chat

POST /chat/completions acepta la solicitud de OpenAI sin cambios: messages, max_tokens, temperature, top_p, stop, tools y tool_choice, response_format, stream. Los campos desconocidos se pasan al modelo. Cada respuesta trae un encabezado x-request-id; cítalo cuando contactes a soporte.

Streaming

Usa "stream": true para recibir server-sent events. Agrega "stream_options": {"include_usage": true} para obtener los conteos de tokens en el último fragmento.

{
  "model": "deepseek-v4-1-flash",
  "stream": true,
  "stream_options": { "include_usage": true },
  "messages": [{ "role": "user", "content": "Hello" }]
}

Caché de prompts

Los prefijos de prompt repetidos (prompt del sistema, documentos largos, historial del chat) son almacenados en caché por el proveedor. Los tokens de entrada en caché se cobran automáticamente al precio más bajo de acierto de caché. Deja la parte estable del prompt al inicio y sin cambios.

Facturación

Cada solicitud reserva su costo máximo posible (tamaño del prompt más max_tokens) y luego se cobra por los tokens realmente usados. Define max_tokens para evitar errores 402 cuando tu saldo sea bajo. Las solicitudes que fallan antes del primer token no se cobran. Las imágenes se cobran por imagen generada; los videos por token de video (ver Video). Cada cargo aparece en Registros de facturación, en la página Facturación.

Límites de uso

Los límites se aplican por clave (solicitudes por minuto) y por cuenta (solicitudes simultáneas). Algunos modelos tienen además su propio límite por cuenta.

GET /balance devuelve lo que la clave todavía puede gastar: balance_usd, credit_limit_usd y key_daily_cap_usd (null cuando la clave no tiene límite diario).

curl https://api.apistore.cloud/v1/balance -H "Authorization: Bearer sk-..."

{
  "object": "balance",
  "account": "Acme",
  "balance_usd": 42.5,
  "credit_limit_usd": 0,
  "key_daily_cap_usd": null
}

Errores

Los errores usan el formato de OpenAI: {"error": {"message", "type", "code"}}.

HTTPcode
400invalid_requestEl cuerpo no es JSON válido, o falta un campo o es incorrecto. El mensaje indica cuál.
400wrong_endpointEl modelo es de otro tipo: los modelos de chat usan /chat/completions, los de imagen /images/generations y los de video /videos.
400size_not_available / format_not_available / too_many_imagesEl modelo de imagen no genera este tamaño o formato de archivo, o recibió más imágenes de entrada de las que acepta. El mensaje indica qué acepta.
400resolution_not_availableEl modelo de video no se vende en esta resolución.
400video_not_readyEl video aún no está completo; sigue consultando GET /videos/{id}.
400not_a_draft / draft_not_ready / draft_wrong_model / draft_expireddraft_id debe ser un borrador completado del mismo modelo, hecho en los últimos 7 días.
400user_requiredSolo cuentas relay: toda solicitud de chat debe llevar un campo user.
401invalid_api_keyClave de API faltante, incorrecta o revocada.
402insufficient_balance / key_spend_capRecarga tu saldo, o sube el límite diario de la clave.
403account_inactiveLa cuenta está suspendida.
403ip_not_allowedLa clave tiene una lista de IP permitidas y la solicitud llegó desde otra dirección.
404model_not_foundId de modelo desconocido. Consulta GET /models.
404video_not_found / draft_not_foundNo existe ese video o borrador en tu cuenta.
404video_expired / last_frame_expired / image_expired / no_last_frameEl archivo ya no se conserva, o no se pidió el último fotograma. Los enlaces de imagen duran 1 hora. Los enlaces de video duran una semana; un video que no pudimos copiar a nuestro almacenamiento se sirve desde el proveedor del modelo solo durante 24 horas.
404not_foundNo existe esa ruta. Consulta Endpoints.
405method_not_allowedMétodo HTTP incorrecto para esta ruta, por ejemplo GET en /chat/completions.
413request_too_largeEl cuerpo de la solicitud es demasiado grande.
429rate_limit_exceeded / concurrency_limit / model_at_capacityReduce el ritmo y reintenta después del tiempo indicado en el encabezado Retry-After.
429model_rate_limit_exceeded / model_concurrency_limitTu cuenta alcanzó su límite para este modelo en particular. Los demás modelos siguen funcionando; reintenta después del tiempo indicado en Retry-After.
429upstream_rate_limitedEl propio modelo está en su límite de uso. Reintenta en unos segundos; no se te cobró.
429too_many_failed_requestsLa clave envió demasiadas solicitudes fallidas seguidas y queda en pausa durante el tiempo indicado en Retry-After. Corrige el error que estabas recibiendo y luego reintenta.
500internal_errorAlgo falló de nuestro lado. Reintenta, y cita el request_id a soporte si se repite.
502upstream_errorEl proveedor del modelo falló. Es seguro reintentar; no se te cobró.
503upstream_unavailable / billing_unavailable / config_unavailable / model_not_priced / gateway_drainingTemporal. Reintenta con espera creciente.
504upstream_errorEl modelo no respondió a tiempo. Es seguro reintentar; no se te cobró.

Imágenes

Los modelos de imagen responden a POST /images/generations, la misma solicitud que OpenAI. size son píxeles ("1024x1024") o una resolución que el modelo ofrezca ("1K", "1.5K", "2K", "3K", "4K"; no todos los modelos tienen todas) con un aspect_ratio opcional ("16:9"). Omite size para el tamaño estándar del modelo. output_format es "jpeg" (por defecto) o "png" en los modelos que lo ofrecen. n va de 1 a 4. Envía image (una URL o data URL, o una lista) para editar o cambiar el estilo de una imagen. response_format "b64_json" devuelve la imagen en la respuesta; "url" devuelve un enlace que funciona durante una hora. Pagas por imagen generada. Algunos modelos tienen un segundo precio, más alto, para imágenes grandes (por encima de la cantidad de píxeles indicada en el modelo) y un precio por imagen de entrada, a veces después de algunas gratis; usage.input_images indica cuántas se cobraron. Los tamaños, formatos, el límite de imágenes de entrada y los precios de cada modelo están en la Referencia de modelos más abajo y en GET /models (pricing.image, pricing.image_large, pricing.image_input y el objeto image).

// response
{
  "id": "img_0123456789abcdef0123456789abcdef",
  "created": 1793984023,
  "model": "MODEL_NAME",
  "data": [{ "url": "https://api.apistore.cloud/v1/files/images/..." }],
  "usage": { "images": 1, "input_images": 1, "cost_usd": 0.04 }  // input_images: only when some were billed
}

Video

Los modelos de video se ejecutan como tareas. POST /videos inicia una y devuelve su id de inmediato; consulta GET /videos/{id} cada pocos segundos hasta que status sea completed o failed (normalmente de 1 a 5 minutos) y luego descárgalo: la tarea terminada trae una url (un enlace al archivo, válido por una semana y renovado en cada lectura; si no pudimos almacenar el archivo, url es la ruta /v1/videos/{id}/content) y GET /videos/{id}/content siempre obtiene el archivo. El id de cualquier respuesta (chatcmpl-…, img_…, video_…) y el request_id de cualquier error son lo que debes citar a soporte.

CampoTipo
modelstringObligatorio. El id de un modelo de video.
promptstringObligatorio (salvo con draft_id). De 3 a 20.000 caracteres.
secondsinteger | "auto"Duración (duration se acepta como el mismo campo). Seedance 2.5: de 4 a 30; Seedance 2.0: de 4 a 15. "auto" deja que el modelo elija; se reserva la duración máxima y pagas por lo que genere. Por defecto 5; con reference_videos el valor por defecto es "auto".
resolutionstring480p, 720p (por defecto), 1080p o 4k; solo las resoluciones que ofrece el modelo (ver la referencia de modelos).
ratiostring16:9 (por defecto), 9:16, 1:1, 4:3, 3:4, 21:9 o adaptive. Con reference_videos el valor por defecto sigue al video de entrada.
imagestringPrimer fotograma: un enlace a una imagen o una data URL (first_frame se acepta como el mismo campo).
last_framestringÚltimo fotograma, se usa junto con image.
audiobooleanGenerar sonido con el video. Por defecto true.
seedintegerRepite un resultado con la misma semilla.
camera_fixedbooleantrue mantiene la cámara fija.
bitrate_modestringstandard (por defecto) o high. high puede fallar cuando el modelo está ocupado; en ese caso se reembolsa.
return_last_framebooleantrue: el último fotograma se conserva como imagen en GET /videos/{id}/last_frame.
reference_imagesstring[]Enlaces a imágenes o data URLs: hasta 30 en Seedance 2.5, 9 en Seedance 2.0 (jpeg, png, webp, bmp, tiff, gif; hasta 30 MB; cada lado de 300 a 6000 px).
reference_videosstring[]Enlaces públicos a MP4/MOV: hasta 10 en Seedance 2.5, 3 en Seedance 2.0; de 2 a 15 s cada uno, 480p o 720p, hasta 50 MB. Su duración también se cobra.
reference_audiosstring[]Enlaces públicos a WAV/MP3: hasta 10 en Seedance 2.5, 3 en Seedance 2.0; de 2 a 15 s cada uno, hasta 15 MB.
task_typestringCon reference_videos: auto, reference, edit o extend (Seedance 2.5). edit y extend siguen al video de entrada; omite seconds y ratio.
draftbooleanSeedance 2.5: true genera una vista previa en 480p al precio de 480p. resolution debe ser 480p.
draft_idstringConvierte un borrador terminado en el video final a 1080p. Envía solo model y draft_id: el prompt, las referencias, la duración, la proporción, el audio y la semilla vienen del borrador. Los borradores duran 7 días.

Las referencias se numeran por tipo en el orden en que las envías: el primer elemento de reference_images es la imagen 1, el segundo la imagen 2, y lo mismo para videos y audios. Nómbralas así en el prompt, como hace el playground con [Image 1], [Video 1] y [Audio 1], por ejemplo "The woman in [Image 1] walks through the street of [Video 1]". Enviar más archivos de los que acepta el modelo se rechaza, no se recorta.

status es queued, in_progress, completed o failed. Una tarea completada tiene usage.video_tokens y usage.cost_usd; una fallida no se cobra y trae error.code y error.message: generation_failed (el modelo no pudo generar el video), invalid_reference (uno de los archivos de referencia fue rechazado; el mensaje indica cuál) o timeout.

// GET https://api.apistore.cloud/v1/videos/video_...
{
  "id": "video_0123456789abcdef0123456789abcdef",
  "object": "video",
  "model": "MODEL_NAME",
  "status": "completed",
  "created_at": 1793984023,
  "completed_at": 1793984214,
  "prompt": "A red paper boat drifting across a calm lake at sunrise",
  "resolution": "720p",
  "ratio": "16:9",
  "seconds": 5,
  "draft": false,
  "seed": 49873,
  "url": "https://.../video_0123456789abcdef0123456789abcdef.mp4",
  "last_frame": null,
  "error": null,
  "usage": { "video_tokens": 108000, "cost_usd": 1.0978 }
}

Borradores (Seedance 2.5): genera primero una vista previa barata en 480p y luego convierte la que te guste en el video final a 1080p con la misma semilla y los mismos ajustes.

# 1. the draft: 480p, at the 480p price
curl https://api.apistore.cloud/v1/videos -H "Authorization: Bearer sk-..." -H "Content-Type: application/json" \
  -d '{"model": "MODEL_NAME", "prompt": "A red paper boat on a lake", "seconds": 5, "resolution": "480p", "draft": true}'

# 2. when it is completed, the final video at 1080p
curl https://api.apistore.cloud/v1/videos -H "Authorization: Bearer sk-..." -H "Content-Type: application/json" \
  -d '{"model": "MODEL_NAME", "draft_id": "video_..."}'

El costo estimado se retiene de tu saldo cuando la tarea empieza: (segundos del video de entrada + segundos de salida) en tokens de video al precio de esa resolución. Al terminar pagas por los tokens realmente generados (unos 108K por 5 segundos a 720p) y el resto se libera; una tarea fallida no cuesta nada. En Ajustes puedes cambiar la facturación de video de la lista de precios por token a "por USD": el cargo del propio proveedor por el trabajo a precio de lista, menos tu descuento. Cada registro de facturación indica cuál se aplicó.

Guías de modelos

Para qué sirve cada familia de modelos de video, sus límites y cómo escribir prompts que el modelo siga.

Seedance 2.5

El modelo de formato largo: hasta 30 segundos en una tarea, muchos archivos de referencia, y edición o extensión de un video existente. Escribe y habla 11 idiomas, entre ellos inglés y vietnamita.

De un vistazo
DuraciónDe 4 a 30 segundos, o "auto" para que el modelo elija
Resolución480p, 720p, 1080p
Proporción21:9, 16:9, 4:3, 1:1, 3:4, 9:16 o adaptive (sigue a la entrada)
ModosTexto a video; primer fotograma o primer y último fotograma; referencias; editar un video; extender un video
ReferenciasHasta 30 imágenes, 10 videos y 10 audios. Se acepta audio solo
SonidoLa voz, la música y los efectos se generan junto con la imagen (audio: true)
BorradoresSí: primero una vista previa en 480p, luego el video final a partir de la que te guste

Cómo escribir prompts

  • Empieza con una frase. Di quién, dónde, qué pasa, el estilo y la cámara en una sola línea. Luego agrega el detalle debajo.
  • Vincula cada referencia. Nombra cada archivo por su número y di para qué sirve: "[Image 1] is the lead actress, [Image 2] is the cafe, follow the camera of [Video 1]". No confíes en texto escrito dentro de una imagen para decir quién es alguien.
  • Usa una línea de tiempo en videos largos. Divide la historia en rangos de segundos enteros sin huecos ("0-5 s", "5-12 s") o en tomas numeradas, y da a cada uno su imagen, cámara, acción, voz y sonido. Con muy poco por rango el modelo improvisa; con demasiado, corta muy seguido.
  • Pocos sujetos. De uno a cinco sujetos se mantienen mejor. Varias vistas del mismo sujeto sirven como referencia hasta cinco sujetos; más allá, envía una vista de cada uno.
  • Edición (task_type: edit). Di qué cambia y dónde, de qué a qué, con los segundos cuando solo cambia una parte: "In [Video 1], from second 4 to 6 she waves instead of nodding; everything else stays". El resultado conserva la duración y la proporción de la entrada, así que omite seconds y ratio. Los videos de menos de 20 segundos se editan mejor.
  • Extensión (task_type: extend). Di la dirección y qué pasa después: "Extend [Video 1] forward: she opens the door and walks into the rain". La proporción sigue al video de entrada.
  • Primer y último fotograma. Envíalos como image y last_frame, con las mismas proporciones, para que el video empiece y termine exactamente ahí. Una imagen de referencia nombrada como "the first frame" en el prompt se sigue con menos rigor.
  • Storyboards y fotogramas clave. Una hoja de storyboard (15 viñetas o menos, línea simple, sin texto) guía la trama pero no se sigue viñeta por viñeta. Para fotogramas estrictos, envía imágenes separadas y empieza con "Use Images 1 to 5 in order as keyframes".
  • Cámara. Los términos habituales de cine funcionan tal cual: push in, pan, tracking shot, orbit, handheld, low angle, long take. Explica los términos poco comunes en unas palabras, y di cuándo ocurre una transición además de cómo.
  • Qué dejar fuera. Escribe lo que quieres en lugar de lo que no quieres. Las dos excepciones que funcionan bien: "No subtitles" y "No background music, only ambient sound".
  • Voz. Escribe las líneas así: nombre, estado de ánimo entre corchetes y luego las palabras. Un solo idioma por línea. Para palabras que deben aparecer escritas con exactitud en pantalla, envíalas como imagen.
Prompt de ejemplo
[Image 1] is the fisherman, [Image 2] is his boat. Documentary style, natural light.
0-6 s: wide shot at water level, the boat drifts through morning mist. Slow push in.
6-14 s: medium shot, he pulls the net in, hand over hand. Water drips from the rope.
14-20 s: close-up on his face as he looks at the catch and smiles.
Ambient sound only: water, wood, gulls. No subtitles, no background music.

Seedance 2.0

Tres modelos que aceptan la misma solicitud y se diferencian en calidad, velocidad y precio: Seedance 2.0 para la mejor imagen, Seedance 2.0 fast para un equilibrio entre velocidad y costo, Seedance 2.0 mini para el precio más bajo.

De un vistazo
DuraciónDe 4 a 15 segundos, o "auto"
ResoluciónSeedance 2.0: 480p, 720p, 1080p, 4K. Fast y mini: 480p, 720p
Proporción21:9, 16:9, 4:3, 1:1, 3:4, 9:16
ModosTexto a video; primer fotograma o primer y último fotograma; referencias; editar o extender un video mediante el prompt
ReferenciasHasta 9 imágenes, 3 videos y 3 audios. El audio necesita ir con una imagen o un video
SonidoLa voz, la música y los efectos se generan junto con la imagen (audio: true)
BorradoresNo
Archivos 4KH.265 con color de 10 bits. Algunos reproductores no pueden abrirlo; VLC y las versiones actuales de Chrome, Edge y Safari sí
RostrosLas imágenes y videos de referencia que muestran el rostro de una persona real son rechazados

Cómo escribir prompts

  • La fórmula. Sujeto, acción, lugar, luz y color, cámara, estilo, calidad y luego qué evitar. Define primero quién hace qué, después dónde y después cómo se filma.
  • Define cada sujeto una vez. Dale dos o tres rasgos fijos (ropa, cabello, complexión) y una etiqueta, y usa siempre la misma etiqueta: "The girl in the red coat from [Image 1]".
  • Escribe tomas, no segundos. Numera las tomas: "Shot 1: ... Shot 2: ...", cada una con su cámara, acción, lugar y sonido. Los tiempos exactos como "0-3 s" no se respetan de forma confiable en este modelo.
  • Un movimiento de cámara por toma. Push in, o pan, o track. Combinar varios movimientos en una toma vuelve inestable el resultado.
  • Describe el movimiento físicamente. Nombra la parte del cuerpo, cuánto y qué tan rápido. El movimiento lento y continuo funciona mejor. Muestra una emoción con el cuerpo ("lowers her head, eyes reddening") en lugar de nombrarla.
  • Usa pocas referencias. Cuatro o cinco bastan: una o dos para el personaje, una para el lugar, un video para la cámara, un audio para el ambiente. Más de cuatro personas como referencia reduce la estabilidad, y no se recomiendan varias vistas de una misma persona.
  • Rostros que se mantienen. Envía un primer plano de la cabeza y una imagen de cuerpo entero, y di cuál es para el rostro y cuál para la ropa. Pon primero los archivos más importantes.
  • Edición. Nombra el video directamente y di qué cambia: "Strictly edit [Video 1]: replace the cat with the lion from [Image 1], keep everything else". No escribas "reference [Video 1]" aquí, o se tratará solo como referencia.
  • Extensión. "Extend [Video 1] forward" o "backward", y luego qué pasa. Se pueden unir dos o tres clips con una transición entre ellos, 15 segundos en total. Agrega "end with [Video 1]" para conservar el material original en el resultado.
  • Voz y texto. Pon las líneas habladas entre llaves y mantén un solo idioma: She says {We are late}. Para texto en pantalla indica las palabras, cuándo, dónde y cómo aparecen. Usa caracteres comunes.
  • Qué evitar. Aun así pueden aparecer subtítulos y logos. "Keep it subtitle-free" y "Do not generate a logo or watermark" los reducen; también ayuda quitar el texto de tus archivos de referencia.
Prompt de ejemplo
[Image 1] is the girl in the red coat, [Image 2] is the night market. Follow the camera of [Video 1].
Shot 1: wide shot, she walks in between the stalls. Slow push in.
Shot 2: medium shot, she stops at a lantern stall and lifts one lantern. Fixed camera.
Shot 3: close-up, warm light on her face. She says {This one}.
Cinematic, warm tones, rich detail. Keep it subtitle-free. Do not generate a logo or watermark.

MCP

Usa los modelos desde un agente de IA con nuestro servidor MCP alojado (Streamable HTTP). Agrega la URL de abajo a Claude Code, Cursor, Windsurf, VS Code o cualquier cliente MCP, con tu clave de API en el encabezado Authorization. Las llamadas se cobran de tu saldo a los mismos precios que la API.

URL: https://api.apistore.cloud/mcp
Authorization: Bearer sk-...
# Claude Code
claude mcp add --transport http apistore https://api.apistore.cloud/mcp \
  --header "Authorization: Bearer sk-..."

# Cursor (~/.cursor/mcp.json), Windsurf, VS Code and other MCP clients
{
  "mcpServers": {
    "apistore": {
      "url": "https://api.apistore.cloud/mcp",
      "headers": { "Authorization": "Bearer sk-..." }
    }
  }
}

Herramientas: list_models (los modelos y tus precios), chat (envía un prompt o mensajes a un modelo y recibe su respuesta), create_image (genera imágenes y devuelve sus enlaces), create_video (inicia un video y devuelve su id) y get_video (su estado y, cuando termina, el enlace al archivo).

CLI

El comando apistore ejecuta modelos de chat, imagen y video desde una terminal o un script: entra texto, sale la respuesta, y los archivos se guardan donde indiques. Requiere Node 20 o posterior.

npm install -g @apistorecloud/apistore
apistore login --key sk-...

apistore chat -m deepseek-v4-1-flash "Hello!"
apistore chat "Summarize this" < notes.md
apistore image "a red bicycle on a white wall" -o bike.png
apistore video "waves at sunset, slow pan" --resolution 720p --seconds 5

Todos los comandos aceptan --json para la respuesta cruda de la API, y la clave también puede venir de APISTORE_API_KEY para scripts y CI. Ejecuta apistore --help para ver todas las opciones.

Referencia de modelos

Los modelos del mismo tipo aceptan el mismo formato de solicitud. Los precios están en créditos (1 US$ = 100 créditos): por 1M de tokens en chat y video, por imagen en imágenes. La API informa los montos en USD (cost_usd, balance_usd).

Seedance-2.5Seedance 2.5

Probar
Por 1M de tokens de video, 480p1,016
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 480p608
Por 1M de tokens de video, 720p1,016
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 720p608
Por 1M de tokens de video, 1080p1,112
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 1080p665
Solicitud de ejemplo
# start the task
curl https://api.apistore.cloud/v1/videos \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Seedance-2.5",
    "prompt": "A red paper boat drifting across a calm lake at sunrise",
    "resolution": "720p",
    "ratio": "16:9",
    "seconds": 5
  }'

# poll until "status": "completed", then download
curl https://api.apistore.cloud/v1/videos/video_... -H "Authorization: Bearer sk-..."
curl https://api.apistore.cloud/v1/videos/video_.../content -H "Authorization: Bearer sk-..." -o video.mp4

deepseek-v4-1-flash

Probar
StandardHoras valle
Ventana de contexto1 M
Salida máxima393.2 k
Entrada2121
Entrada en caché00
Salida8484

Los precios estándar se aplican Lun–Vie 09:00–12:00, 14:00–18:00 UTC+8; los precios de horas valle, el resto del tiempo.

Solicitud de ejemplo
curl https://api.apistore.cloud/v1/chat/completions \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-1-flash",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

deepseek-v4-1-flash-economy

Probar
StandardHoras valle
Ventana de contexto1 M
Salida máxima393.2 k
Entrada1717
Entrada en caché00
Salida6767

Los precios estándar se aplican Lun–Vie 09:00–12:00, 14:00–18:00 UTC+8; los precios de horas valle, el resto del tiempo.

Solicitud de ejemplo
curl https://api.apistore.cloud/v1/chat/completions \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-1-flash-economy",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

dreamina-seedance-2-0-fastSeedance 2.0 Fast

Probar
Por 1M de tokens de video, 480p336
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 480p198
Por 1M de tokens de video, 720p336
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 720p198
Solicitud de ejemplo
# start the task
curl https://api.apistore.cloud/v1/videos \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0-fast",
    "prompt": "A red paper boat drifting across a calm lake at sunrise",
    "resolution": "720p",
    "ratio": "16:9",
    "seconds": 5
  }'

# poll until "status": "completed", then download
curl https://api.apistore.cloud/v1/videos/video_... -H "Authorization: Bearer sk-..."
curl https://api.apistore.cloud/v1/videos/video_.../content -H "Authorization: Bearer sk-..." -o video.mp4

seedance-2-0Seedance 2.0

Probar
Por 1M de tokens de video, 480p665
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 480p409
Por 1M de tokens de video, 720p665
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 720p409
Por 1M de tokens de video, 1080p732
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 1080p447
Por 1M de tokens de video, 4K380
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 4K228
Solicitud de ejemplo
# start the task
curl https://api.apistore.cloud/v1/videos \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0",
    "prompt": "A red paper boat drifting across a calm lake at sunrise",
    "resolution": "720p",
    "ratio": "16:9",
    "seconds": 5
  }'

# poll until "status": "completed", then download
curl https://api.apistore.cloud/v1/videos/video_... -H "Authorization: Bearer sk-..."
curl https://api.apistore.cloud/v1/videos/video_.../content -H "Authorization: Bearer sk-..." -o video.mp4

seedance-2.0-miniSeedance 2.0 mini

Probar
Por 1M de tokens de video, 480p210
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 480p126
Por 1M de tokens de video, 720p210
Por 1M de tokens de video, con un video de entrada (duración de entrada + salida), 720p126
Solicitud de ejemplo
# start the task
curl https://api.apistore.cloud/v1/videos \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0-mini",
    "prompt": "A red paper boat drifting across a calm lake at sunrise",
    "resolution": "720p",
    "ratio": "16:9",
    "seconds": 5
  }'

# poll until "status": "completed", then download
curl https://api.apistore.cloud/v1/videos/video_... -H "Authorization: Bearer sk-..."
curl https://api.apistore.cloud/v1/videos/video_.../content -H "Authorization: Bearer sk-..." -o video.mp4

seedream-5.0-flashSeedream 5.0 Flash

Probar
Precio por imagen1
Tamaños1.5K, 1K
Píxeles totales (ancho × alto)0.92 – 2.61 MP
Formatos de archivojpeg, png
Imágenes de entrada, máximo10
Solicitud de ejemplo
curl https://api.apistore.cloud/v1/images/generations \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-5.0-flash",
    "prompt": "A red paper boat on a calm lake at sunrise",
    "size": "1.5K",
    "aspect_ratio": "16:9",
    "response_format": "url"
  }'

seedream-5.0-liteSeedream 5.0 Lite

Probar
Precio por imagen3
Tamaños2K, 3K, 4K
Píxeles totales (ancho × alto)3.69 – 16.78 MP
Formatos de archivojpeg, png
Imágenes de entrada, máximo14
Solicitud de ejemplo
curl https://api.apistore.cloud/v1/images/generations \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-5.0-lite",
    "prompt": "A red paper boat on a calm lake at sunrise",
    "size": "2K",
    "aspect_ratio": "16:9",
    "response_format": "url"
  }'

seedream-5.0-proSeedream 5.0 Pro

Probar
Precio por imagen4
Precio por imagen grande (más de 2.61 MP)7
Precio por imagen de entrada, después de las primeras 10
Tamaños1.5K, 1K, 2K
Píxeles totales (ancho × alto)0.92 – 4.62 MP
Formatos de archivojpeg, png
Imágenes de entrada, máximo10
Solicitud de ejemplo
curl https://api.apistore.cloud/v1/images/generations \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-5.0-pro",
    "prompt": "A red paper boat on a calm lake at sunrise",
    "size": "1.5K",
    "aspect_ratio": "16:9",
    "response_format": "url"
  }'

seedream-5.5Seedream 5.5

Probar
Precio por imagen2
Precio por imagen grande (más de 2.61 MP)3
Precio por imagen de entrada1
Tamaños1.5K, 1K, 2K
Píxeles totales (ancho × alto)0.92 – 4.62 MP
Formatos de archivojpeg, png
Imágenes de entrada, máximo10
Solicitud de ejemplo
curl https://api.apistore.cloud/v1/images/generations \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-5.5",
    "prompt": "A red paper boat on a calm lake at sunrise",
    "size": "1.5K",
    "aspect_ratio": "16:9",
    "response_format": "url"
  }'