Entrar no app

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).
  • curl instalado.

Passo 1: crie uma API key

  1. Acesse Dashboard > Configurações > API Keys.
  2. Clique em Nova chave, dê um nome opcional e escolha a validade.
  3. 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 com POST /api/v1/uploads.
  • modelId: escolha um em GET /api/v1/models (opcionalmente filtre com ?gender=male ou ?gender=female).
  • backgroundId: escolha um em GET /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.

statusSignificado
pendingNa fila, aguardando worker
processingWorker processando
doneGeração concluída, resultUrl disponível
failedFalha, detalhes no campo error

Para não precisar fazer polling, registre um webhook e receba generation.completed assim que o job terminar.