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 | /models | Os modelos que você pode usar, com o tipo e os preços |
| GET | /balance | Seu saldo, o limite de crédito e o limite diário da chave |
| POST | /chat/completions | Chat, com streaming e chamadas de ferramentas (formato OpenAI) |
| POST | /images/generations | Gerar ou editar imagens |
| POST | /videos | Iniciar uma tarefa de vídeo |
| GET | /videos/{id} | Status e resultado de uma tarefa de vídeo |
| GET | /videos/{id}/content | Baixar o vídeo concluído (MP4) |
| GET | /videos/{id}/last_frame | O último quadro como imagem, quando pedido |
| POST | /mcp | Servidor 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"}}.
| HTTP | code | |
|---|---|---|
| 400 | invalid_request | O corpo não é um JSON válido, ou um campo está faltando ou errado. A mensagem diz qual. |
| 400 | wrong_endpoint | O modelo é de outro tipo: modelos de chat usam /chat/completions, de imagem /images/generations e de vídeo /videos. |
| 400 | size_not_available / format_not_available / too_many_images | O 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. |
| 400 | resolution_not_available | O modelo de vídeo não é vendido nesta resolução. |
| 400 | video_not_ready | O vídeo ainda não foi concluído; continue consultando GET /videos/{id}. |
| 400 | not_a_draft / draft_not_ready / draft_wrong_model / draft_expired | draft_id deve ser um rascunho concluído do mesmo modelo, feito nos últimos 7 dias. |
| 400 | user_required | Somente contas relay: toda requisição de chat deve ter um campo user. |
| 401 | invalid_api_key | Chave de API ausente, incorreta ou revogada. |
| 402 | insufficient_balance / key_spend_cap | Recarregue seu saldo, ou aumente o limite diário da chave. |
| 403 | account_inactive | A conta está suspensa. |
| 403 | ip_not_allowed | A chave tem uma lista de IPs permitidos e a requisição veio de outro endereço. |
| 404 | model_not_found | Id de modelo desconhecido. Veja GET /models. |
| 404 | video_not_found / draft_not_found | Não existe esse vídeo ou rascunho na sua conta. |
| 404 | video_expired / last_frame_expired / image_expired / no_last_frame | O 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. |
| 404 | not_found | Esse caminho não existe. Veja Endpoints. |
| 405 | method_not_allowed | Método HTTP errado para este caminho, por exemplo GET em /chat/completions. |
| 413 | request_too_large | O corpo da requisição é grande demais. |
| 429 | rate_limit_exceeded / concurrency_limit / model_at_capacity | Diminua o ritmo e tente de novo após o tempo do cabeçalho Retry-After. |
| 429 | model_rate_limit_exceeded / model_concurrency_limit | Sua conta atingiu o limite para este modelo específico. Os outros modelos continuam funcionando; tente de novo após o tempo do Retry-After. |
| 429 | upstream_rate_limited | O próprio modelo está no limite de uso. Tente de novo em alguns segundos; você não foi cobrado. |
| 429 | too_many_failed_requests | A 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. |
| 500 | internal_error | Algo falhou do nosso lado. Tente de novo e informe o request_id ao suporte se o erro se repetir. |
| 502 | upstream_error | O provedor do modelo falhou. É seguro tentar de novo; você não foi cobrado. |
| 503 | upstream_unavailable / billing_unavailable / config_unavailable / model_not_priced / gateway_draining | Temporário. Tente de novo com espera crescente. |
| 504 | upstream_error | O 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.
| Campo | Tipo | |
|---|---|---|
model | string | Obrigatório. O id de um modelo de vídeo. |
prompt | string | Obrigatório (exceto com draft_id). De 3 a 20.000 caracteres. |
seconds | integer | "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". |
resolution | string | 480p, 720p (padrão), 1080p ou 4k; apenas as resoluções que o modelo oferece (veja a referência de modelos). |
ratio | string | 16: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. |
image | string | Primeiro quadro: um link para uma imagem ou uma data URL (first_frame é aceito como o mesmo campo). |
last_frame | string | Último quadro, usado junto com image. |
audio | boolean | Gerar som com o vídeo. Padrão true. |
seed | integer | Repita um resultado com a mesma seed. |
camera_fixed | boolean | true mantém a câmera parada. |
bitrate_mode | string | standard (padrão) ou high. high pode falhar quando o modelo está ocupado; nesse caso há reembolso. |
return_last_frame | boolean | true: o último quadro fica guardado como imagem em GET /videos/{id}/last_frame. |
reference_images | string[] | 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_videos | string[] | 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_audios | string[] | 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_type | string | Com reference_videos: auto, reference, edit ou extend (Seedance 2.5). edit e extend seguem o vídeo de entrada; omita seconds e ratio. |
draft | boolean | Seedance 2.5: true gera uma prévia em 480p pelo preço de 480p. resolution deve ser 480p. |
draft_id | string | Transforma 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ção | De 4 a 30 segundos, ou "auto" para o modelo escolher |
| Resolução | 480p, 720p, 1080p |
| Proporção | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 ou adaptive (segue a entrada) |
| Modos | Texto para vídeo; primeiro quadro ou primeiro e último quadro; referências; editar um vídeo; estender um vídeo |
| Referências | Até 30 imagens, 10 vídeos e 10 áudios. Áudio sozinho é aceito |
| Som | Fala, música e efeitos são gerados junto com a imagem (audio: true) |
| Rascunhos | Sim: 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.
[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ção | De 4 a 15 segundos, ou "auto" |
| Resolução | Seedance 2.0: 480p, 720p, 1080p, 4K. Fast e mini: 480p, 720p |
| Proporção | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 |
| Modos | Texto para vídeo; primeiro quadro ou primeiro e último quadro; referências; editar ou estender um vídeo pelo prompt |
| Referências | Até 9 imagens, 3 vídeos e 3 áudios. O áudio precisa vir com uma imagem ou um vídeo |
| Som | Fala, música e efeitos são gerados junto com a imagem (audio: true) |
| Rascunhos | Não |
| Arquivos 4K | H.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 |
| Rostos | Imagens 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.
[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, 480p | 1.016 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 480p | 608 |
| Por 1M de tokens de vídeo, 720p | 1.016 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 720p | 608 |
| Por 1M de tokens de vídeo, 1080p | 1.112 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 1080p | 665 |
# 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.mp4deepseek-v4-1-flash
Testar| Standard | Fora do pico | |
|---|---|---|
| Janela de contexto | 1 mi | |
| Saída máxima | 393,2 mil | |
| Entrada | 21 | 21 |
| Entrada em cache | 0 | 0 |
| Saída | 84 | 84 |
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.
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| Standard | Fora do pico | |
|---|---|---|
| Janela de contexto | 1 mi | |
| Saída máxima | 393,2 mil | |
| Entrada | 17 | 17 |
| Entrada em cache | 0 | 0 |
| Saída | 67 | 67 |
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.
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, 480p | 336 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 480p | 198 |
| Por 1M de tokens de vídeo, 720p | 336 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 720p | 198 |
# 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.mp4seedance-2-0Seedance 2.0
Testar| Por 1M de tokens de vídeo, 480p | 665 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 480p | 409 |
| Por 1M de tokens de vídeo, 720p | 665 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 720p | 409 |
| Por 1M de tokens de vídeo, 1080p | 732 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 1080p | 447 |
| Por 1M de tokens de vídeo, 4K | 380 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 4K | 228 |
# 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.mp4seedance-2.0-miniSeedance 2.0 mini
Testar| Por 1M de tokens de vídeo, 480p | 210 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 480p | 126 |
| Por 1M de tokens de vídeo, 720p | 210 |
| Por 1M de tokens de vídeo, com um vídeo de entrada (duração de entrada + saída), 720p | 126 |
# 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.mp4seedream-5.0-flashSeedream 5.0 Flash
Testar| Preço por imagem | 1 |
| Tamanhos | 1.5K, 1K |
| Total de pixels (largura × altura) | 0.92 – 2.61 MP |
| Formatos de arquivo | jpeg, png |
| Imagens de entrada, no máximo | 10 |
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 imagem | 3 |
| Tamanhos | 2K, 3K, 4K |
| Total de pixels (largura × altura) | 3.69 – 16.78 MP |
| Formatos de arquivo | jpeg, png |
| Imagens de entrada, no máximo | 14 |
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 imagem | 4 |
| Preço por imagem grande (acima de 2.61 MP) | 7 |
| Preço por imagem de entrada, depois das primeiras 1 | 0 |
| Tamanhos | 1.5K, 1K, 2K |
| Total de pixels (largura × altura) | 0.92 – 4.62 MP |
| Formatos de arquivo | jpeg, png |
| Imagens de entrada, no máximo | 10 |
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 imagem | 2 |
| Preço por imagem grande (acima de 2.61 MP) | 3 |
| Preço por imagem de entrada | 1 |
| Tamanhos | 1.5K, 1K, 2K |
| Total de pixels (largura × altura) | 0.92 – 4.62 MP |
| Formatos de arquivo | jpeg, png |
| Imagens de entrada, no máximo | 10 |
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"
}'