VendeeDocs
Referência

Notas

Criar e listar notas (comentários) vinculadas a um negócio.

GET   {BASE_URL}/api-v1-notes        # lista (exige deal_id)
GET   {BASE_URL}/api-v1-notes/:id     # detalhe
POST  {BASE_URL}/api-v1-notes        # cria

Escopos: notes:read para os GET; notes:write para POST.

Toda nota pertence a um negócio (deal_id obrigatório). Não há PATCH nem DELETE — uma nota criada pela API não é editável nem removível por este recurso.

☠️ A nota é o único caminho que o Otto lê de verdade (ele consulta comentários do negócio como contexto). Se você integra um sistema externo que produz informação relevante sobre um negócio (resumo de reunião, sinal de qualificação, etc.), é aqui que ela deve entrar.

O recurso Nota

CampoTipoNotas
iduuid
deal_iduuidNegócio ao qual a nota pertence.
author_iduuidSempre o membro que criou a chave de API usada na chamada — ver "Autoria", abaixo.
bodystringTexto da nota. Até 10.000 caracteres.
kindenumnote (registro de algo que aconteceu) ou observation (contexto livre do negócio). Padrão note.
sourceenumuser, automation, agent ou integration. Toda nota criada por esta API nasce integration.
created_atdatetime
updated_atdatetime

Autoria

comments.author_id é obrigatório na tabela — uma chave de API não é uma pessoa, então a nota é assinada por quem criou a chave. Não existe um autor genérico "Integrações": se a pessoa que gerou a chave deixou de ser membro ativo do workspace, a chamada falha com 422 no_author_available em vez de atribuir a nota a outra pessoa em silêncio.

A origem (que a nota veio de fora) fica em source = "integration", não em author_id nem em kind — os dois continuam significando o que já significavam antes desta API existir.

Listar notas de um negócio

GET {BASE_URL}/api-v1-notes?deal_id=...

deal_id é obrigatório neste endpoint (a tabela de notas não tem workspace_id próprio — o isolamento por workspace passa por confirmar que o negócio pertence à sua conta).

Filtro (query)TipoNotas
deal_iduuidObrigatório.
kindenumnote ou observation.
sinceISO 8601created_at >= since.
limitintPadrão 50, máx 200.
cursoruuidPróxima página (veja paginação).
curl "{BASE_URL}/api-v1-notes?deal_id=8f3c..." \
  -H "X-API-Key: vnd_sua_chave_aqui"
{
  "data": [ { "id": "5e6f...", "deal_id": "8f3c...", "body": "Reunião concluída...", "kind": "note", "source": "integration", "...": "..." } ],
  "meta": { "next_cursor": null, "has_more": false }
}

Consultar uma nota

GET {BASE_URL}/api-v1-notes/:id → o recurso Nota, ou 404 not_found (inclusive quando a nota existe mas pertence a um negócio de outro workspace).

Criar uma nota

POST {BASE_URL}/api-v1-notes — escopo notes:write.

CampoTipoObrigatórioNotas
deal_iduuidSimDeve pertencer ao seu workspace.
bodystringSim1–10.000 caracteres.
kindenumNãonote ou observation. Padrão note.
curl -X POST "{BASE_URL}/api-v1-notes" \
  -H "X-API-Key: vnd_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{ "deal_id": "8f3c...", "body": "Reunião concluída: decisor presente, orçamento discutido." }'

Resposta 201 Created:

{
  "id": "5e6f...",
  "deal_id": "8f3c...",
  "author_id": "3c2d...",
  "body": "Reunião concluída: decisor presente, orçamento discutido.",
  "kind": "note",
  "source": "integration",
  "created_at": "2026-08-28T14:00:00.000Z",
  "updated_at": "2026-08-28T14:00:00.000Z"
}

Idempotência

Mesmo mecanismo dos demais POST da API — veja Atividades → Idempotência. Envie Idempotency-Key para reprocessar a mesma chamada sem duplicar a nota:

curl -X POST "{BASE_URL}/api-v1-notes" \
  -H "X-API-Key: vnd_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: call-9f21" \
  -d '{ "deal_id": "8f3c...", "body": "Reunião concluída: decisor presente." }'

Erros possíveis

HTTPcodeQuando
401missing_api_key / invalid_api_key / revoked_api_keyAutenticação.
403insufficient_scopeFalta notes:read ou notes:write.
404not_foundNota não existe, ou pertence a negócio de outro workspace.
400bad_requestCorpo ausente/JSON inválido.
422validation_errorCampo ou parâmetro inválido, incluindo deal_id ausente na listagem.
422invalid_referencedeal_id fora do workspace.
422no_author_availableQuem criou a API Key não é (mais) membro ativo do workspace.
422invalid_cursorcursor inválido.
400invalid_idempotency_keyIdempotency-Key fora de 1–255 caracteres.
422idempotency_conflictMesma Idempotency-Key com corpo ou recurso diferente.
409idempotency_in_progressMesma Idempotency-Key já em processamento (corrida).
405method_not_allowedMétodo não suportado (inclui PATCH/DELETE, que este recurso não tem).
500internal_errorFalha interna.

Nesta página