Pular para o conteúdo
GET/contatos

Listar e buscar contatos

contatos:lerpaginada

Busca por telefone acha com e sem o 9º dígito.

GET /contatos

curl "https://chat.forsi.com.br/api/v1/contatos?telefone=31988887777" \
  -H "Authorization: Bearer $FORSI_CHAVE"
Resposta 200
{
  "dados": [
    {
      "id": "08054a7f-a752-481e-9915-cf4cf944df39",
      "nome": "Maria Souza",
      "nome_whatsapp": "Maria",
      "telefone": "+5531988887777",
      "email": "maria@exemplo.com.br",
      "instagram": "maria.souza",
      "campos": {"convenio":"Unimed"},
      "bloqueado": false,
      "criado_em": "2026-10-04T13:05:12.481Z",
      "atualizado_em": "2026-10-04T13:05:12.481Z",
      "primeiro_anuncio": {
        "anuncio_id": "texto",
        "titulo": "Consulta de retorno",
        "canal": "whatsapp",
        "clicado_em": "2026-10-04T13:05:12.481Z"
      }
    }
  ],
  "proximo": "1791205512481_3791c08d-72dd-4002-89ff-1e14a11c07e5"
}

Parâmetros de consulta#

  • buscastringopcional

    Parte do nome ou do telefone, ou o e-mail exato.

    • até 100 caracteres
  • telefonestringopcional

    Com DDI e DDD. Acha o contato com ou sem o 9º dígito.

    • mín. 8 caracteres
    • até 30 caracteres
    • ex.: +55 31 98888-7777
  • emailstringopcional
    • até 254 caracteres
  • limiteintegeropcional

    Itens por página (1 a 100, padrão 50).

  • cursorstringopcional

    Valor de proximo da página anterior.

    • até 80 caracteres

Resposta#

200 com {"dados": ...}: uma lista de Contato, paginada por cursor (como paginar).

  • iduuidopcional
    —
  • nomestring ou nullopcional
    —
  • nome_whatsappstring ou nullopcional
    —
  • telefonestring ou nullopcional
    —
  • emailstring ou nullopcional
    —
  • instagramstring ou nullopcional
    —
  • camposobjeto livreopcional
    —
  • bloqueadobooleanopcional
    —
  • criado_emdata e hora ISO 8601opcional
    —
  • atualizado_emdata e hora ISO 8601opcional
    —
  • primeiro_anuncioobject ou nullopcional

    Primeiro anúncio que levou a pessoa ao WhatsApp, Instagram ou Messenger.

  • primeiro_anuncio.anuncio_idstring ou nullopcional
    —
  • primeiro_anuncio.titulostring ou nullopcional
    —
  • primeiro_anuncio.canalstringopcional
    —
  • primeiro_anuncio.clicado_emdata e hora ISO 8601opcional
    —

Erros#

Todo erro vem como {"erro": {"codigo", "mensagem"}}. Trate pelo codigo: ele não muda.

Status de erro desta operação
StatusQuando
401Chave ausente ou inválida (resposta igual para qualquer motivo).
403Plano sem API, escopo insuficiente ou https/origem recusados.
422Dados inválidos ou regra de negócio (ex.: janela_fechada; conta_restrita = a Meta restringiu a conta por spam: erro traz os campos de RestricaoMeta, como ate, escopo, motivo e retry_after_s).
429Limite de requisições. Veja Retry-After.
Códigos de erro que esta área pode devolver4
  • contato_inexistenteContato não encontrado.
  • telefone_invalidoTelefone inválido. Mande com DDI e DDD.
  • telefone_repetidoJá existe um contato com esse telefone (com ou sem o 9).
  • cursor_invalidoCursor inválido. Use o valor de "proximo" da página anterior.

Os erros que valem para qualquer rota (chave, limite, JSON) estão em Erros.