Draftn.io docs · api
Fundamentos

Formato das respostas

Todas as respostas são JSON (application/json). O formato do corpo varia conforme o endpoint: alguns retornam um array direto, outros um objeto único e outros um envelope com metadados de paginação.

Três formatos de corpo

Vale conhecer os três padrões antes de integrar, porque cada um pede um consumo diferente:

1. Array direto

Listagens simples retornam um array no nível raiz, sem envelope. Usado por GET /public/posts, GET /public/categories e GET /public/tags.

array direto
[
  { "id": "clxxx101", "title": "Primeiro post", "slug": "primeiro-post", "status": "PUBLISHED" },
  { "id": "clxxx102", "title": "Segundo post", "slug": "segundo-post", "status": "PUBLISHED" }
]

2. Objeto único

Buscas por identificador retornam o recurso diretamente. Usado por GET /public/posts/{id}, /slug/{slug}, /public/categories/{id} e /public/tags/{id}.

objeto único
{
  "id": "clxxx201",
  "name": "Tecnologia",
  "description": "Posts sobre tecnologia",
  "blogId": "clxxx789",
  "_count": { "posts": 5 }
}

3. Envelope com paginação

Listagens paginadas retornam um objeto envelope. As listagens de posts por categoria e por tag usam o envelope PostListResponse; a busca usa SearchResponse (com data e meta). Veja Paginação.

envelope
{
  "posts": [ /* … objetos Post … */ ],
  "total": 42,
  "page": 1,
  "pageSize": 10,
  "totalPages": 5
}

Tipos e convenções

TipoFormatoExemplo
Identificadores string opaca (estilo cuid) "clxxx101"
Datas e horas string ISO 8601 (date-time, UTC) "2026-06-01T12:00:00.000Z"
Contadores integer 42
Enumerações string com valores fixos "PUBLISHED"
Campos vazios null (não omitidos) "publishedAt": null

Formato de erro

Respostas de erro seguem um objeto simples com error e, quando disponível, message. Veja Tratamento de erros para detalhes.

erro
{
  "error": "Mensagem de erro",
  "message": "Descrição detalhada do erro"
}

Charset e codificação

  • Respostas são UTF-8. Acentuação e emojis são preservados.
  • O campo content dos posts pode conter HTML ou Markdown, conforme produzido no editor — trate-o de acordo ao renderizar.