Visão geral da API
Base URL, versionamento, formato de dados, paginação e convenções da API REST do Vendee.
A API do Vendee é REST sobre HTTP, com corpo JSON em request e response.
Base URL e endpoints
Cada recurso é uma função na infraestrutura Supabase do seu projeto. A URL base tem o formato:
https://<seu-projeto>.supabase.co/functions/v1Nesta documentação ela aparece como {BASE_URL}. Os endpoints disponíveis:
| Recurso | Função (path) | Métodos |
|---|---|---|
| Leads | {BASE_URL}/api-v1-leads | POST |
| Negócios | {BASE_URL}/api-v1-deals | GET, POST, PATCH (+ ações) |
| Atividades | {BASE_URL}/api-v1-activities | GET, POST, PATCH |
| Notas | {BASE_URL}/api-v1-notes | GET, POST |
| Contatos | {BASE_URL}/api-v1-contacts | GET, POST, PATCH |
| Empresas | {BASE_URL}/api-v1-companies | GET, POST, PATCH |
| Pipelines | {BASE_URL}/api-v1-pipelines | GET |
Recursos com :id (ex.: um negócio específico) usam o id no path:
{BASE_URL}/api-v1-deals/<uuid>. Ações ficam no segmento seguinte:
{BASE_URL}/api-v1-deals/<uuid>/win.
Versionamento
A versão atual é a v1 (refletida no nome das funções, api-v1-*). Mudanças que
quebram contrato sobem a versão major. Acréscimos compatíveis (novos campos opcionais na
resposta) podem entrar sem nova versão — escreva clientes tolerantes a campos extras.
Formato de dados
- Content-Type:
application/jsonem request e response. - Campos:
snake_caseem inglês (first_name,expected_close_date). - Enums: valores em português (
status: "ganho","perdido","aberto"). - Datas/horários: timestamps são ISO 8601 em UTC com sufixo
Z(2026-06-27T12:00:00.000Z). Campos de data pura (ex.:expected_close_date) usamYYYY-MM-DD. - Dinheiro: números (
value,recurring_value), sem símbolo de moeda.
Paginação (endpoints de lista)
Os GET de lista (deals, activities, contacts, companies) usam paginação por cursor e
devolvem o envelope:
{
"data": [ /* registros */ ],
"meta": { "next_cursor": "f1e2...", "has_more": true }
}limit— quantos registros por página. Padrão 50, máximo 200 (valores acima são reduzidos a 200).cursor— para a próxima página, passe ometa.next_cursorda resposta anterior em?cursor=.... Quandohas_moreforfalse,next_cursorvemnull.since— filtro por data de criação (ISO 8601): retorna só registros comcreated_at >= since.
Exemplo de varredura:
# primeira página
curl "{BASE_URL}/api-v1-deals?limit=100" -H "X-API-Key: vnd_..."
# próxima página
curl "{BASE_URL}/api-v1-deals?limit=100&cursor=f1e2..." -H "X-API-Key: vnd_..."
GET /pipelinesnão pagina — retorna todos os pipelines ativos do workspace de uma vez.
Limites e boas práticas
- Idempotência. No
POST /leads, envie umexternal_idpara que reenvios (timeout de rede, retry automático) não criem registros duplicados — a mesma chave devolve o registro original com"idempotent": true. Nos demaisPOSTde criação (deals,contacts,companies,activities), o mecanismo equivalente é o headerIdempotency-Key: veja a seção "Idempotência" de cada recurso. - Volume. A API aceita 120 requisições por minuto por chave. Passando disso, a resposta é
429 rate_limitedcom o cabeçalhoRetry-Afterdizendo quantos segundos esperar — escreva o seu cliente para respeitar esse cabeçalho em vez de insistir. - Tamanho do corpo.
custom_fieldsaceita no máximo 50 chaves e 10 KB por requisição. - Menor privilégio. Dê à chave apenas os escopos necessários (veja Chaves e escopos) — assim o raio de impacto de um eventual vazamento fica restrito ao que aqueles escopos permitem.
Nesta seção
Autenticação
Header X-API-Key e escopo por workspace.
Chaves e escopos
Criar, listar, revogar e permissões.
Erros
Envelope de erro e catálogo de códigos.
Leads
POST /leads — entrada de leads.
Negócios
GET, POST, PATCH e ações.
Atividades
GET, POST, PATCH.
Notas
GET, POST.
Contatos
GET, POST, PATCH.
Empresas
GET, POST, PATCH.
Pipelines
GET — funis e etapas.