Draftn.io docs · api
Endpoints · Posts

Posts

Os endpoints de Posts entregam o conteúdo publicado do blog. Use-os para alimentar a home, as páginas de artigo, feeds e qualquer superfície que exiba textos da DraftIn. Todos exigem a chave de API e retornam apenas posts publicados.

Listar posts

GET https://api.draftin.io /public/posts

Requer X-API-Key

Retorna um array de posts publicados do blog, ordenados pela plataforma e paginados por limit/offset. É o ponto de partida para listagens, índices e geração estática de rotas.

Quando usar

  • Montar a home ou a página de índice do blog.
  • Gerar rotas estáticas a partir dos slug retornados.
  • Construir feeds (RSS/JSON) e seções "mais recentes".

Query parameters

ParâmetroTipoObrigatórioDescrição
statusstringNãoFiltra por status. O único valor aceito é PUBLISHED — os endpoints públicos não expõem rascunhos nem agendados.
Padrão: PUBLISHED
limitintegerNãoQuantidade de posts por página. Mínimo 1, máximo 100.
Padrão: 10
offsetintegerNãoQuantos posts pular (paginação por deslocamento). Mínimo 0.
Padrão: 0

Exemplo de requisição

curl "https://api.draftin.io/public/posts?limit=10&offset=0" \
  -H "X-API-Key: $DRAFTIN_API_KEY"

Exemplo de resposta

200 OK — Post[]
[
  {
    "id": "clxxx101",
    "title": "Meu Primeiro Post",
    "subtitle": "Subtítulo do post",
    "content": "<p>Conteúdo do post em HTML ou Markdown</p>",
    "slug": "meu-primeiro-post",
    "status": "PUBLISHED",
    "publishedAt": "2026-06-01T12:00:00.000Z",
    "scheduledAt": null,
    "blogId": "clxxx789",
    "authorId": "clxxx123",
    "createdAt": "2026-05-30T09:15:00.000Z",
    "updatedAt": "2026-06-01T12:00:00.000Z",
    "categories": [
      { "id": "clxxx201", "name": "Tecnologia", "description": "Posts sobre tecnologia", "blogId": "clxxx789" }
    ],
    "tags": [
      { "id": "clxxx301", "name": "javascript", "blogId": "clxxx789" }
    ]
  }
]

Respostas possíveis

StatusSignificado
200
OK
Lista de posts públicos (array de Post).
401
Unauthorized
Chave de API inválida ou ausente.

Obter post por ID

GET https://api.draftin.io /public/posts/{id}

Requer X-API-Key

Recupera um único post publicado pelo seu identificador. Útil quando você já guardou o id (por exemplo, em referências internas ou relações).

Parâmetros de rota

ParâmetroTipoObrigatórioDescrição
idstringSimIdentificador único do post.

Exemplo de requisição

curl "https://api.draftin.io/public/posts/clxxx101" \
  -H "X-API-Key: $DRAFTIN_API_KEY"

Exemplo de resposta

200 OK — Post
{
  "id": "clxxx101",
  "title": "Meu Primeiro Post",
  "subtitle": "Subtítulo do post",
  "content": "<p>Conteúdo do post em HTML ou Markdown</p>",
  "slug": "meu-primeiro-post",
  "status": "PUBLISHED",
  "publishedAt": "2026-06-01T12:00:00.000Z",
  "scheduledAt": null,
  "blogId": "clxxx789",
  "authorId": "clxxx123",
  "createdAt": "2026-05-30T09:15:00.000Z",
  "updatedAt": "2026-06-01T12:00:00.000Z",
  "categories": [
    { "id": "clxxx201", "name": "Tecnologia", "description": "Posts sobre tecnologia", "blogId": "clxxx789" }
  ],
  "tags": [
    { "id": "clxxx301", "name": "javascript", "blogId": "clxxx789" }
  ]
}

Respostas possíveis

StatusSignificado
200
OK
Post encontrado (objeto Post).
401
Unauthorized
Chave de API inválida ou ausente.
404
Not Found
Post não encontrado (inexistente ou não publicado).

Obter post por slug

GET https://api.draftin.io /public/posts/slug/{slug}

Requer X-API-Key

Recupera um post publicado pelo seu slug — o identificador legível usado em URLs. Este é o endpoint ideal para páginas de artigo com rota amigável, como /blog/[slug].

Parâmetros de rota

ParâmetroTipoObrigatórioDescrição
slugstringSimSlug legível do post (ex.: meu-primeiro-post). Faça encodeURIComponent ao montar a URL.

Exemplo de requisição

curl "https://api.draftin.io/public/posts/slug/meu-primeiro-post" \
  -H "X-API-Key: $DRAFTIN_API_KEY"

Exemplo de resposta

200 OK — Post
{
  "id": "clxxx101",
  "title": "Meu Primeiro Post",
  "subtitle": "Subtítulo do post",
  "content": "<p>Conteúdo do post em HTML ou Markdown</p>",
  "slug": "meu-primeiro-post",
  "status": "PUBLISHED",
  "publishedAt": "2026-06-01T12:00:00.000Z",
  "scheduledAt": null,
  "blogId": "clxxx789",
  "authorId": "clxxx123",
  "createdAt": "2026-05-30T09:15:00.000Z",
  "updatedAt": "2026-06-01T12:00:00.000Z",
  "categories": [
    { "id": "clxxx201", "name": "Tecnologia", "description": "Posts sobre tecnologia", "blogId": "clxxx789" }
  ],
  "tags": [
    { "id": "clxxx301", "name": "javascript", "blogId": "clxxx789" }
  ]
}

Respostas possíveis

StatusSignificado
200
OK
Post encontrado (objeto Post).
401
Unauthorized
Chave de API inválida ou ausente.
404
Not Found
Post não encontrado (inexistente ou não publicado).

Campos do objeto Post

idstring
Identificador único do post.
titlestring
Título do post.
subtitlestring
Subtítulo (linha de apoio).
contentstring
Corpo do post em HTML ou Markdown, conforme produzido no editor.
slugstring
Identificador legível usado em URLs.
status"PUBLISHED"
Estado de publicação. Nos endpoints públicos é sempre PUBLISHED (o enum completo inclui DRAFT e SCHEDULED).
publishedAtstring · date-timenullable
Data/hora de publicação em ISO 8601 (UTC).
scheduledAtstring · date-timenullable
Data/hora de agendamento, quando aplicável.
blogIdstring
ID do blog dono do post (corresponde à sua chave de API).
authorIdstring
ID do autor do post.
createdAtstring · date-time
Data/hora de criação.
updatedAtstring · date-time
Data/hora da última atualização.
categoriesCategory[]
Categorias associadas. Veja Categorias.
tagsTag[]
Tags associadas. Veja Tags.

Boas práticas

  • Cacheie as respostas. Conteúdo publicado muda pouco; cachear na borda reduz latência e carga.
  • Prefira slug para URLs públicas e reserve o id para referências internas.
  • Renderize content com cuidado. Como pode ser HTML, sanitize antes de injetar no DOM se a fonte não for totalmente confiável.
  • Trate publishedAt nulo. Embora públicos sejam PUBLISHED, programe defensivamente para datas ausentes.

Casos de uso comuns

  • Blog estático: liste com /public/posts no build, gere uma rota por slug e busque cada post com /slug/{slug}.
  • Home com "últimos posts": /public/posts?limit=5.
  • App nativo: pagine com limit/offset e abra o detalhe por id.