Pular para o conteúdo

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.

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.

Janela do terminal
curl 'https://infinityflow.stream/api/v1/account' \
-H "Authorization: Bearer $INFINITY_FLOW_API_KEY"
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.

Janela do terminal
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"}]}
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.

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.

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.

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