Perguntas frequentes
Respostas diretas para as dúvidas mais comuns ao integrar a API pública. Quando algo não está definido, dizemos explicitamente.
O que faz parte da API pública?
Apenas os endpoints sob o prefixo /public, em cinco
domínios: Posts, Categorias, Tags, Busca e Anúncios (Delivery). São
rotas de leitura de conteúdo
destinadas ao consumo por sites e aplicações de terceiros, autenticadas
por chave de API. Outras funcionalidades da plataforma não fazem
parte desta API e não são documentadas aqui.
Como obtenho a chave de API?
A chave é gerada e gerenciada no painel do DraftIn, nas configurações do blog. Cada chave pertence a um blog e dá acesso somente ao conteúdo publicado daquele blog. Lá também é possível rotacioná-la. Veja Autenticação.
Posso usar a chave diretamente no navegador?
Não é recomendado. A chave identifica seu blog e deve ficar no servidor — em builds estáticos, rotas de API ou funções serverless. Expor a chave em JavaScript de cliente a torna visível para qualquer visitante.
A API permite criar ou editar conteúdo?
Não. A API pública é somente leitura. A criação,
edição e publicação de conteúdo acontecem no editor e no painel da
DraftIn. Os únicos endpoints públicos que aceitam
POST são os de anúncios (entrega em lote e tracking de clique),
que não escrevem conteúdo editorial.
Por que um post que existe retorna 404?
Os endpoints públicos só enxergam conteúdo com status PUBLISHED. Um post em rascunho ou agendado é, para esta API, equivalente a
inexistente — e responde
404. Confirme que o post está publicado.
Qual base URL devo usar?
Use https://api.draftin.io em produção e http://localhost:3000 em desenvolvimento. Em caso de dúvida, confirme com o painel/equipe
do DraftIn. Veja Base URL.
Por que a resposta vem embrulhada em success/data?
Todos os endpoints de conteúdo usam o envelope padrão
{ success, data, meta? }: o payload fica sempre
em data
e os metadados (como paginação) em meta. Isso permite
evoluir a API sem quebrar integrações. A exceção são os endpoints de
anúncios, que atendem um contrato legado sem envelope. Veja Formato das respostas.
Por que existem formas diferentes de paginação?
Todos os endpoints retornam os itens em data, dentro do
envelope padrão. O que varia são os parâmetros e os metadados: a
listagem geral de posts usa limit/offset sem contagem
total; as listagens por categoria e por tag usam page/pageSize com meta.pagination canônico; e a busca
usa limit/offset com count próprio.
A tabela em Paginação resume
os três estilos.
Existe limite de requisições (rate limit)?
Sim, mas as cotas numéricas não são publicadas. Ao
exceder o limite, a API responde 429 com error.code: RATE_LIMIT_EXCEEDED e o header
Retry-After indicando quantos segundos esperar. Cacheie respostas,
faça chamadas no servidor e respeite o Retry-After — veja Rate limits.
O DraftIn notifica meu site quando o conteúdo muda?
A plataforma oferece webhooks de saída por blog, que notificam mudanças de estado de posts (criar, editar, publicar, excluir, restaurar) para que sites SSR façam redeploy/revalidação. Esses webhooks são configurados no painel — a administração deles não faz parte desta API pública, por isso não documentamos esses endpoints aqui. No seu site, você implementa um receptor que invalida o cache ao receber a notificação.
A API é REST ou GraphQL?
É uma API REST sobre HTTPS, com respostas JSON. Não há interface GraphQL ou outra forma de consulta documentada.
Em que formato vem o conteúdo dos posts?
O campo content pode conter HTML ou Markdown, conforme produzido no editor. Ao renderizar HTML de fontes não
totalmente confiáveis, sanitize antes de injetar no DOM.
Como funcionam impressões e cliques de anúncios?
A impressão é registrada automaticamente no servidor no
momento da entrega — você não precisa chamar nenhum endpoint para isso.
O clique é registrado por você chamando POST /public/ads/tracking/click com o clickToken
recebido na entrega, que tem proteções anti-fraude (uso único, TTL de 10
min, validação de origem e deduplicação por IP). Veja Anúncios · Delivery.
Existe um SDK oficial?
Não há um SDK oficial. Como a API é REST simples, um cliente próprio de poucas linhas costuma bastar — há um exemplo em Autenticação e tipos prontos em Modelos de dados.