Entrar Criar conta
Referência da API

Logs

O registro de cada requisição feita com uma chave de API e de cada envio por SMTP.

Cada requisição feita com uma chave de API, e cada mensagem recebida pelo SMTP, fica registrada com o corpo enviado e a resposta. Conteúdos de anexos e textos com mais de 5.000 caracteres são cortados. Requisições feitas pelo painel não entram nos logs. Os logs ficam guardados por 30 dias. Um envio por SMTP aparece com method SMTP e endpoint /smtp: o corpo traz o remetente, os destinatários do envelope, o assunto, o tamanho e a quantidade de anexos, e a resposta traz o id do e-mail (ou o motivo da recusa).

#Listar logs

GET/logs

Chave de acesso total

Parâmetros de consulta

  • limitinteger
    De 1 a 100. Padrão: 20.
  • afterstring
    Cursor da próxima página.
  • beforestring
    Cursor da página anterior.
  • statusstring
    Status HTTP ou faixas separados por vírgula, como 4xx,500.
  • methodstring
    Métodos separados por vírgula, como POST,PATCH. Envios SMTP usam o método SMTP.
  • sourcestring
    api ou smtp.
  • user_agentstring
    Parte do User-Agent.
  • api_key_idstring
    Só requisições de uma chave.
  • searchstring
    Busca no caminho, como /emails/batch.
  • start_datestring
    A partir desta data (ISO 8601, inclusive). Sem fuso, vale UTC.
  • end_datestring
    Até esta data (ISO 8601, inclusive). Só com a data, cobre o dia inteiro. Se vier antes de start_date, a resposta é 422. Veja os filtros de data.

Erros

  • 422validation_error
    Algum campo é inválido. A mensagem diz qual.
GET /logs

cURL

curl 'https://api.postal.so/logs?status=4xx&source=api' \
  -H "Authorization: Bearer $POSTAL_API_KEY"

Node.js

const response = await fetch('https://api.postal.so/logs?status=4xx&source=api', {
  headers: {
    Authorization: `Bearer ${process.env.POSTAL_API_KEY}`,
  },
});

const data = await response.json();

Python

import os
import requests

response = requests.get(
    "https://api.postal.so/logs",
    headers={"Authorization": f"Bearer {os.environ['POSTAL_API_KEY']}"},
    params={
        "status": "4xx",
        "source": "api",
    },
    timeout=10,
)

data = response.json()

PHP

$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.postal.so']);

$response = $client->get('logs', [
    'headers' => ['Authorization' => 'Bearer '.getenv('POSTAL_API_KEY')],
    'query' => [
        'status' => '4xx',
        'source' => 'api',
    ],
]);

$data = json_decode($response->getBody(), true);
200Resposta
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "id": "019a1b2d-0000-7b11-a2c3-d4e5f6a7b8c9",
      "created_at": "2026-10-24T13:02:11.000000Z",
      "endpoint": "/emails",
      "method": "POST",
      "response_status": 422,
      "user_agent": "node-fetch/1.0",
      "api_key_id": "0199f0e2-7b8c-7d9e-8f0a-1b2c3d4e5f6a"
    }
  ]
}

#Obter um log

GET/logs/{id}

Chave de acesso total

Devolve o log com request_body (o JSON enviado, ou a query string em requisições GET) e response_body.

Parâmetros de caminho

  • idstringobrigatório
    ID do log.

Erros

  • 404not_found
    O recurso não existe ou é de outro time.
GET /logs/{id}

cURL

curl https://api.postal.so/logs/019a1b2c-4d60-7a11-b2c3-d4e5f6a7b8c9 \
  -H "Authorization: Bearer $POSTAL_API_KEY"

Node.js

const response = await fetch('https://api.postal.so/logs/019a1b2c-4d60-7a11-b2c3-d4e5f6a7b8c9', {
  headers: {
    Authorization: `Bearer ${process.env.POSTAL_API_KEY}`,
  },
});

const data = await response.json();

Python

import os
import requests

response = requests.get(
    "https://api.postal.so/logs/019a1b2c-4d60-7a11-b2c3-d4e5f6a7b8c9",
    headers={"Authorization": f"Bearer {os.environ['POSTAL_API_KEY']}"},
    timeout=10,
)

data = response.json()

PHP

$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.postal.so']);

$response = $client->get('logs/019a1b2c-4d60-7a11-b2c3-d4e5f6a7b8c9', [
    'headers' => ['Authorization' => 'Bearer '.getenv('POSTAL_API_KEY')],
]);

$data = json_decode($response->getBody(), true);
200Resposta
{
  "object": "log",
  "id": "019a1b2c-4d60-7a11-b2c3-d4e5f6a7b8c9",
  "created_at": "2026-10-24T13:02:11.000000Z",
  "endpoint": "/emails",
  "method": "POST",
  "response_status": 200,
  "user_agent": "node-fetch/1.0",
  "api_key_id": "0199f0e2-7b8c-7d9e-8f0a-1b2c3d4e5f6a",
  "request_body": {
    "from": "Loja Exemplo <[email protected]>",
    "to": ["[email protected]"],
    "subject": "Seu pedido #10482 saiu para entrega",
    "html": "<p>O pedido <b>#10482</b> está a caminho.</p>"
  },
  "response_body": {
    "id": "019a1b2c-4d5e-7f60-8a9b-0c1d2e3f4a5b"
  }
}