Referência
Paginação
Percorra os endpoints de listagem da API do Emailit com page e limit, leia next_page_url, trate os formatos per_page e offset e as janelas de tempo das listas de e-mails e eventos.
Os endpoints de listagem retornam os resultados uma página por vez. A maioria usa números de página com page e limit, templates e automações usam page e per_page, e os endpoints DMARC usam limit e offset. Esta página explica cada formato, as janelas de tempo das listas de e-mails e de eventos e como percorrer todas as páginas.
Page e limit
A maioria dos endpoints de listagem aceita dois parâmetros de consulta:
| Parâmetro | Descrição |
|---|---|
page |
A página a retornar, a partir de 1. Padrão 1. |
limit |
Objetos por página, de 1 a 100. Valores fora desse intervalo retornam um erro de validação 400. |
O tamanho de página padrão depende do endpoint:
limit padrão |
Endpoints |
|---|---|
| 10 | Domínios, chaves de API, listas de contatos, contatos, campanhas, formulários, supressões, webhooks, listas de verificação de e-mails |
| 25 | E-mails, inscritos |
| 50 | Resultados das listas de verificação de e-mails |
| 100 | Eventos |
Listar inscritos também aceita per_page como alias de limit.
Resposta
{
"data": [
{ "object": "domain", "id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey", "name": "acme.com" }
],
"next_page_url": "/v2/domains?page=3&limit=10",
"previous_page_url": "/v2/domains?page=1&limit=10"
}| Campo | Descrição |
|---|---|
data |
Os objetos desta página, dos mais recentes para os mais antigos, a menos que você os ordene. |
next_page_url |
Caminho da próxima página, ou null na última página. |
previous_page_url |
Caminho da página anterior, ou null na primeira página. |
As URLs de página são caminhos, não URLs completas, e na maioria dos endpoints levam apenas page e limit, sem os seus filtros. Para buscar a próxima página, repita a sua própria requisição com page aumentado em um e pare quando next_page_url for null.
Algumas listas adicionam campos ao lado de data:
| Campo | Endpoints | Contém |
|---|---|---|
total_records |
Contatos, listas de contatos, campanhas, formulários | O número de objetos que correspondem, em todas as páginas. |
usage |
Webhooks | used e limit de endpoints de webhook do seu plano, e filters_allowed. |
usage |
Inscritos | used e limit de inscritos da lista de contatos, e o plan. |
domain_limit, domain_count, plan_name |
Domínios | Quantos domínios de envio o seu plano permite (null significa sem limite), quantos você tem e o nome do plano. |
Page e per_page
Listar templates, Listar automações e Listar execuções usam per_page em vez de limit e retornam contagens de páginas em vez de URLs de página:
| Parâmetro | Descrição |
|---|---|
page |
A página a retornar, a partir de 1. Padrão 1. |
per_page |
Objetos por página, de 1 a 100. Padrão 25. |
{
"data": [],
"total_records": 42,
"per_page": 25,
"current_page": 2,
"total_pages": 2
}Continue pedindo páginas enquanto current_page for menor que total_pages.
Limit e offset
Os endpoints DMARC pulam um número de linhas em vez de contar páginas:
| Parâmetro | Descrição |
|---|---|
limit |
Linhas a retornar. Relatórios: padrão 25, máximo 100. Fontes, países, redes e emissores: padrão 50, máximo 200. |
offset |
Linhas a pular. Padrão 0. |
Listar relatórios agregados e Listar relatórios forenses retornam a contagem total, para que você saiba quando parar:
{
"data": [],
"meta": { "total": 130, "limit": 25, "offset": 50 }
}Os endpoints de detalhamento retornam meta apenas com limit e offset. Pare quando uma página tiver menos linhas que limit.
Janelas de tempo
Duas listas só consideram dados recentes, a menos que você peça mais:
- E-mails. Listar e-mails retorna por padrão os e-mails dos últimos 14 dias. Passe
date_from(e, opcionalmente,date_to) como uma data, por exemplo2026-08-01, para pesquisar mais para trás. Os filtroscreated_atnão ampliam a janela, então usedate_from. - Eventos. Listar eventos retorna por padrão os eventos dos últimos dois dias. Qualquer filtro
created_at, comocreated_at.after=2026-09-01, substitui essa janela. A lista também para no offset 2.500: uma página que começa depois do 2.500º evento retorna422com o códigoevents_offset_too_large. Restrinja os resultados com filtrostypeoucreated_atpara chegar a eventos mais antigos.
Buscar todas as páginas
Repita até a API indicar que não há próxima página. Estes exemplos coletam todos os contatos de uma lista de contatos:
page=1
while : ; do
response=$(curl -s -G https://api.emailit.com/v2/contacts \
-H "Authorization: Bearer $EMAILIT_API_KEY" \
--data-urlencode "audience_id=aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2" \
--data-urlencode "limit=100" \
--data-urlencode "page=$page")
echo "$response" | jq -c '.data[]'
[ "$(echo "$response" | jq -r '.next_page_url')" = "null" ] && break
page=$((page + 1))
doneasync function* listAll(path, params = {}) {
for (let page = 1; ; page++) {
const query = new URLSearchParams({ ...params, limit: '100', page: String(page) });
const response = await fetch(`https://api.emailit.com/v2${path}?${query}`, {
headers: { Authorization: `Bearer ${process.env.EMAILIT_API_KEY}` },
});
if (!response.ok) throw new Error(`Emailit ${response.status}`);
const body = await response.json();
yield* body.data;
if (!body.next_page_url) return;
}
}
for await (const contact of listAll('/contacts', { audience_id: 'aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2' })) {
console.log(contact.email);
}import os
import requests
def list_all(path, params=None):
session = requests.Session()
session.headers["Authorization"] = f"Bearer {os.environ['EMAILIT_API_KEY']}"
page = 1
while True:
response = session.get(
f"https://api.emailit.com/v2{path}",
params={**(params or {}), "limit": 100, "page": page},
timeout=30,
)
response.raise_for_status()
body = response.json()
yield from body["data"]
if not body["next_page_url"]:
return
page += 1
for contact in list_all("/contacts", {"audience_id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2"}):
print(contact["email"])Resultados consistentes
As páginas são calculadas quando você as solicita. Se objetos forem criados ou excluídos enquanto você percorre uma lista ordenada dos mais recentes para os mais antigos, os objetos podem mudar de página, e você pode ver um deles duas vezes ou deixar de ver outro. Para uma exportação estável de uma lista que continua crescendo, ordene dos mais antigos para os mais recentes com order=created_at&direction=asc (ou sort=created_at&order=asc em contatos e supressões) e ignore os IDs que você já viu.