sprint 3 · developer_api_specification

Referência da
API de Integração.

Integre os endpoints de provador virtual diretamente no fluxo do seu aplicativo móvel ou plataforma proprietária.

[ Autenticação Pública ]

Todas as requisições públicas do widget devem ser enviadas com a query ou propriedade de corpo `public_key`. As chamadas de backend são restritas e protegidas por regras de Row-Level Security no Supabase PostgreSQL.

Base URL: https://vistoo.app
POST/api/widget/session

Inicializa ou recupera uma sessão de visitante ativa baseada no token e dispositivo, verificando as permissões da chave pública.

Request Headers:

  • Content-Type: application/json
cURL Request
curl -X POST https://vistoo.app/api/widget/session \
  -H "Content-Type: application/json" \
  -d '{"public_key": "vistoo_pub_dev123", "session_token": "token_123", "privacy_mode": "disposable"}'
JSON Response
{
  "success": true,
  "session_id": "7b47b2c0-82a1-4351-a903-8d02e8cb9bca",
  "privacy_mode": "disposable"
}
POST/api/widget/tryon-job

Cria um job de simulação de provador virtual inteligente na fila de renderização. Consome 1 crédito reservado da organização.

Request Headers:

  • Content-Type: application/json
cURL Request
curl -X POST https://vistoo.app/api/widget/tryon-job \
  -H "Content-Type: application/json" \
  -d '{"public_key": "vistoo_pub_dev123", "session_token": "token_123", "product_id": "FIT-512", "selected_size": "M", "selected_preset_id": "ana"}'
JSON Response
{
  "success": true,
  "job_id": "e43b1742-df21-4f11-9a74-c36eb9cf2992",
  "status": "queued"
}
GET/api/widget/tryon-status

Consulta o status e o progresso percentual de renderização do job de try-on. Realiza chamadas JIT se o provedor for o Replicate.

Query Parameters:

  • public_key=vistoo_pub_dev123
  • job_id=e43b1742-df21-4f11-9a74-c36eb9cf2992
cURL Request
curl -X GET "https://vistoo.app/api/widget/tryon-status?public_key=vistoo_pub_dev123&job_id=e43b1742-df21-4f11-9a74-c36eb9cf2992"
JSON Response
{
  "success": true,
  "status": "ready",
  "progress": 100,
  "error_message": null
}