Pular para o conteúdo principal

GET /contacts

Lista todos os contatos pertencentes à conta. Um filtro pode ser especificado para obter resultados mais específicos.

Parâmetros opcionais

ParâmetroTipoDescrição
pageIntegerA página de contatos. Se não for especificada, o padrão é a página 1. Páginas além da 500 não estão disponíveis — use a paginação por cursor.
afterstringCursor opaco obtido do meta.next de uma resposta anterior. Retorna o lote de contatos seguinte. Veja Paginação por cursor.
sourceSourceO tipo de integração (ex.: whatsapp)
tagsstring[]As tags correspondentes, separadas por vírgulas (ex.: sales,lead). As tags são case-insensitive.
team_uuidstringO uuid da equipe.
include_field_typesbooleanQuando true, a resposta inclui customFieldsMetadata com o valor, tipo e opções de cada campo personalizado.

Paginação por cursor

A paginação por páginas para na página 500 (10.000 contatos): requisições além desse limite retornam um erro 400 Bad Request com a mensagem Pagination limit exceeded. Para percorrer a lista completa de contatos, use a paginação por cursor:

  1. Faça uma requisição normalmente: cada resposta inclui um token opaco em meta.next.
  2. Envie o token de volta pelo parâmetro after para obter o próximo lote de contatos.
  3. Continue seguindo meta.next até que ele seja null — isso marca o último lote.
curl -X GET "https://api.callbell.eu/v1/contacts?after=eyJ0cyI6MTc1NDM4NDQwMDAwMCwiaWQiOjEyMzQ1fQ" \
-H "Authorization: Bearer test_gshuPaZoeEG6ovbc8M79w0QyM" \
-H "Content-Type: application/json"

Alguns pontos importantes:

  • Trate o token como opaco e envie-o de volta sem alterações. Um token malformado retorna um erro 400 Bad Request com a mensagem Invalid pagination cursor.
  • O parâmetro page é ignorado quando after está presente.
  • Os filtros (source, tags, team_uuid) não são codificados no token: envie os mesmos filtros junto com after em cada requisição.
  • Os contatos são retornados na mesma ordem das requisições por páginas (conversa mais recente primeiro). Contatos criados após o início do percurso não são incluídos.

Exemplo de requisição

curl -X GET "https://api.callbell.eu/v1/contacts" \
-H "Authorization: Bearer test_gshuPaZoeEG6ovbc8M79w0QyM" \
-H "Content-Type: application/json"

Resposta

ParâmetroTipoDescrição
contactsContato[]Uma lista de contatos.
metaobjectMetadados de paginação: page e pages para requisições por páginas, além de next, o cursor que aponta para o próximo lote (null no último lote).

Exemplo de resposta

response.json
{
"contacts": [
{
"uuid": "414a6d692bd645ed803f2e7ce360d4c8",
"name": "John Doe",
"phoneNumber": "+123 456 789",
"avatarUrl": null,
"createdAt": "2020-11-13T21:08:53Z",
"source": "whatsapp",
"href": "https://dash.callbell.eu/contacts/414a6d692bd645ed803f2e7ce360d4c8",
"conversationHref": "https://dash.callbell.eu/chat/f3670b13446b412796238b1cd78899f9",
"assignedUser": "john.doe@email.com",
"tags": [
"sales",
"lead"
],
"customFields":{
"Stripe link": "https://stripe.com/contacts/cus1234567",
"Billing Address": "3 Abbey Rd, London"
}
},
...
{
"uuid": "ff8bec9363bc4c29b8b044eabf2afebd",
"name": "Mario Rossi",
"phoneNumber": "+33 11 22 33 44",
"avatarUrl": null,
"createdAt": "2021-02-24T20:33:06Z",
"source": "whatsapp",
"href": "https://dash.callbell.eu/contacts/ff8bec9363bc4c29b8b044eabf2afebd",
"conversationHref": "https://dash.callbell.eu/chat/f3670b13446b412796238b1cd78899f9",
"assignedUser": null,
"tags": [
"sales",
"lead",
"hot"
],
"customFields":{
"Stripe link": "https://stripe.com/contacts/cus124124153"
}
}
],
"meta": {
"page": 1,
"pages": 42,
"next": "eyJ0cyI6MTc1NDM4NDQwMDAwMCwiaWQiOjEyMzQ1fQ"
}
}

Exemplo de resposta (com include_field_types=true)

response.json
{
"contacts": [
{
"uuid": "414a6d692bd645ed803f2e7ce360d4c8",
"name": "John Doe",
"customFields": {
"Address": "Oxford Street 123",
"Join Date": "2024-01-15",
"Preferences": "[\"Newsletter\", \"Promotions\"]"
},
"customFieldsMetadata": {
"Address": { "value": "Oxford Street 123", "type": "text" },
"Join Date": { "value": "2024-01-15", "type": "date" },
"Preferences": { "value": ["Newsletter", "Promotions"], "type": "checkbox", "options": ["Newsletter", "Promotions", "Updates"] }
}
}
]
}