Documentação

Uma única API para modelos de chat, imagem e vídeo. O chat segue o formato Chat Completions da OpenAI, então qualquer SDK da OpenAI funciona trocando a URL base e a chave; as imagens seguem o formato de imagens da OpenAI; os vídeos rodam como tarefas.

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="")

Autenticação

Envie sua chave no cabeçalho Authorization. Crie chaves na página Chaves de API.

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

Uma chave pode ser limitada aos seus próprios endereços IP: na página Chaves de API, defina os endereços ou intervalos permitidos (por exemplo 203.0.113.7 ou 198.51.100.0/24). Requisições de qualquer outro lugar são recusadas com 403 ip_not_allowed.

Endpoints

Todos os caminhos são relativos à URL base. Toda requisição precisa da sua chave de API, exceto GET /models, que é pública; chamada com uma chave, lista apenas os modelos que essa chave pode usar.

GET/modelsOs modelos que você pode usar, com o tipo e os preços
GET/balanceSeu saldo, o limite de crédito e o limite diário da chave
POST/chat/completionsChat, com streaming e chamadas de ferramentas (formato OpenAI)
POST/images/generationsGerar ou editar imagens
POST/videosIniciar uma tarefa de vídeo
GET/videos/{id}Status e resultado de uma tarefa de vídeo
GET/videos/{id}/contentBaixar o vídeo concluído (MP4)
GET/videos/{id}/last_frameO último quadro como imagem, quando pedido
POST/mcpServidor MCP para agentes de IA (um nível acima da URL base)

Modelos

Lista os modelos que você pode usar. Cada um tem um tipo (chat, image ou video) e seus preços: por token no chat, por imagem em imagens, por 1M de tokens de vídeo conforme a resolução em vídeo.

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

Chat

POST /chat/completions aceita a requisição da OpenAI sem mudanças: messages, max_tokens, temperature, top_p, stop, tools e tool_choice, response_format, stream. Campos desconhecidos são repassados ao modelo. Toda resposta traz um cabeçalho x-request-id; informe-o ao falar com o suporte.

Streaming

Use "stream": true para receber server-sent events. Adicione "stream_options": {"include_usage": true} para obter as contagens de tokens no último trecho.

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

Cache de prompts

Prefixos de prompt repetidos (prompt de sistema, documentos longos, histórico do chat) são colocados em cache pelo provedor. Os tokens de entrada em cache são cobrados automaticamente pelo preço mais baixo de cache hit. Deixe a parte estável do prompt no início e sem alterações.

Faturamento

Cada requisição reserva seu custo máximo possível (tamanho do prompt mais max_tokens) e depois é cobrada pelos tokens realmente usados. Defina max_tokens para evitar erros 402 quando seu saldo estiver baixo. Requisições que falham antes do primeiro token não são cobradas. Imagens são cobradas por imagem gerada; vídeos por token de vídeo (veja Vídeo). Cada cobrança aparece em Registros de faturamento, na página Faturamento.

Limites de uso

Os limites valem por chave (requisições por minuto) e por conta (requisições simultâneas). Alguns modelos também têm seu próprio limite por conta.

GET /balance retorna o que a chave ainda pode gastar: balance_usd, credit_limit_usd e key_daily_cap_usd (null quando a chave não tem limite diário).

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
}

Erros

Os erros usam o formato da OpenAI: {"error": {"message", "type", "code"}}.

HTTPcode
400invalid_requestO corpo não é um JSON válido, ou um campo está faltando ou errado. A mensagem diz qual.
400wrong_endpointO modelo é de outro tipo: modelos de chat usam /chat/completions, de imagem /images/generations e de vídeo /videos.
400size_not_available / format_not_available / too_many_imagesO modelo de imagem não gera este tamanho ou formato de arquivo, ou recebeu mais imagens de entrada do que aceita. A mensagem informa o que ele aceita.
400resolution_not_availableO modelo de vídeo não é vendido nesta resolução.
400video_not_readyO vídeo ainda não foi concluído; continue consultando GET /videos/{id}.
400not_a_draft / draft_not_ready / draft_wrong_model / draft_expireddraft_id deve ser um rascunho concluído do mesmo modelo, feito nos últimos 7 dias.
400user_requiredSomente contas relay: toda requisição de chat deve ter um campo user.
401invalid_api_keyChave de API ausente, incorreta ou revogada.
402insufficient_balance / key_spend_capRecarregue seu saldo, ou aumente o limite diário da chave.
403account_inactiveA conta está suspensa.
403ip_not_allowedA chave tem uma lista de IPs permitidos e a requisição veio de outro endereço.
404model_not_foundId de modelo desconhecido. Veja GET /models.
404video_not_found / draft_not_foundNão existe esse vídeo ou rascunho na sua conta.
404video_expired / last_frame_expired / image_expired / no_last_frameO arquivo não está mais guardado, ou o último quadro não foi pedido. Links de imagem duram 1 hora. Links de vídeo duram uma semana; um vídeo que não conseguimos copiar para o nosso armazenamento é servido pelo provedor do modelo por apenas 24 horas.
404not_foundEsse caminho não existe. Veja Endpoints.
405method_not_allowedMétodo HTTP errado para este caminho, por exemplo GET em /chat/completions.
413request_too_largeO corpo da requisição é grande demais.
429rate_limit_exceeded / concurrency_limit / model_at_capacityDiminua o ritmo e tente de novo após o tempo do cabeçalho Retry-After.
429model_rate_limit_exceeded / model_concurrency_limitSua conta atingiu o limite para este modelo específico. Os outros modelos continuam funcionando; tente de novo após o tempo do Retry-After.
429upstream_rate_limitedO próprio modelo está no limite de uso. Tente de novo em alguns segundos; você não foi cobrado.
429too_many_failed_requestsA chave enviou muitas requisições com falha em sequência e fica pausada pelo tempo indicado em Retry-After. Corrija o erro que você estava recebendo e tente de novo.
500internal_errorAlgo falhou do nosso lado. Tente de novo e informe o request_id ao suporte se o erro se repetir.
502upstream_errorO provedor do modelo falhou. É seguro tentar de novo; você não foi cobrado.
503upstream_unavailable / billing_unavailable / config_unavailable / model_not_priced / gateway_drainingTemporário. Tente de novo com espera crescente.
504upstream_errorO modelo não respondeu a tempo. É seguro tentar de novo; você não foi cobrado.

Imagens

Os modelos de imagem respondem a POST /images/generations, a mesma requisição da OpenAI. size é em pixels ("1024x1024") ou uma resolução que o modelo ofereça ("1K", "1.5K", "2K", "3K", "4K"; nem todo modelo tem todas) com um aspect_ratio opcional ("16:9"). Omita size para o tamanho padrão do modelo. output_format é "jpeg" (padrão) ou "png" nos modelos que oferecem. n vai de 1 a 4. Envie image (uma URL ou data URL, ou uma lista) para editar ou mudar o estilo de uma imagem. response_format "b64_json" retorna a imagem na própria resposta; "url" retorna um link que funciona por uma hora. Você paga por imagem gerada. Alguns modelos têm um segundo preço, mais alto, para imagens grandes (acima da quantidade de pixels indicada no modelo) e um preço por imagem de entrada, às vezes depois de algumas gratuitas; usage.input_images informa quantas foram cobradas. Os tamanhos, formatos, o limite de imagens de entrada e os preços de cada modelo estão na Referência de modelos abaixo e em GET /models (pricing.image, pricing.image_large, pricing.image_input e o 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

Os modelos de vídeo rodam como tarefas. POST /videos inicia uma e retorna o id na hora; consulte GET /videos/{id} a cada poucos segundos até status ser completed ou failed (normalmente de 1 a 5 minutos) e então baixe: a tarefa concluída traz uma url (um link para o arquivo, válido por uma semana e renovado a cada leitura; se não conseguimos armazenar o arquivo, url é o caminho /v1/videos/{id}/content) e GET /videos/{id}/content sempre busca o arquivo. O id de qualquer resposta (chatcmpl-…, img_…, video_…) e o request_id de qualquer erro são o que você deve informar ao suporte.

CampoTipo
modelstringObrigatório. O id de um modelo de vídeo.
promptstringObrigatório (exceto com draft_id). De 3 a 20.000 caracteres.
secondsinteger | "auto"Duração (duration é aceito como o mesmo campo). Seedance 2.5: de 4 a 30; Seedance 2.0: de 4 a 15. "auto" deixa o modelo escolher; a duração máxima é reservada e você paga pelo que ele gerar. Padrão 5; com reference_videos o padrão é "auto".
resolutionstring480p, 720p (padrão), 1080p ou 4k; apenas as resoluções que o modelo oferece (veja a referência de modelos).
ratiostring16:9 (padrão), 9:16, 1:1, 4:3, 3:4, 21:9 ou adaptive. Com reference_videos o padrão segue o vídeo de entrada.
imagestringPrimeiro quadro: um link para uma imagem ou uma data URL (first_frame é aceito como o mesmo campo).
last_framestringÚltimo quadro, usado junto com image.
audiobooleanGerar som com o vídeo. Padrão true.
seedintegerRepita um resultado com a mesma seed.
camera_fixedbooleantrue mantém a câmera parada.
bitrate_modestringstandard (padrão) ou high. high pode falhar quando o modelo está ocupado; nesse caso há reembolso.
return_last_framebooleantrue: o último quadro fica guardado como imagem em GET /videos/{id}/last_frame.
reference_imagesstring[]Links de imagens ou data URLs: até 30 no Seedance 2.5, 9 no Seedance 2.0 (jpeg, png, webp, bmp, tiff, gif; até 30 MB; cada lado de 300 a 6000 px).
reference_videosstring[]Links públicos de MP4/MOV: até 10 no Seedance 2.5, 3 no Seedance 2.0; de 2 a 15 s cada, 480p ou 720p, até 50 MB. A duração deles também é cobrada.
reference_audiosstring[]Links públicos de WAV/MP3: até 10 no Seedance 2.5, 3 no Seedance 2.0; de 2 a 15 s cada, até 15 MB.
task_typestringCom reference_videos: auto, reference, edit ou extend (Seedance 2.5). edit e extend seguem o vídeo de entrada; omita seconds e ratio.
draftbooleanSeedance 2.5: true gera uma prévia em 480p pelo preço de 480p. resolution deve ser 480p.
draft_idstringTransforma um rascunho concluído no vídeo final em 1080p. Envie apenas model e draft_id: o prompt, as referências, a duração, a proporção, o áudio e a seed vêm do rascunho. Os rascunhos duram 7 dias.

As referências são numeradas por tipo na ordem em que você as envia: o primeiro item de reference_images é a imagem 1, o segundo a imagem 2, e o mesmo vale para vídeos e áudios. Chame-as assim no prompt, como o playground faz com [Image 1], [Video 1] e [Audio 1], por exemplo "The woman in [Image 1] walks through the street of [Video 1]". Enviar mais arquivos do que o modelo aceita é recusado, não cortado.

status é queued, in_progress, completed ou failed. Uma tarefa concluída tem usage.video_tokens e usage.cost_usd; uma que falhou não é cobrada e traz error.code e error.message: generation_failed (o modelo não conseguiu gerar o vídeo), invalid_reference (um dos arquivos de referência foi recusado; a mensagem diz qual) ou 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 }
}

Rascunhos (Seedance 2.5): gere primeiro uma prévia barata em 480p e depois transforme a que você gostar no vídeo final em 1080p com a mesma seed e as mesmas configurações.

# 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_..."}'

O custo estimado é retido do seu saldo quando a tarefa começa: (segundos do vídeo de entrada + segundos de saída) em tokens de vídeo pelo preço daquela resolução. Ao terminar, você paga pelos tokens realmente gerados (cerca de 108K para 5 segundos em 720p) e o restante é liberado; uma tarefa que falha não custa nada. Em Configurações você pode trocar a cobrança de vídeo da tabela de preços por token para "por USD": a cobrança do próprio fornecedor pelo trabalho a preço de tabela, menos seu desconto. Cada registro de faturamento informa qual foi aplicada.

Guias de modelos

No que cada família de modelos de vídeo é boa, seus limites e como escrever prompts que o modelo siga.

Seedance 2.5

O modelo de formato longo: até 30 segundos em uma tarefa, muitos arquivos de referência, e edição ou extensão de um vídeo existente. Ele escreve e fala 11 idiomas, entre eles inglês e vietnamita.

Em resumo
DuraçãoDe 4 a 30 segundos, ou "auto" para o modelo escolher
Resolução480p, 720p, 1080p
Proporção21:9, 16:9, 4:3, 1:1, 3:4, 9:16 ou adaptive (segue a entrada)
ModosTexto para vídeo; primeiro quadro ou primeiro e último quadro; referências; editar um vídeo; estender um vídeo
ReferênciasAté 30 imagens, 10 vídeos e 10 áudios. Áudio sozinho é aceito
SomFala, música e efeitos são gerados junto com a imagem (audio: true)
RascunhosSim: primeiro uma prévia em 480p, depois o vídeo final a partir da que você gostar

Como escrever prompts

  • Comece com uma frase. Diga quem, onde, o que acontece, o estilo e a câmera em uma única linha. Depois acrescente os detalhes abaixo.
  • Vincule cada referência. Chame cada arquivo pelo número e diga para que serve: "[Image 1] is the lead actress, [Image 2] is the cafe, follow the camera of [Video 1]". Não conte com texto escrito dentro de uma imagem para dizer quem é alguém.
  • Use uma linha do tempo em vídeos longos. Divida a história em intervalos de segundos inteiros sem lacunas ("0-5 s", "5-12 s") ou em tomadas numeradas, e dê a cada um sua imagem, câmera, ação, fala e som. Com muito pouco por intervalo o modelo improvisa; com demais, ele corta com muita frequência.
  • Poucos sujeitos. De um a cinco sujeitos se mantêm melhor. Várias vistas do mesmo sujeito servem como referência até cinco sujeitos; além disso, envie uma vista de cada.
  • Edição (task_type: edit). Diga o que muda e onde, de quê para quê, com os segundos quando só uma parte muda: "In [Video 1], from second 4 to 6 she waves instead of nodding; everything else stays". O resultado mantém a duração e a proporção da entrada, então omita seconds e ratio. Vídeos com menos de 20 segundos são editados melhor.
  • Extensão (task_type: extend). Diga a direção e o que acontece em seguida: "Extend [Video 1] forward: she opens the door and walks into the rain". A proporção segue o vídeo de entrada.
  • Primeiro e último quadro. Envie-os como image e last_frame, com as mesmas proporções, para o vídeo começar e terminar exatamente ali. Uma imagem de referência chamada de "the first frame" no prompt é seguida com menos rigor.
  • Storyboards e quadros-chave. Uma folha de storyboard (15 quadros ou menos, traço simples, sem texto) orienta a trama, mas não é seguida quadro a quadro. Para quadros estritos, envie imagens separadas e comece com "Use Images 1 to 5 in order as keyframes".
  • Câmera. Os termos comuns de cinema funcionam como estão: push in, pan, tracking shot, orbit, handheld, low angle, long take. Explique termos raros em poucas palavras, e diga quando uma transição acontece, além de como.
  • O que deixar de fora. Escreva o que você quer em vez do que não quer. As duas exceções que funcionam bem: "No subtitles" e "No background music, only ambient sound".
  • Fala. Escreva as falas assim: nome, estado de espírito entre colchetes e depois as palavras. Um idioma por fala. Para palavras que precisam aparecer escritas com exatidão na tela, envie-as como imagem.
Prompt de exemplo
[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

Três modelos que aceitam a mesma requisição e diferem em qualidade, velocidade e preço: Seedance 2.0 para a melhor imagem, Seedance 2.0 fast para um equilíbrio entre velocidade e custo, Seedance 2.0 mini para o menor preço.

Em resumo
DuraçãoDe 4 a 15 segundos, ou "auto"
ResoluçãoSeedance 2.0: 480p, 720p, 1080p, 4K. Fast e mini: 480p, 720p
Proporção21:9, 16:9, 4:3, 1:1, 3:4, 9:16
ModosTexto para vídeo; primeiro quadro ou primeiro e último quadro; referências; editar ou estender um vídeo pelo prompt
ReferênciasAté 9 imagens, 3 vídeos e 3 áudios. O áudio precisa vir com uma imagem ou um vídeo
SomFala, música e efeitos são gerados junto com a imagem (audio: true)
RascunhosNão
Arquivos 4KH.265 com cor de 10 bits. Alguns players não conseguem abrir; o VLC e as versões atuais do Chrome, Edge e Safari conseguem
RostosImagens e vídeos de referência que mostram o rosto de uma pessoa real são recusados

Como escrever prompts

  • A fórmula. Sujeito, ação, lugar, luz e cor, câmera, estilo, qualidade e depois o que evitar. Defina primeiro quem faz o quê, depois onde e depois como é filmado.
  • Defina cada sujeito uma vez. Dê duas ou três características fixas (roupa, cabelo, porte) e um rótulo, e use sempre o mesmo rótulo: "The girl in the red coat from [Image 1]".
  • Escreva tomadas, não segundos. Numere as tomadas: "Shot 1: ... Shot 2: ...", cada uma com sua câmera, ação, lugar e som. Tempos exatos como "0-3 s" não são respeitados de forma confiável neste modelo.
  • Um movimento de câmera por tomada. Push in, ou pan, ou track. Combinar vários movimentos em uma tomada deixa o resultado instável.
  • Descreva o movimento fisicamente. Diga a parte do corpo, quanto e com que velocidade. Movimento lento e contínuo funciona melhor. Mostre uma emoção pelo corpo ("lowers her head, eyes reddening") em vez de nomeá-la.
  • Use poucas referências. Quatro ou cinco bastam: uma ou duas para o personagem, uma para o lugar, um vídeo para a câmera, um áudio para o clima. Mais de quatro pessoas como referência reduz a estabilidade, e várias vistas de uma mesma pessoa não são recomendadas.
  • Rostos que se mantêm. Envie um close da cabeça e uma imagem de corpo inteiro, e diga qual é para o rosto e qual para a roupa. Coloque os arquivos mais importantes primeiro.
  • Edição. Cite o vídeo diretamente e diga o que muda: "Strictly edit [Video 1]: replace the cat with the lion from [Image 1], keep everything else". Não escreva "reference [Video 1]" aqui, ou ele será tratado apenas como referência.
  • Extensão. "Extend [Video 1] forward" ou "backward", e depois o que acontece. Dois ou três clipes podem ser unidos com uma transição entre eles, 15 segundos no total. Acrescente "end with [Video 1]" para manter o material original no resultado.
  • Fala e texto. Coloque as falas entre chaves e mantenha um único idioma: She says {We are late}. Para texto na tela, informe as palavras, quando, onde e como aparecem. Use caracteres comuns.
  • O que evitar. Legendas e logos ainda podem aparecer. "Keep it subtitle-free" e "Do not generate a logo or watermark" reduzem isso; remover o texto dos seus arquivos de referência também ajuda.
Prompt de exemplo
[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

Use os modelos a partir de um agente de IA com nosso servidor MCP hospedado (Streamable HTTP). Adicione a URL abaixo ao Claude Code, Cursor, Windsurf, VS Code ou qualquer cliente MCP, com sua chave de API no cabeçalho Authorization. As chamadas são cobradas do seu saldo pelos mesmos preços da 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-..." }
    }
  }
}

Ferramentas: list_models (os modelos e seus preços), chat (envia um prompt ou mensagens a um modelo e recebe a resposta), create_image (gera imagens e retorna os links), create_video (inicia um vídeo e retorna o id) e get_video (o status e, quando termina, o link para o arquivo).

CLI

O comando apistore roda modelos de chat, imagem e vídeo em um terminal ou script: entra texto, sai a resposta, e os arquivos são salvos onde você indicar. Requer Node 20 ou mais recente.

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

Todo comando aceita --json para a resposta bruta da API, e a chave também pode vir de APISTORE_API_KEY para scripts e CI. Rode apistore --help para ver todas as opções.

Referência de modelos

Modelos do mesmo tipo aceitam o mesmo formato de requisição. Os preços estão em créditos (1 US$ = 100 créditos): por 1M de tokens em chat e vídeo, por imagem em imagens. A própria API informa os valores em USD (cost_usd, balance_usd).

Seedance-2.5Seedance 2.5

Testar
Por 1M de tokens de vídeo, 480p1.016
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 480p608
Por 1M de tokens de vídeo, 720p1.016
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 720p608
Por 1M de tokens de vídeo, 1080p1.112
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 1080p665
Requisição de exemplo
# 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

Testar
StandardFora do pico
Janela de contexto1 mi
Saída máxima393,2 mil
Entrada2121
Entrada em cache00
Saída8484

Os preços padrão valem Seg–Sex 09:00–12:00, 14:00–18:00 UTC+8; os preços fora do pico, no restante do tempo.

Requisição de exemplo
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

Testar
StandardFora do pico
Janela de contexto1 mi
Saída máxima393,2 mil
Entrada1717
Entrada em cache00
Saída6767

Os preços padrão valem Seg–Sex 09:00–12:00, 14:00–18:00 UTC+8; os preços fora do pico, no restante do tempo.

Requisição de exemplo
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

Testar
Por 1M de tokens de vídeo, 480p336
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 480p198
Por 1M de tokens de vídeo, 720p336
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 720p198
Requisição de exemplo
# 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

Testar
Por 1M de tokens de vídeo, 480p665
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 480p409
Por 1M de tokens de vídeo, 720p665
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 720p409
Por 1M de tokens de vídeo, 1080p732
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 1080p447
Por 1M de tokens de vídeo, 4K380
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 4K228
Requisição de exemplo
# 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

Testar
Por 1M de tokens de vídeo, 480p210
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 480p126
Por 1M de tokens de vídeo, 720p210
Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 720p126
Requisição de exemplo
# 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

Testar
Preço por imagem1
Tamanhos1.5K, 1K
Total de pixels (largura × altura)0.92 – 2.61 MP
Formatos de arquivojpeg, png
Imagens de entrada, no máximo10
Requisição de exemplo
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

Testar
Preço por imagem3
Tamanhos2K, 3K, 4K
Total de pixels (largura × altura)3.69 – 16.78 MP
Formatos de arquivojpeg, png
Imagens de entrada, no máximo14
Requisição de exemplo
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

Testar
Preço por imagem4
Preço por imagem grande (acima de 2.61 MP)7
Preço por imagem de entrada, depois das primeiras 10
Tamanhos1.5K, 1K, 2K
Total de pixels (largura × altura)0.92 – 4.62 MP
Formatos de arquivojpeg, png
Imagens de entrada, no máximo10
Requisição de exemplo
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

Testar
Preço por imagem2
Preço por imagem grande (acima de 2.61 MP)3
Preço por imagem de entrada1
Tamanhos1.5K, 1K, 2K
Total de pixels (largura × altura)0.92 – 4.62 MP
Formatos de arquivojpeg, png
Imagens de entrada, no máximo10
Requisição de exemplo
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"
  }'