Todos os endpoints
Base de todas as rotas abaixo: https://infinityflow.stream/api/v1. As rotas de OAuth e o transporte MCP usam URLs próprias.
Envie Authorization: Bearer SUA_CHAVE em cada chamada. Escritas com corpo usam Content-Type: application/json. Plano base ativo e automação são necessários; os escopos abaixo são adicionais a essa verificação. Consulte autenticação.
Conta e capacidades
Seção intitulada “Conta e capacidades”| Método e caminho | Escopo | Resposta 200 |
|---|---|---|
GET /account |
account:read |
{account: {id, name}, entitlements} |
GET /usage |
usage:read |
{date, timeZone, resetsAt, limit, reserved, consumed, remaining} |
GET /models |
account:read |
{models: [...]} |
entitlements informa planId, active, automationEnabled, dailyVideoLimit, maxBatchSize, maxOutstandingJobs, maxActiveGenerations, priority, legacyPriceLocked, basePriceMinor, currency, market, intervalMonths, validFrom, validUntil e policyVersion. Preço e termos originais sem evidência podem ser null; isso não significa preço zero. Valores monetários usam a menor unidade da moeda, com a precisão ISO dessa moeda.
Em /usage, timeZone é America/Sao_Paulo e resetsAt é ISO 8601. limit e remaining são null para planos sem franquia diária. reserved inclui trabalho aceito ainda não concluído. Uma cota cheia retorna 429, com metadados de reset; a API não aceita pedidos para executar no dia seguinte.
/models publica studio-video e studio-image, proporções 16:9 e 9:16, no máximo três referências e duração de vídeo de dez segundos. Use essa resposta para descobrir capacidades; não envie parâmetros de um fornecedor externo.
curl 'https://infinityflow.stream/api/v1/account' \ -H "Authorization: Bearer $INFINITY_FLOW_API_KEY"Gerações
Seção intitulada “Gerações”| Método e caminho | Escopo | Entrada | Sucesso |
|---|---|---|---|
POST /generations |
generations:write |
GenerationInput; header Idempotency-Key UUID |
202 {generation} e Location |
GET /generations |
generations:read |
Query opcional projectId, cursor |
200 {generations, nextCursor} |
GET /generations/{id} |
generations:read |
UUID id |
200 {generation} |
POST /generations/{id}/cancel |
generations:write |
UUID id; sem corpo obrigatório |
200 {ok: true} |
GenerationInput exige prompt (1–4.000 caracteres) e aspect (16:9 ou 9:16). Opcionais: title (até 100 caracteres), projectId UUID, mediaKind (video/image), model (studio-video/studio-image), referenceIds (até três UUIDs distintos), referenceId (referência única), durationSeconds (somente 10) e outputCount (somente 1). Use modelo e tipo coerentes. Campos não publicados são rejeitados. Sem projectId, usa-se o projeto padrão.
curl 'https://infinityflow.stream/api/v1/generations' \ -H "Authorization: Bearer $INFINITY_FLOW_API_KEY" \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: a2b2da8a-d14a-43ad-8846-91c741bb5301' \ --data '{"prompt":"Uma floresta ao amanhecer","aspect":"16:9","mediaKind":"video","model":"studio-video"}'O UUID do exemplo é ilustrativo. Gere e persista um UUID novo para uma criação nova; reutilize a mesma identidade e o mesmo corpo depois de timeout. 202 confirma aceitação durável, sem indicar conclusão. A resposta contém:
{ "generation": { "id": "6aedffb0-cead-4387-9fae-5201fd1679f1", "projectId": "bd0bffdb-da62-4ed4-844d-4570870d8d99", "title": "Abertura", "mediaKind": "video", "model": "studio-video", "aspect": "16:9", "state": "queued", "createdAt": "2026-11-09T12:00:00.000Z", "updatedAt": "2026-11-09T12:00:00.000Z", "readyAt": null, "expiresAt": null, "outputs": [] }}batchId e batchIndex aparecem para itens de lote. Os estados são queued, processing, succeeded, failed, cancelled e attention_required. O último exige acompanhar o pedido original; não reenvie com outra identidade. Veja estados e parâmetros.
O histórico retorna até 24 itens por página, do mais recente para o mais antigo. Codifique nextCursor com URLSearchParams e passe-o como cursor, sem reconstruí-lo. Não há parâmetro público limit. Cancele somente antes da submissão; um trabalho iniciado ou incerto pode retornar 409.
| Método e caminho | Escopo | Entrada | Sucesso |
|---|---|---|---|
POST /batches |
generations:write |
{items: GenerationInput[]}; Idempotency-Key UUID |
202 {batch: {id, generations}} e Location |
GET /batches/{id} |
generations:read |
UUID id |
200 {batch: {id, generations}} |
O limite por lote é 3 no Creator, 20 no Pro e 100 no Enterprise. A admissão do lote é atômica: um item inválido ou capacidade insuficiente rejeita o conjunto. Cada item aceito tem seu próprio ID e acompanhamento. Lote não amplia a simultaneidade; a conta mantém uma geração ativa por vez.
{"items":[{"prompt":"Cena externa ao amanhecer","aspect":"16:9","mediaKind":"video"},{"prompt":"Retrato em luz natural","aspect":"9:16","mediaKind":"image"}]}Arquivos privados
Seção intitulada “Arquivos privados”| Método e caminho | Escopo | Sucesso |
|---|---|---|
GET /generations/{id}/outputs/{index}/download |
media:read |
307, URL privada em Location |
GET /generations/{id}/outputs/{index}/play |
media:read |
307, URL privada em Location |
GET /generations/{id}/outputs/{index}/thumbnail |
media:read |
307, thumbnail real em Location |
GET /generations/{id}/outputs/{index}/download-ticket |
media:read |
200 {url} |
id é o UUID da geração e index atualmente só aceita 0. As quatro rotas reconhecem HEAD: download/play/download-ticket retornam 200 com headers de metadados da mídia, sem corpo; thumbnail retorna 307 com URL privada para HEAD. O arquivo precisa estar pronto, pertencer à conta e ainda estar disponível. Uma thumbnail pode ainda não estar pronta mesmo quando o arquivo principal está disponível.
As URLs temporárias duram no máximo 90 segundos, limitadas também pela expiração da mídia. Os arquivos permanecem disponíveis por 24 horas a partir de readyAt. Não encaminhe o Bearer do Infinity Flow ao host da URL temporária. Pedir um novo ticket não renova a retenção.
Projetos
Seção intitulada “Projetos”| Método e caminho | Escopo | Entrada | Sucesso |
|---|---|---|---|
GET /projects |
projects:read |
— | 200 {projects}; até 100 |
POST /projects |
projects:write |
{name}; Idempotency-Key UUID |
200 {project} |
GET /projects/{id} |
projects:read |
UUID id |
200 {project} |
PATCH /projects/{id} |
projects:write |
UUID id, {name} |
200 {ok: true} |
DELETE /projects/{id} |
projects:write |
UUID id |
200 {ok: true} |
name é obrigatório, de 1 a 100 caracteres após remover espaços externos. Leituras retornam id, name, createdAt, updatedAt (timestamps Unix em milissegundos). A resposta de criação usa created e updated para esses timestamps; não presuma o nome dos campos sem consultar a operação correspondente. Renomear e excluir não exigem Idempotency-Key.
Projetos e referências com trabalho pendente são protegidos contra exclusão. IDs de outra conta retornam 404. Veja projetos e referências.
Referências de imagem
Seção intitulada “Referências de imagem”| Método e caminho | Escopo | Entrada | Sucesso |
|---|---|---|---|
GET /references |
references:read |
— | 200 {references}; até 100 |
POST /references |
references:write |
{projectId, filename, data}; Idempotency-Key UUID |
201 {reference: {id, filename}}; replay pode retornar 200 |
GET /references/{id} |
references:read |
UUID id |
200 {reference} |
DELETE /references/{id} |
references:write |
UUID id |
200 {ok: true} |
projectId é um UUID próprio; filename tem 1–150 caracteres; data é base64 puro, sem prefixo data:. O limite é 8 MiB de bytes decodificados. Tipos permitidos são validados pelo conteúdo; não há importação por URL. A biblioteca admite 32 referências e 128 MiB totais. Leituras de metadados incluem id, projectId, filename, mime, size em bytes e createdAt Unix em milissegundos. Referências em uso por trabalho pendente não podem ser removidas.
Headers, erros e retry
Seção intitulada “Headers, erros e retry”Idempotency-Key é obrigatório somente em criação de geração, lote, projeto e referência. Reutilizar uma chave com outro corpo causa conflito. Para resultados incertos, mantenha o ID original; não faça retry como uma criação nova.
Erros da camada de automação usam {error: {code, message, requestId}}, podendo incluir details ou usage. Algumas operações delegadas de biblioteca/cancelamento mantêm o formato {error, code?}. Clientes devem verificar o status HTTP antes de interpretar o envelope. X-Request-Id identifica a chamada; Retry-After orienta espera em 429; WWW-Authenticate aparece em 401.
Não há webhook público de conclusão de geração nesta versão: acompanhe o ID por polling com backoff. O webhook Hotmart é interno ao fluxo de cobrança e não é uma API de integração para clientes.
Schemas, exemplos e respostas por operação na referência interativa · OpenAPI JSON · Erros · Retry e lotes