Quickstart
Você vai submeter sua primeira geração e receber o resultado em menos de 5 minutos.
Pré-requisitos
- Conta VestiAI com plano pago ativo (Basic, Pro ou Scale).
- Uma chave de API criada no dashboard (veja Autenticação).
curlinstalado.
Passo 1: crie uma API key
- Acesse Dashboard > Configurações > API Keys.
- Clique em Nova chave, dê um nome opcional e escolha a validade.
- Copie o valor exibido (começa com
sk_live_). Ele é mostrado uma única vez: guarde em segredo agora.
A rota de criação de chaves (
POST /api/v1/api-keys) exige sessão autenticada via cookie de login e não aceita uma API key como autenticação. Isso impede que uma chave vazada gere novas chaves.
Passo 2: submeta uma geração
Os três ids do corpo da requisição são descobríveis pela API:
clothingUploadIds: criados ao enviar uma imagem de roupa comPOST /api/v1/uploads.modelId: escolha um emGET /api/v1/models(opcionalmente filtre com?gender=maleou?gender=female).backgroundId: escolha um emGET /api/v1/backgrounds.
Ambos os endpoints de catálogo retornam cada id e uma imageUrl de preview.
curl -X POST https://api.vestiai.com.br/api/v1/generations \
-H "Authorization: Bearer sk_live_SUA_CHAVE" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"clothingUploadIds": [42],
"modelId": 7,
"backgroundId": 3
}'
Resposta 201 Created:
{
"id": 1891,
"status": "pending",
"modelId": 7,
"backgroundId": 3,
"clothingUploadIds": [42],
"resultUrl": null,
"createdAt": "2026-07-01T12:00:00.000Z"
}
O header Idempotency-Key garante que um reenvio acidental não gere uma segunda cobrança de crédito.
Passo 3: faça o poll do resultado
curl https://api.vestiai.com.br/api/v1/generations/1891 \ -H "Authorization: Bearer sk_live_SUA_CHAVE"
Repita até status ser done ou failed. Quando done, o campo resultUrl traz a URL assinada da imagem gerada.
| status | Significado |
|---|---|
| pending | Na fila, aguardando worker |
| processing | Worker processando |
| done | Geração concluída, resultUrl disponível |
| failed | Falha, detalhes no campo error |
Para não precisar fazer polling, registre um webhook e receba generation.completed assim que o job terminar.