Axuz Developers

GET /accounts/{accountId}/messages

Lista mensagens de uma folder da conta

  • Access: Signed in
  • Service: https://mail-api.axuz.net

Accepted authentication

  • sessionCookie — Sessão plena Axuz (cookie de sessão da casa). Sessão restrita é 403 enrollment_required.
  • bearerSession — JWT de acesso da sessão em `Authorization: Bearer`.

— GET /accounts/:accountId/messages?folder=<kind>&q=&unread=&limit=. Motivo: alimentar a lista lateral do webmail. Comportamento: verifica ownership da conta; resolve folder por kind (inbox default); aplica busca ILIKE em subject/body/from + filtro unread. Limit clamp 1..200 (default 50). Efeitos: só leitura em mail_folders + mail_messages. Ordem: received_at DESC.

Parameters

NameInTypeRequiredDescription
accountIdpathstringyes
folderquerystringno

kind da folder (default inbox)

qquerystringno

Busca ILIKE em subject/body_text/from_email

unreadquerystringno

Filtra por não-lidas

limitqueryintegerno

Responses

200

Coleção (received_at DESC)

NameTypeRequiredDescription
itemsarray<MailMessage>no
items[].idstring<uuid>yes
items[].account_idstring<uuid>yes
items[].folder_idstring<uuid>yes
items[].thread_idstring<uuid>yes
items[].in_reply_tostring<uuid> | nullno
items[].from_emailstring<email>yes
items[].from_namestringno
items[].to_emailsarray<string<email>>yes
items[].cc_emailsarray<string<email>>no
items[].bcc_emailsarray<string<email>>no
items[].subjectstringyes
items[].body_htmlstringno

Corpo HTML sanitizado (allowlist bluemonday, internal/sanitize). Toda leitura passa pelo mesmo chokepoint (scanMessage), então este campo nunca carrega <script>, atributos on*, javascript:, <iframe>, <object> ou <svg>. A COLUNA homônima no banco guarda o corpo cru (forense) e NÃO é confiável — ela nunca sai pela API.

items[].body_textstringno
items[].readbooleanyes
items[].starredbooleanyes
items[].labelsarray<string>no
items[].received_atstring<date-time>yes
items[].sent_atstring<date-time> | nullno
items[].statusstringyes

enum: "draft", "sent", "received", "queued"

items[].internalbooleanyes
items[].created_atstring<date-time>yes
items[].updated_atstring<date-time>yes

401

Sem credencial valida

NameTypeRequiredDescription
errorstringyes

403

Não é dono da conta

404

Folder não achada

429

Limite de requisições excedido.

NameTypeRequiredDescription
errorstringyes

500

Erro interno. Tente de novo com backoff; reporte o X-Request-Id.

NameTypeRequiredDescription
errorstringyes

Examples

"Try it" is turned off in this reference. Use the examples with your test credential.

curl

curl -sS -X GET 'https://mail-api.axuz.net/accounts/ACCOUNT_ID/messages' \
  -H "Authorization: Bearer $AXUZ_TOKEN"

Node.js

const res = await fetch("https://mail-api.axuz.net/accounts/ACCOUNT_ID/messages", {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.AXUZ_TOKEN}`,
  },
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
console.log(await res.json());

Python

import os
import requests

res = requests.request(
    "GET",
    "https://mail-api.axuz.net/accounts/ACCOUNT_ID/messages",
    headers={
        "Authorization": f"Bearer {os.environ['AXUZ_TOKEN']}",
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())