Início/Creovox API
API para desenvolvedores · v1
Creovox API
Chame do seu próprio código os mesmos modelos que alimentam o estúdio Creovox. A versão 1 oferece suporte ao GPT Image 2.6 para texto para imagem e edição de imagens. Cada requisição é uma tarefa assíncrona: crie e consulte até a imagem ficar pronta.
Início rápido
- 01
Crie uma chave de API
Entre e abra API Keys no painel. Crie uma chave separada para cada app, assim você pode desativar uma sem quebrar as outras.
- 02
Compre créditos
A API gasta apenas créditos comprados. Créditos grátis e de bônus continuam funcionando no site, mas não podem ser usados pela API.
- 03
Crie uma tarefa e consulte
Envie seu prompt com POST para /api/v1/tasks, guarde o task_id e depois faça GET /api/v1/tasks/ a cada poucos segundos até o status ser succeeded ou failed.
Autenticação
Envie sua chave no cabeçalho Authorization em toda requisição. As chaves estão vinculadas à sua conta Creovox; chaves criadas em outros sites são rejeitadas. Nunca coloque uma chave em código de navegador ou em repositório público.
Authorization: Bearer YOUR_API_KEYPontos de extremidade
| Método | Caminho | Descrição |
|---|---|---|
| POST | /api/v1/tasks | Cria uma tarefa de geração |
| GET | /api/v1/tasks/{task_id} | Obtém o status e a saída de uma tarefa |
| GET | /api/v1/tasks | Lista as tarefas criadas com esta chave, as mais recentes primeiro |
| GET | /api/v1/models | Lista os modelos com schema de entrada e preços (não precisa de chave) |
| GET | /api/v1/account/credits | Verifica o saldo de créditos do dono da chave |
| GET | /api/v1/openapi.json | Documento OpenAPI 3.1 (não precisa de chave) |
Criar uma tarefa
Coloque o id do modelo em model e os parâmetros em input. Nomes de parâmetro desconhecidos são rejeitados, então erros de digitação falham na hora. Envie um cabeçalho Idempotency-Key para que uma requisição repetida não crie nem cobre uma segunda tarefa.
curl -X POST https://creovox.ai/api/v1/tasks \
-H "Authorization: Bearer $CREOVOX_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1234-fox" \
-d '{
"model": "gpt-image-2.6",
"input": {
"prompt": "A red fox in fresh snow, cinematic light",
"variant": "flare",
"aspect_ratio": "16:9",
"resolution": "2k"
}
}'{
"code": 200,
"message": "success",
"data": {
"task_id": "n42…gptimg",
"model": "gpt-image-2.6",
"status": "processing",
"output": null,
"credits_charged": 20,
"refund_pending": false,
"error": null,
"created_at": "2026-11-07T08:00:00.000Z"
}
}Parâmetros do GPT Image 2.6
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
prompt | string | — | O que desenhar ou como alterar as imagens de referência. Até 20.000 caracteres. Obrigatório. |
variant | flare | sunburst | economy | flare | flare é o equilíbrio padrão entre velocidade e detalhe, sunburst prioriza o detalhe, economy é o mais barato e renderiza apenas em 1K. |
aspect_ratio | string | auto | Formato do quadro, como 1:1, 16:9 ou 9:16. auto deixa o modelo escolher. O economy aceita menos opções. |
resolution | 1k | 2k | 4k | 1k | 1k, 2k ou 4k. O economy sempre renderiza em 1k. |
output_format | png | jpeg | webp | png | png, jpeg ou webp. O economy sempre retorna png. |
images | string[] | [] | Até 16 URL de imagens públicas via HTTP(S). Quando presentes, a tarefa edita essas imagens em vez de desenhar do zero. |
Consultar o resultado
Consulte a cada 3 a 5 segundos e pare quando o status for succeeded ou failed. As imagens costumam levar de alguns segundos a alguns minutos; se uma tarefa ainda estiver em processing após 10 minutos, pare e fale com o suporte informando o task_id. Quando a tarefa termina com sucesso, output.images contém as URL das imagens; baixe-as se precisar guardá-las.
curl https://creovox.ai/api/v1/tasks/TASK_ID \
-H "Authorization: Bearer $CREOVOX_API_KEY"{
"code": 200,
"message": "success",
"data": {
"task_id": "n42…gptimg",
"model": "gpt-image-2.6",
"status": "succeeded",
"output": { "images": [{ "url": "https://…/image.png" }] },
"credits_charged": 20,
"refund_pending": false,
"error": null,
"created_at": "2026-11-07T08:00:00.000Z"
}
}Status da tarefa
processing- A tarefa está em processamento ou aguarda a confirmação da cobrança ou da aceitação pelo fornecedor.
succeeded- Concluída. output.images contém os resultados e credits_charged é definitivo.
failed- A geração falhou e error.message explica o motivo. Os créditos cobrados são reembolsados automaticamente: refund_pending é true até o reembolso ser aplicado, depois credits_charged mostra 0. Você pode parar de consultar.
// Node.js 18+
const API = 'https://creovox.ai/api/v1'
const headers = {
Authorization: `Bearer ${process.env.CREOVOX_API_KEY}`,
'Content-Type': 'application/json',
}
async function call(path, init = {}) {
const res = await fetch(API + path, { ...init, headers: { ...headers, ...init.headers }, signal: AbortSignal.timeout(30_000) })
const body = await res.json().catch(() => ({ code: res.status, message: res.statusText }))
if (body.code !== 200) {
const error = new Error(body.message)
Object.assign(error, { status: res.status, type: body.error_type, data: body.data, retryAfter: res.headers.get('retry-after') })
throw error
}
return body.data
}
// Reuse the same key when you retry this request: you get the same task and pay once.
const idempotencyKey = crypto.randomUUID()
let task
try {
task = await call('/tasks', {
method: 'POST',
headers: { 'Idempotency-Key': idempotencyKey },
body: JSON.stringify({ model: 'gpt-image-2.6', input: { prompt: 'A red fox in fresh snow' } }),
})
} catch (error) {
if (!error.data?.task_id || !['billing_unconfirmed', 'submission_unconfirmed'].includes(error.type)) throw error
task = { task_id: error.data.task_id, status: 'processing' }
}
const deadline = Date.now() + 10 * 60_000
while (task.status === 'processing') {
if (Date.now() > deadline) throw new Error(`Task ${task.task_id} is still processing; contact support.`)
await new Promise(resolve => setTimeout(resolve, 4000))
try {
task = await call(`/tasks/${task.task_id}`)
} catch (error) {
// 429 and 5xx are temporary: wait and poll again. Anything else is final.
if (error.status !== 429 && error.status < 500) throw error
await new Promise(resolve => setTimeout(resolve, (Number(error.retryAfter) || 5) * 1000))
}
}
console.log(task.status, task.output?.images, task.error, task.refund_pending)Preços
Os preços são em créditos e correspondem exatamente ao site. 1 crédito é US$0.01. Cada imagem de referência adiciona um valor pequeno. GET /api/v1/models sempre retorna a tabela de preços atual.
| Variante | Resolução | Créditos por imagem | Por imagem de referência |
|---|---|---|---|
flare | 1k | 10 | +2 |
flare | 2k | 20 | +2 |
flare | 4k | 36 | +2 |
sunburst | 1k | 10 | +2 |
sunburst | 2k | 20 | +2 |
sunburst | 4k | 36 | +2 |
economy | 1k | 5 | — |
Erros
Os erros usam o código de status HTTP e a mesma estrutura JSON: code, message, error_type e data.
| HTTP | error_type | Significado |
|---|---|---|
| 400 | invalid_request | Um parâmetro está faltando ou é inválido. O message indica qual. |
| 401 | invalid_api_key | A chave está ausente, incorreta, desativada ou excluída. |
| 402 | insufficient_credits | Créditos comprados insuficientes para esta tarefa. |
| 403 | key_not_allowed, account_suspended | A chave pertence a outro site, ou a conta está suspensa. |
| 404 | not_found | A tarefa não existe ou foi criada com outra chave. |
| 409 | idempotency_conflict | Esse Idempotency-Key já foi usado em outra requisição. |
| 429 | rate_limited | Requisições, tarefas em execução ou verificações de status demais para esta chave. Aguarde os segundos de Retry-After. |
| 5xx | provider_error, billing_unconfirmed, upstream_unavailable | Em caso de provider_error, as cobranças confirmadas são reembolsadas. Em caso de billing_unconfirmed ou submission_unconfirmed, guarde data.task_id e consulte essa tarefa enquanto o resultado é verificado. Repita as solicitações com erros temporários usando o mesmo Idempotency-Key. |
Limites e boas práticas
- Cada chave tem um limite por minuto e um limite de tarefas em execução. Planos pagos têm limites mais altos.
- Envie um cabeçalho Idempotency-Key em toda requisição de criação. Se uma requisição expirar, repita com o mesmo Idempotency-Key: você recebe a mesma tarefa e nunca é cobrado duas vezes.
- As imagens de referência precisam ser acessíveis pela internet pública. URL assinadas servem se continuarem válidas por alguns minutos.
- As tarefas são privadas. Uma chave só lê as tarefas que criou.
Perguntas frequentes
Posso usar meus créditos grátis na API?
Não. A API gasta apenas créditos comprados. Créditos grátis e de bônus continuam utilizáveis no site.
Sou cobrado quando uma tarefa falha?
Não. Tarefas com falha são reembolsadas automaticamente. Enquanto o reembolso é aplicado, refund_pending é true; depois disso, credits_charged é 0.
Quais modelos estão disponíveis?
A versão 1 oferece o GPT Image 2.6. Mais modelos de imagem e vídeo serão adicionados; GET /api/v1/models lista o que está disponível agora.
Posso chamar a API de um navegador?
A API permite requisições de origem cruzada, mas qualquer pessoa que veja sua página pode ler a chave. Chame a API pelo seu servidor.
Esta é uma API oficial da OpenAI?
Não. A Creovox AI é um serviço independente que dá acesso ao GPT Image 2.6 por meio de sua própria API e de seus próprios créditos.