curl --request GET \
--url https://api.ziala.com.br/v1/contacts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ziala.com.br/v1/contacts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ziala.com.br/v1/contacts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "3f6c2a9e-8b1d-4c7e-9a52-1e0d6b7f4a10",
"created_at": "2026-10-13T14:02:11.000Z",
"updated_at": "2026-10-13T14:31:02.000Z",
"name": "Maria Souza",
"first_name": "Maria",
"last_name": "Souza",
"email": "maria@exemplo.com.br",
"phone": "+5548999990000",
"job_title": "Gerente comercial",
"company_name": "Exemplo Ltda",
"icp_id": "c4d8e2f1-3a6b-4c9d-8e7f-1a2b3c4d5e6f",
"qualification_score": 72,
"temperature": "warm",
"source": "inbound_whatsapp",
"source_detail": "Campanha de outubro",
"consent_given_at": "2026-10-13T14:02:11.000Z",
"do_not_contact": false,
"do_not_contact_at": null,
"won_at": null,
"lost_at": null,
"current_stage_id": "9a1b2c3d-4e5f-4a6b-8c7d-0e1f2a3b4c5d",
"current_stage_entered_at": "2026-10-13T14:02:11.000Z",
"current_agent_id": "b7e1c0d2-5a4f-4e3b-8c9d-2f1a0e6d3c55",
"last_activity_at": "2026-10-13T14:30:48.000Z",
"first_origin_kind": "ad",
"first_origin_ad_id": "120211234567890123",
"first_origin_ctwa_clid": "ARAkLkA8rmlFeiCktEJQ-QTwRiyYHAFDLMNDBH0CD3qpjd0HR4irJ6LEkR7JwFF4XvnO",
"first_origin_headline": "Fale com um especialista",
"first_origin_at": "2026-10-13T14:02:11.000Z",
"first_campaign_id": "d5e6f7a8-9b0c-4d1e-8f2a-3b4c5d6e7f80"
}
],
"next_cursor": "eyJ0IjoiM2Y2YzJhOWUiLCJ0cyI6IjIwMjYtMTEtMDNUMTQ6MzE6MDIuMDAwWiJ9",
"has_more": true,
"sync_watermark": "2026-10-13T14:29:00.000Z"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}Listar contatos
Lista os contatos da conta com a etapa atual e a primeira origem (anúncio ou link). Contatos do ambiente de teste não aparecem.
curl --request GET \
--url https://api.ziala.com.br/v1/contacts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.ziala.com.br/v1/contacts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.ziala.com.br/v1/contacts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": "3f6c2a9e-8b1d-4c7e-9a52-1e0d6b7f4a10",
"created_at": "2026-10-13T14:02:11.000Z",
"updated_at": "2026-10-13T14:31:02.000Z",
"name": "Maria Souza",
"first_name": "Maria",
"last_name": "Souza",
"email": "maria@exemplo.com.br",
"phone": "+5548999990000",
"job_title": "Gerente comercial",
"company_name": "Exemplo Ltda",
"icp_id": "c4d8e2f1-3a6b-4c9d-8e7f-1a2b3c4d5e6f",
"qualification_score": 72,
"temperature": "warm",
"source": "inbound_whatsapp",
"source_detail": "Campanha de outubro",
"consent_given_at": "2026-10-13T14:02:11.000Z",
"do_not_contact": false,
"do_not_contact_at": null,
"won_at": null,
"lost_at": null,
"current_stage_id": "9a1b2c3d-4e5f-4a6b-8c7d-0e1f2a3b4c5d",
"current_stage_entered_at": "2026-10-13T14:02:11.000Z",
"current_agent_id": "b7e1c0d2-5a4f-4e3b-8c9d-2f1a0e6d3c55",
"last_activity_at": "2026-10-13T14:30:48.000Z",
"first_origin_kind": "ad",
"first_origin_ad_id": "120211234567890123",
"first_origin_ctwa_clid": "ARAkLkA8rmlFeiCktEJQ-QTwRiyYHAFDLMNDBH0CD3qpjd0HR4irJ6LEkR7JwFF4XvnO",
"first_origin_headline": "Fale com um especialista",
"first_origin_at": "2026-10-13T14:02:11.000Z",
"first_campaign_id": "d5e6f7a8-9b0c-4d1e-8f2a-3b4c5d6e7f80"
}
],
"next_cursor": "eyJ0IjoiM2Y2YzJhOWUiLCJ0cyI6IjIwMjYtMTEtMDNUMTQ6MzE6MDIuMDAwWiJ9",
"has_more": true,
"sync_watermark": "2026-10-13T14:29:00.000Z"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}{
"type": "about:blank",
"title": "Requisição inválida",
"status": 400,
"detail": "limit deve ser um número inteiro de 1 a 200.",
"request_id": "req-3f2a"
}Autorizações
Chave da API da conta, no formato zk_live_….
Parâmetros de consulta
Retorna só registros criados ou alterados a partir deste instante: data e hora ISO 8601 com fuso, ou só a data (AAAA-MM-DD, meia-noite UTC). A busca recua 5 minutos para cobrir diferenças de relógio, então grave pela chave primária (id).
Valor de next_cursor da página anterior.
Itens por página.
1 <= x <= 200Resposta
Página de contatos.
Show child attributes
Show child attributes
Cursor da próxima página, para enviar em cursor. null na última página.
"eyJ0IjoiM2Y2YzJhOWUiLCJ0cyI6IjIwMjYtMTEtMDNUMTQ6MzE6MDIuMDAwWiJ9"
true se há mais páginas.
true
Instante até o qual esta leitura está completa, igual em todas as páginas. Envie como updated_since na próxima sincronização.
"2026-10-13T14:29:00.000Z"