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

  1. 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.
  2. 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.
  3. Troque a chave no exemplo abaixo e rode no seu terminal.
curl -s "https://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ãoO que a chave faz
readA chave lê contatos, empresas, negócios, tarefas, notas e etapas. Não cadastra, não altera e não exclui nada.
read_writeAlé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://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"
  }
}
HTTPcodeQuando acontece
401unauthorizedChave ausente, mal formada ou revogada.
403forbiddenO plano da conta não inclui a API, a chave é só de consulta, ou o limite de registros do plano foi atingido.
404not_foundRecurso inexistente ou id que não é desta conta.
400invalid_requestParâmetro ou campo inválido — veja field.
429rate_limitedPassou do teto por minuto. Respeite o Retry-After.
405method_not_allowedMétodo que o recurso não aceita — PUT, ou alterar/excluir onde só há leitura.

Recursos

Base: https://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://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://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}
CampoTipoO que é
idtextoIdentificador do contato.
first_nametextoPrimeiro nome.
last_nametextoSobrenome.
emailtexto ou nuloE-mail principal.
phonetexto ou nuloTelefone principal.
titletexto ou nuloCargo.
company_idtexto ou nuloEmpresa a que pertence.
whatsapp_opt_inverdadeiro/falsoAutorizou receber mensagem no WhatsApp.
custom_dataobjetoValores dos campos do formulário. As chaves vêm de GET /custom_fields?object=person.
created_atdata ISO 8601Quando foi cadastrado.
updated_atdata 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}
CampoTipoO que é
idtextoIdentificador da empresa.
nametextoRazão social ou nome fantasia.
domaintexto ou nuloDomínio principal.
websitetexto ou nuloSite.
industrytexto ou nuloSegmento.
custom_dataobjetoValores dos campos do formulário. As chaves vêm de GET /custom_fields?object=company.
created_atdata ISO 8601Quando foi cadastrada.
updated_atdata 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}
CampoTipoO que é
idtextoIdentificador do negócio.
titletextoTítulo.
value_centsnúmero inteiroValor em centavos.
currencytextoMoeda do valor.
probabilitynúmero inteiroChance de fechar, de 0 a 100.
stage_idtextoEtapa atual.
stage_nametextoNome da etapa atual.
stage_typeNORMAL, WON ou LOSTSe a etapa é de andamento, de ganho ou de perda.
company_idtexto ou nuloEmpresa do negócio.
lost_reasontexto ou nuloMotivo da perda.
expected_close_atdata ISO 8601 ou nuloPrevisão de fechamento.
custom_dataobjetoValores dos campos do formulário. As chaves vêm de GET /custom_fields?object=deal.
created_atdata ISO 8601Quando entrou no funil.
updated_atdata 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}
CampoTipoO que é
idtextoIdentificador da tarefa.
titletexto ou nuloTítulo.
bodytexto ou nuloDetalhes.
due_atdata ISO 8601 ou nuloPrazo.
completed_atdata ISO 8601 ou nuloQuando foi concluída. Nulo = ainda aberta.
person_idtexto ou nuloContato relacionado.
company_idtexto ou nuloEmpresa relacionada.
deal_idtexto ou nuloNegócio relacionado.
created_atdata ISO 8601Quando foi criada.
updated_atdata 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}
CampoTipoO que é
idtextoIdentificador da nota.
titletexto ou nuloTítulo.
bodytexto ou nuloConteúdo.
person_idtexto ou nuloContato relacionado.
company_idtexto ou nuloEmpresa relacionada.
deal_idtexto ou nuloNegócio relacionado.
created_atdata ISO 8601Quando foi escrita.
updated_atdata 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}
CampoTipoO que é
idtextoIdentificador do registro.
typeNOTE, TASK, CALL, EMAIL_MANUAL ou SYSTEMO que é o registro.
titletexto ou nuloTítulo.
bodytexto ou nuloConteúdo.
due_atdata ISO 8601 ou nuloPrazo, quando é tarefa.
completed_atdata ISO 8601 ou nuloConclusão, quando é tarefa.
person_idtexto ou nuloContato relacionado.
company_idtexto ou nuloEmpresa relacionada.
deal_idtexto ou nuloNegócio relacionado.
created_atdata ISO 8601Quando aconteceu.
updated_atdata 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
CampoTipoO que é
idtextoIdentificador da etapa.
nametextoNome dado pela equipe.
positionnúmero inteiroOrdem no funil.
typeNORMAL, WON ou LOSTSe a etapa é de andamento, de ganho ou de perda.
colortextoCor 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}
CampoTipoO que é
idtextoIdentificador da conta.
sourceembedded_signup ou cloud_apiComo o número entrou.
labeltextoNome nesta lista.
phone_number_idtextoID do número na Cloud API.
waba_idtextoID da conta comercial do WhatsApp.
display_phonetexto ou nuloNúmero que o cliente vê.
verified_nametexto ou nuloNome verificado na Meta.
statusdisconnected, connected ou errorSe a conexão respondeu ao teste.
quality_ratingtextoQualidade do número na Meta (GREEN, YELLOW, RED).
messaging_limittextoTeto diário que a Meta libera neste número.
abouttextoRecado do perfil comercial.
mappings_countnúmero inteiroQuantos destinos este número alimenta.
created_atdata ISO 8601Quando foi ligada.
updated_atdata 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}
CampoTipoO que é
idtextoIdentificador do mapeamento.
account_idtextoConta que origina o aviso.
nametextoNome deste destino.
targetcrm ou httpCaixa de entrada ou endereço HTTP.
urltextoEndereço de destino. Vazio quando o alvo é a caixa de entrada.
eventstexto* para tudo, ou messages / statuses.
enabledverdadeiro ou falsoSe está ligado.
has_secretverdadeiro ou falsoSe existe um segredo extra. O valor em si não sai.
last_statustexto ou nuloÚltimo código HTTP (ou error) do encaminhamento.
last_errortexto ou nuloMotivo da última falha, quando houve.
last_delivery_atdata ISO 8601 ou nuloQuando o último aviso saiu.
created_atdata ISO 8601Quando foi criado.
updated_atdata 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}
CampoTipoO que é
idtextoIdentificador do campo.
objectperson, company ou dealEm qual formulário o campo aparece.
nametextoRótulo que a pessoa lê.
keytextoChave gravada em custom_data. Só letras, números e _.
typetext, number, select, date, bool ou currencyComo o valor é preenchido.
optionslista de textosOpções quando o tipo é select. Vazio nos outros.
requiredverdadeiro ou falsoSe o formulário da tela exige o campo.
positionnúmero inteiroOrdem 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}
CampoTipoO que é
idtextoIdentificador neste espaço.
account_idtextoConta (número) dona do modelo.
nametextoNome na Meta (letras, números e _).
languagetextoIdioma, em geral pt_BR.
categoryUTILITY, MARKETING ou AUTHENTICATIONO que a Meta cobra quando o modelo sai.
statustextoPENDING, APPROVED, REJECTED ou PAUSED.
bodytextoTexto do corpo, com {{1}} se houver variável.
rejected_reasontexto ou nuloPor que a Meta recusou, quando recusou.
created_atdata ISO 8601Quando foi pedido.
updated_atdata 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
CampoTipoO que é
idtextoIdentificador da mensagem.
conversation_idtextoConversa em que ficou gravada.
totextoTelefone de destino.
directionIN ou OUTEntrada ou saída.
typeTEXT ou TEMPLATETexto livre ou modelo.
bodytexto ou nuloConteúdo.
template_nametexto ou nuloNome do modelo, quando for.
statustextoPENDING, SENT, DELIVERED, READ ou FAILED.
pricing_categorytexto ou nuloO que a Meta cobra.
created_atdata ISO 8601Quando 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
CampoTipoO que é
idtextoÉ o id da conta.
account_idtextoMesmo id.
abouttextoRecado.
emailtextoE-mail do perfil.
descriptiontextoDescrição.
addresstextoEndereço.
websiteslista de textosSites do perfil.
verticaltextoSegmento na Meta.
picture_urltexto ou nuloFoto de perfil atual.
usernametexto ou nuloNome de usuário (@) pedido ou ativo.
username_statustexto ou nuloSituação do nome de usuário na Meta.
display_nametexto ou nuloNome exibido aprovado.
name_statustexto ou nuloSituação do nome exibido.
new_display_nametexto ou nuloNome pedido e ainda em análise.
new_name_statustexto ou nuloSituação do pedido de nome.
quality_ratingtextoQualidade do número.
messaging_limittextoTeto diário.
synced_atdata 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}
CampoTipoO que é
idtextoIdentificador neste espaço.
account_idtextoConta dona do fluxo.
meta_idtextoID na Meta.
nametextoNome do fluxo.
statustextoDRAFT ou PUBLISHED.
categorieslista de textosCategorias na Meta.
data_urltextohttps que a Meta chama ao preencher o formulário.
created_atdata ISO 8601Quando foi criado.
updated_atdata 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

EventoDispara quandoVai em data
deal.createdUm negócio novo entra no funil.id, title, valueCents
deal.stage_changedUm negócio é movido para outra etapa do funil.id, title, stageId, stageName, valueCents
deal.wonUm negócio chega a uma etapa de fechamento com ganho.id, title, stageId, stageName, valueCents
deal.lostUm negócio chega a uma etapa de perda. Vai com o motivo, quando houver.id, title, stageId, stageName, valueCents, lostReason

Pessoa

EventoDispara quandoVai em data
person.createdUma pessoa nova é cadastrada.id, name, email

Empresa

EventoDispara quandoVai em data
company.createdUma empresa nova é cadastrada.id, name

Tarefa

EventoDispara quandoVai em data
task.createdAlguém agenda uma tarefa, com ou sem prazo.id, title, dueAt
task.completedUma tarefa é marcada como feita.id, title, completedAt

E-mail

EventoDispara quandoVai em data
email.inbound_receivedUm 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:

  • PUT nã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á expand de relações: use o company_id devolvido 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.