Guia de integração
A API do Prospa
Leia contatos, empresas, negócios, tarefas e notas, cadastre, corrija e exclua registros a partir do seu site ou do seu ERP, e receba um aviso no seu servidor quando algo muda por aqui. Tudo em HTTP e JSON, sem biblioteca nenhuma para instalar.
Começar em 3 passos
- No Prospa, abra Configurações › Chaves de integração, dê um nome à integração e escolha se ela pode só consultar ou também cadastrar.
- Copie a chave na hora em que ela aparecer. Guardamos só o resumo criptográfico dela, então não há como mostrá-la de novo — se perder, gere outra.
- Troque a chave no exemplo abaixo e rode no seu terminal.
curl -s "https://www.prospa.com.br/api/v1/people?limit=2" \
-H "Authorization: Bearer atr_sua_chave_aqui"A resposta tem sempre este formato:
{
"data": [
{
"id": "clx8f2k9a0001",
"first_name": "Marina",
"last_name": "Duarte",
"email": "marina@greenleaf.com.br",
"phone": "+5511998877665",
"title": "Diretora de operações",
"company_id": "clx8f2k9a0000",
"whatsapp_opt_in": true,
"created_at": "2026-07-02T13:40:11.000Z",
"updated_at": "2026-08-09T18:02:55.000Z"
}
],
"has_more": true,
"next_cursor": "clx8f2k9a0001"
}Chaves e permissões
Toda chamada leva o cabeçalho Authorization: Bearer atr_…. A chave vale para uma conta do Prospa e não expira — quem revoga é você, removendo-a em Configurações.
| Permissão | O que a chave faz |
|---|---|
read | A chave lê contatos, empresas, negócios, tarefas, notas e etapas. Não cadastra, não altera e não exclui nada. |
read_write | Além de ler, a chave cadastra, corrige e exclui contatos, empresas, negócios, tarefas e notas. |
A permissão é escolhida na criação e não muda depois: para trocar, gere outra chave e substitua no seu sistema. Uma chave read que tenta cadastrar recebe 403 forbidden.
A API faz parte dos planos com integrações avançadas. Numa conta cujo plano não inclui o recurso — ou com a assinatura em atraso — toda chamada responde 403 forbidden, com o caminho da tela onde isso se resolve. A chave continua válida: assim que o plano estiver em dia, a integração volta sozinha.
Paginação, sincronização e erros
Paginação por cursor
As listas vêm em páginas de 50 registros (?limit= aceita de 1 a 100). Quando houver mais, has_more vem true e next_cursor traz o ponto de partida da próxima página — repasse em ?cursor= e repita até has_more virar false. Cursor que não pertence à conta é recusado com 400, em vez de devolver lista vazia fingindo que acabou.
Sincronizar só o que mudou
?updated_since= aceita uma data ISO 8601 e devolve apenas o que foi alterado a partir dela. Guarde o horário da última sincronização e mande na próxima:
curl -s "https://www.prospa.com.br/api/v1/deals?updated_since=2026-08-01T00:00:00Z&limit=100" \
-H "Authorization: Bearer atr_sua_chave_aqui"Erros
Todo erro — do 400 ao 500 — tem o mesmo formato, então você escreve um tratamento só. field aparece quando o problema é um parâmetro específico.
{
"error": {
"code": "invalid_request",
"message": "limit precisa ser um número inteiro entre 1 e 100.",
"field": "limit"
}
}| HTTP | code | Quando acontece |
|---|---|---|
| 401 | unauthorized | Chave ausente, mal formada ou revogada. |
| 403 | forbidden | O plano da conta não inclui a API, a chave é só de consulta, ou o limite de registros do plano foi atingido. |
| 404 | not_found | Recurso inexistente ou id que não é desta conta. |
| 400 | invalid_request | Parâmetro ou campo inválido — veja field. |
| 429 | rate_limited | Passou do teto por minuto. Respeite o Retry-After. |
| 405 | method_not_allowed | Método que o recurso não aceita — PUT, ou alterar/excluir onde só há leitura. |
Recursos
Base: https://www.prospa.com.br/api/v1. Excluídos não aparecem em nenhuma lista. Datas saem em ISO 8601, no fuso UTC.
curl -s -X POST "https://www.prospa.com.br/api/v1/deals" \
-H "Authorization: Bearer atr_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"title": "Implantação — GreenLeaf",
"value_cents": 480000,
"company_id": "clx8f2k9a0000"
}'PATCH altera só o que você mandar: campo ausente do corpo fica como está, campo enviado vazio (ou null) apaga o valor. É o que deixa sincronizar um cadastro sem apagar o que o time preencheu por aqui:
curl -s -X PATCH "https://www.prospa.com.br/api/v1/people/clx8f2k9a0001" \
-H "Authorization: Bearer atr_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"phone": "+5511998877665",
"title": null
}'Contatos /people
As pessoas do espaço, com empresa e telefone.
- GET /api/v1/people
- GET /api/v1/people/{id}
- POST /api/v1/people
- PATCH /api/v1/people/{id}
- DELETE /api/v1/people/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador do contato. |
first_name | texto | Primeiro nome. |
last_name | texto | Sobrenome. |
email | texto ou nulo | E-mail principal. |
phone | texto ou nulo | Telefone principal. |
title | texto ou nulo | Cargo. |
company_id | texto ou nulo | Empresa a que pertence. |
whatsapp_opt_in | verdadeiro/falso | Autorizou receber mensagem no WhatsApp. |
custom_data | objeto | Valores dos campos do formulário. As chaves vêm de GET /custom_fields?object=person. |
created_at | data ISO 8601 | Quando foi cadastrado. |
updated_at | data ISO 8601 | Última alteração. |
Para cadastrar: obrigatório first_name · opcional last_name, email, phone, title, company_id, whatsapp_opt_in, custom_data. `company_id` precisa ser de uma empresa do mesmo espaço.
Para alterar: first_name, last_name, email, phone, title, company_id, whatsapp_opt_in, custom_data. Mande só o que mudou. Campo enviado vazio (ou `null`) apaga o valor; campo ausente do corpo fica como está. `custom_data` mescla com o que já está gravado.
Para excluir: o registro sai das listas e da consulta por id, como quando alguém exclui pela tela. A resposta é {"data":{"id":"…","deleted":true}}.
Empresas /companies
As contas do espaço.
- GET /api/v1/companies
- GET /api/v1/companies/{id}
- POST /api/v1/companies
- PATCH /api/v1/companies/{id}
- DELETE /api/v1/companies/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador da empresa. |
name | texto | Razão social ou nome fantasia. |
domain | texto ou nulo | Domínio principal. |
website | texto ou nulo | Site. |
industry | texto ou nulo | Segmento. |
custom_data | objeto | Valores dos campos do formulário. As chaves vêm de GET /custom_fields?object=company. |
created_at | data ISO 8601 | Quando foi cadastrada. |
updated_at | data ISO 8601 | Última alteração. |
Para cadastrar: obrigatório name · opcional domain, website, industry, custom_data. Nome repetido não é recusado — o CRM aceita homônimas.
Para alterar: name, domain, website, industry, custom_data. `name` não pode ficar vazio: empresa sem nome some das listas do CRM.
Para excluir: o registro sai das listas e da consulta por id, como quando alguém exclui pela tela. A resposta é {"data":{"id":"…","deleted":true}}.
Negócios /deals
As oportunidades do funil, com etapa e valor.
- GET /api/v1/deals
- GET /api/v1/deals/{id}
- POST /api/v1/deals
- PATCH /api/v1/deals/{id}
- DELETE /api/v1/deals/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador do negócio. |
title | texto | Título. |
value_cents | número inteiro | Valor em centavos. |
currency | texto | Moeda do valor. |
probability | número inteiro | Chance de fechar, de 0 a 100. |
stage_id | texto | Etapa atual. |
stage_name | texto | Nome da etapa atual. |
stage_type | NORMAL, WON ou LOST | Se a etapa é de andamento, de ganho ou de perda. |
company_id | texto ou nulo | Empresa do negócio. |
lost_reason | texto ou nulo | Motivo da perda. |
expected_close_at | data ISO 8601 ou nulo | Previsão de fechamento. |
custom_data | objeto | Valores dos campos do formulário. As chaves vêm de GET /custom_fields?object=deal. |
created_at | data ISO 8601 | Quando entrou no funil. |
updated_at | data ISO 8601 | Última alteração. |
Para cadastrar: obrigatório title · opcional value_cents, stage_id, company_id, probability, expected_close_at, custom_data. Sem `stage_id`, o negócio entra na primeira etapa do funil.
Para alterar: title, value_cents, stage_id, company_id, probability, expected_close_at, lost_reason, custom_data. Mudar `stage_id` é o que marca o negócio como ganho ou perdido, e dispara os mesmos avisos da tela (`deal.stage_changed` e, conforme a etapa, `deal.won` ou `deal.lost`). Em etapa de perda, mande `lost_reason`.
Para excluir: o registro sai das listas e da consulta por id, como quando alguém exclui pela tela. A resposta é {"data":{"id":"…","deleted":true}}.
Tarefas /tasks
Os compromissos da equipe, abertos e concluídos.
- GET /api/v1/tasks
- GET /api/v1/tasks/{id}
- POST /api/v1/tasks
- PATCH /api/v1/tasks/{id}
- DELETE /api/v1/tasks/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador da tarefa. |
title | texto ou nulo | Título. |
body | texto ou nulo | Detalhes. |
due_at | data ISO 8601 ou nulo | Prazo. |
completed_at | data ISO 8601 ou nulo | Quando foi concluída. Nulo = ainda aberta. |
person_id | texto ou nulo | Contato relacionado. |
company_id | texto ou nulo | Empresa relacionada. |
deal_id | texto ou nulo | Negócio relacionado. |
created_at | data ISO 8601 | Quando foi criada. |
updated_at | data ISO 8601 | Última alteração. |
Para cadastrar: obrigatório title · opcional body, due_at, person_id, company_id, deal_id. Sem `due_at` a tarefa fica sem prazo — e sem alerta de atraso.
Para alterar: title, body, due_at, completed_at, person_id, company_id, deal_id. `completed_at` com uma data conclui a tarefa (e dispara `task.completed`); com `null`, reabre.
Para excluir: o registro sai das listas e da consulta por id, como quando alguém exclui pela tela. A resposta é {"data":{"id":"…","deleted":true}}.
Notas /notes
As anotações registradas nas fichas.
- GET /api/v1/notes
- GET /api/v1/notes/{id}
- POST /api/v1/notes
- PATCH /api/v1/notes/{id}
- DELETE /api/v1/notes/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador da nota. |
title | texto ou nulo | Título. |
body | texto ou nulo | Conteúdo. |
person_id | texto ou nulo | Contato relacionado. |
company_id | texto ou nulo | Empresa relacionada. |
deal_id | texto ou nulo | Negócio relacionado. |
created_at | data ISO 8601 | Quando foi escrita. |
updated_at | data ISO 8601 | Última alteração. |
Para cadastrar: obrigatório body · opcional title, person_id, company_id, deal_id. Uma nota sem contato, empresa ou negócio fica solta na conta.
Para alterar: title, body, person_id, company_id, deal_id. `body` não pode ficar vazio: nota sem conteúdo não é nota.
Para excluir: o registro sai das listas e da consulta por id, como quando alguém exclui pela tela. A resposta é {"data":{"id":"…","deleted":true}}.
Histórico /activities
Tudo que aconteceu na conta — notas, tarefas, ligações, e-mails e registros automáticos.
- GET /api/v1/activities
- GET /api/v1/activities/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador do registro. |
type | NOTE, TASK, CALL, EMAIL_MANUAL ou SYSTEM | O que é o registro. |
title | texto ou nulo | Título. |
body | texto ou nulo | Conteúdo. |
due_at | data ISO 8601 ou nulo | Prazo, quando é tarefa. |
completed_at | data ISO 8601 ou nulo | Conclusão, quando é tarefa. |
person_id | texto ou nulo | Contato relacionado. |
company_id | texto ou nulo | Empresa relacionada. |
deal_id | texto ou nulo | Negócio relacionado. |
created_at | data ISO 8601 | Quando aconteceu. |
updated_at | data ISO 8601 | Última alteração. |
Só leitura.
Etapas do funil /stages
As colunas do funil, na ordem em que aparecem. Use o `id` daqui para criar um negócio na etapa certa.
- GET /api/v1/stages
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador da etapa. |
name | texto | Nome dado pela equipe. |
position | número inteiro | Ordem no funil. |
type | NORMAL, WON ou LOST | Se a etapa é de andamento, de ganho ou de perda. |
color | texto | Cor usada no funil. |
Só leitura. Devolve a lista inteira, sem paginação.
Contas do WhatsApp /whatsapp_accounts
Números ligados ao aplicativo da Meta desta instalação. O aviso da Meta cai no Prospa; o mapeamento decide para onde segue. A chave de acesso não sai por aqui.
- GET /api/v1/whatsapp_accounts
- GET /api/v1/whatsapp_accounts/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador da conta. |
source | embedded_signup ou cloud_api | Como o número entrou. |
label | texto | Nome nesta lista. |
phone_number_id | texto | ID do número na Cloud API. |
waba_id | texto | ID da conta comercial do WhatsApp. |
display_phone | texto ou nulo | Número que o cliente vê. |
verified_name | texto ou nulo | Nome verificado na Meta. |
status | disconnected, connected ou error | Se a conexão respondeu ao teste. |
quality_rating | texto | Qualidade do número na Meta (GREEN, YELLOW, RED). |
messaging_limit | texto | Teto diário que a Meta libera neste número. |
about | texto | Recado do perfil comercial. |
mappings_count | número inteiro | Quantos destinos este número alimenta. |
created_at | data ISO 8601 | Quando foi ligada. |
updated_at | data ISO 8601 | Última alteração. |
Só leitura.
Mapeamentos do WhatsApp /whatsapp_mappings
Para onde o aviso da Meta vai depois de cair aqui. O WMS (e qualquer outro sistema) cadastra o endereço HTTP neste recurso — o webhook da Meta continua apontando para o Prospa.
- GET /api/v1/whatsapp_mappings
- GET /api/v1/whatsapp_mappings/{id}
- POST /api/v1/whatsapp_mappings
- PATCH /api/v1/whatsapp_mappings/{id}
- DELETE /api/v1/whatsapp_mappings/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador do mapeamento. |
account_id | texto | Conta que origina o aviso. |
name | texto | Nome deste destino. |
target | crm ou http | Caixa de entrada ou endereço HTTP. |
url | texto | Endereço de destino. Vazio quando o alvo é a caixa de entrada. |
events | texto | * para tudo, ou messages / statuses. |
enabled | verdadeiro ou falso | Se está ligado. |
has_secret | verdadeiro ou falso | Se existe um segredo extra. O valor em si não sai. |
last_status | texto ou nulo | Último código HTTP (ou error) do encaminhamento. |
last_error | texto ou nulo | Motivo da última falha, quando houve. |
last_delivery_at | data ISO 8601 ou nulo | Quando o último aviso saiu. |
created_at | data ISO 8601 | Quando foi criado. |
updated_at | data ISO 8601 | Última alteração. |
Para cadastrar: obrigatório account_id, name, target · opcional url, events, secret, enabled. No destino http, url é obrigatório. secret é opcional e não volta na leitura.
Para alterar: name, url, events, secret, enabled. account_id e target não mudam — apague e crie outro.
Para excluir: o registro sai das listas e da consulta por id, como quando alguém exclui pela tela. A resposta é {"data":{"id":"…","deleted":true}}.
Campos do formulário /custom_fields
O modelo do formulário de contato, empresa ou negócio. Crie o campo aqui; o valor de cada registro vai em `custom_data` desses recursos.
- GET /api/v1/custom_fields
- GET /api/v1/custom_fields/{id}
- POST /api/v1/custom_fields
- PATCH /api/v1/custom_fields/{id}
- DELETE /api/v1/custom_fields/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador do campo. |
object | person, company ou deal | Em qual formulário o campo aparece. |
name | texto | Rótulo que a pessoa lê. |
key | texto | Chave gravada em custom_data. Só letras, números e _. |
type | text, number, select, date, bool ou currency | Como o valor é preenchido. |
options | lista de textos | Opções quando o tipo é select. Vazio nos outros. |
required | verdadeiro ou falso | Se o formulário da tela exige o campo. |
position | número inteiro | Ordem no formulário, começando em 0. |
Para cadastrar: obrigatório object, name · opcional key, type, options, required, position. Sem `key`, ela nasce do nome. Sem `type`, o campo é texto. O teto é o `customFieldsPerObject` do plano, por objeto.
Para alterar: name, type, options, required, position. `object` e `key` não mudam — apague e crie outro para não órfão o que já foi preenchido.
Para excluir: o registro sai das listas e da consulta por id, como quando alguém exclui pela tela. A resposta é {"data":{"id":"…","deleted":true}}.
Modelos de WhatsApp /whatsapp_templates
Modelos de mensagem na Meta. Cria, lista e apaga daqui — a análise da Meta atualiza o status sozinha.
- GET /api/v1/whatsapp_templates
- GET /api/v1/whatsapp_templates/{id}
- POST /api/v1/whatsapp_templates
- DELETE /api/v1/whatsapp_templates/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador neste espaço. |
account_id | texto | Conta (número) dona do modelo. |
name | texto | Nome na Meta (letras, números e _). |
language | texto | Idioma, em geral pt_BR. |
category | UTILITY, MARKETING ou AUTHENTICATION | O que a Meta cobra quando o modelo sai. |
status | texto | PENDING, APPROVED, REJECTED ou PAUSED. |
body | texto | Texto do corpo, com {{1}} se houver variável. |
rejected_reason | texto ou nulo | Por que a Meta recusou, quando recusou. |
created_at | data ISO 8601 | Quando foi pedido. |
updated_at | data ISO 8601 | Última alteração de status. |
Para cadastrar: obrigatório account_id, name, body · opcional language, category, header, footer, examples, quick_replies, url_label, url_href, phone_label, phone_number. examples é lista de textos, um por variável do corpo. quick_replies é lista de textos dos botões. Cabeçalho com mídia só pela tela, que sobe o arquivo.
Para excluir: o registro sai das listas e da consulta por id, como quando alguém exclui pela tela. A resposta é {"data":{"id":"…","deleted":true}}.
Envio de WhatsApp /whatsapp_messages
Manda texto (dentro da janela de 24h) ou modelo aprovado. Não precisa do painel da Meta.
- GET /api/v1/whatsapp_messages
- GET /api/v1/whatsapp_messages/{id}
- POST /api/v1/whatsapp_messages
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador da mensagem. |
conversation_id | texto | Conversa em que ficou gravada. |
to | texto | Telefone de destino. |
direction | IN ou OUT | Entrada ou saída. |
type | TEXT ou TEMPLATE | Texto livre ou modelo. |
body | texto ou nulo | Conteúdo. |
template_name | texto ou nulo | Nome do modelo, quando for. |
status | texto | PENDING, SENT, DELIVERED, READ ou FAILED. |
pricing_category | texto ou nulo | O que a Meta cobra. |
created_at | data ISO 8601 | Quando saiu ou chegou. |
Para cadastrar: obrigatório account_id, to, type · opcional text, template_name, language, parameters. type=text exige text. type=template exige template_name. parameters é lista de textos do corpo.
Perfil comercial do WhatsApp /whatsapp_profiles
Recado, e-mail e sites que o cliente vê no número. POST atualiza na Meta e aqui.
- GET /api/v1/whatsapp_profiles
- GET /api/v1/whatsapp_profiles/{id}
- POST /api/v1/whatsapp_profiles
| Campo | Tipo | O que é |
|---|---|---|
id | texto | É o id da conta. |
account_id | texto | Mesmo id. |
about | texto | Recado. |
email | texto | E-mail do perfil. |
description | texto | Descrição. |
address | texto | Endereço. |
websites | lista de textos | Sites do perfil. |
vertical | texto | Segmento na Meta. |
picture_url | texto ou nulo | Foto de perfil atual. |
username | texto ou nulo | Nome de usuário (@) pedido ou ativo. |
username_status | texto ou nulo | Situação do nome de usuário na Meta. |
display_name | texto ou nulo | Nome exibido aprovado. |
name_status | texto ou nulo | Situação do nome exibido. |
new_display_name | texto ou nulo | Nome pedido e ainda em análise. |
new_name_status | texto ou nulo | Situação do pedido de nome. |
quality_rating | texto | Qualidade do número. |
messaging_limit | texto | Teto diário. |
synced_at | data ISO 8601 ou nulo | Última leitura na Meta. |
Para cadastrar: obrigatório account_id · opcional about, email, description, address, websites, vertical, sync, username, display_name, picture_url, transfer_username. sync=true só puxa da Meta. username e display_name pedem análise. picture_url baixa a imagem e manda como foto de perfil.
Fluxos do WhatsApp /whatsapp_flows
WhatsApp Flow — formulário dentro da conversa. Cria, publica e apaga daqui.
- GET /api/v1/whatsapp_flows
- GET /api/v1/whatsapp_flows/{id}
- POST /api/v1/whatsapp_flows
- DELETE /api/v1/whatsapp_flows/{id}
| Campo | Tipo | O que é |
|---|---|---|
id | texto | Identificador neste espaço. |
account_id | texto | Conta dona do fluxo. |
meta_id | texto | ID na Meta. |
name | texto | Nome do fluxo. |
status | texto | DRAFT ou PUBLISHED. |
categories | lista de textos | Categorias na Meta. |
data_url | texto | https que a Meta chama ao preencher o formulário. |
created_at | data ISO 8601 | Quando foi criado. |
updated_at | data ISO 8601 | Última alteração. |
Para cadastrar: obrigatório account_id, name · opcional json, categories, publish, data_url. Sem json usa um fluxo mínimo. publish=true publica na hora. data_url é https.
Para excluir: o registro sai das listas e da consulta por id, como quando alguém exclui pela tela. A resposta é {"data":{"id":"…","deleted":true}}.
Avisos no seu sistema
Em vez de perguntar de minuto em minuto se algo mudou, cadastre um endereço em Configurações › Avisos para outros sistemas e escolha o que ele recebe. Mandamos um POST com este corpo:
{
"event": "deal.stage_changed",
"at": "2026-08-11T14:22:03.114Z",
"data": {
"id": "clx8f2k9a0002",
"title": "Implantação — GreenLeaf",
"stageId": "clx8f2k9a0010",
"stageName": "Proposta enviada",
"valueCents": 480000
}
}Vão também os cabeçalhos X-Prospa-Event (o nome do evento) e, se você tiver definido um segredo, X-Prospa-Signature — o HMAC SHA-256 do corpo recebido, em hexadecimal, calculado com esse segredo. Compare antes de confiar no aviso.
São 9 eventos. Um destino pode assinar quantos quiser; * assina todos, inclusive os que criarmos depois.
Negócio
| Evento | Dispara quando | Vai em data |
|---|---|---|
deal.created | Um negócio novo entra no funil. | id, title, valueCents |
deal.stage_changed | Um negócio é movido para outra etapa do funil. | id, title, stageId, stageName, valueCents |
deal.won | Um negócio chega a uma etapa de fechamento com ganho. | id, title, stageId, stageName, valueCents |
deal.lost | Um negócio chega a uma etapa de perda. Vai com o motivo, quando houver. | id, title, stageId, stageName, valueCents, lostReason |
Pessoa
| Evento | Dispara quando | Vai em data |
|---|---|---|
person.created | Uma pessoa nova é cadastrada. | id, name, email |
Empresa
| Evento | Dispara quando | Vai em data |
|---|---|---|
company.created | Uma empresa nova é cadastrada. | id, name |
Tarefa
| Evento | Dispara quando | Vai em data |
|---|---|---|
task.created | Alguém agenda uma tarefa, com ou sem prazo. | id, title, dueAt |
task.completed | Uma tarefa é marcada como feita. | id, title, completedAt |
| Evento | Dispara quando | Vai em data |
|---|---|---|
email.inbound_received | Um e-mail chega na caixa do espaço. | conversationId, email, subject |
Não reenviamos aviso que falhou: se o seu servidor estiver fora do ar, aquele evento se perde. Para não depender disso, sincronize de tempos em tempos com updated_since — os dois caminhos se completam.
Limites e o que ainda não existe
Cada chave pode fazer até 120 chamadas por minuto. Ao passar disso a resposta é 429 com Retry-After em segundos — espere e repita. Toda resposta traz X-RateLimit-Remaining com quantas ainda cabem na janela.
Preferimos dizer o que falta a deixar você descobrir na hora da integração:
PUTnão existe: alterar éPATCH, que mexe só nos campos enviados. Trocar o registro inteiro de uma vez ficaria parecido e apagaria o resto;- o histórico (
/activities) e as etapas do funil (/stages) são só de leitura — o que aconteceu não se reescreve, e o funil se desenha em Configurações › Etapas do funil; - não há
expandde relações: use ocompany_iddevolvido para buscar a empresa; - a busca por texto e os filtros das telas ainda não estão na API;
- o aviso que falha não é reenviado.
Precisa de algo dessa lista para fechar a sua integração? Escreva para suporte@prospa.com.br — priorizamos o que aparece aqui.