Documentação para desenvolvedores
API de Publicação de Artigos
Contrato HTTP para agentes e integrações criarem ou atualizarem posts do blog (`/aprenda-marketing`). O token de autenticação fica só no servidor — esta página nunca o exibe.
Autenticação
Toda escrita exige autenticação. Use um dos headers abaixo com o valor da variável de ambiente PUBLICATION_API_TOKEN no servidor (ou um JWT de admin do CMS).
Authorization: Bearer SEU_PUBLICATION_API_TOKEN
# ou
X-API-Key: SEU_PUBLICATION_API_TOKENSegurança: o token real não está nesta página, no repositório público nem no Swagger aberto. Solicite ao administrador do servidor. Não cole o token em issues, chats públicos ou frontends.
Endpoint recomendado
POST https://agenciakaizen.com.br/api/v1/articles/upsert
Idempotente por slug: se o slug já existe, atualiza; senão cria. Ideal para agentes e pipelines de conteúdo.
POST /articles— criaPUT /articles/{id}— atualiza por UUIDPUT /articles/slug/{slug}— atualiza por slug (404 se não existir)DELETE /articles/{id}— removeGET /articles/{slug}— leitura pública
HTML no campo content
Envie HTML real. Não envie entidades escapadas — isso faz o blog mostrar tags como texto (`<h2>` na tela).
Correto
<h2>Título</h2>
<p>Parágrafo com <strong>negrito</strong>.</p>Incorreto
<h2>Título</h2>
<p>Parágrafo...</p>A API tenta desescapar automaticamente e devolve o header X-Kaizen-Content-Unescaped: true quando corrige. Mesmo assim, o contrato correto é HTML cru.
Payload de exemplo
{
"title": "Google Ads 2026: guia prático",
"slug": "google-ads-2026-guia-pratico",
"excerpt": "Como estruturar campanhas de performance em 2026.",
"content": "<h2>Por que Performance Max importa</h2><p>Em 2026, o funil exige criativos e sinais de conversão sólidos.</p>",
"is_published": true,
"reading_time": 8,
"seo_title": "Google Ads 2026: guia prático | Agência Kaizen",
"seo_description": "Guia prático de Google Ads e Performance Max para 2026.",
"category_slug": "google-ads",
"author_name": "Agência Kaizen",
"author_type": "Organization",
"content_type": "article"
}Exemplo curl
curl -X POST 'https://agenciakaizen.com.br/api/v1/articles/upsert' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer SEU_PUBLICATION_API_TOKEN' \
-d '{
"title": "Exemplo publicado via API",
"slug": "exemplo-publicado-via-api",
"excerpt": "Resumo do artigo",
"content": "<h2>Título da seção</h2><p>Parágrafo com HTML <strong>real</strong>.</p>",
"is_published": true,
"seo_title": "Exemplo via API | Agência Kaizen",
"seo_description": "Artigo de exemplo publicado pela API de publicação.",
"author_name": "Agência Kaizen",
"author_type": "Organization"
}'Erros comuns
- 401 — token ausente ou inválido
- 403 — JWT sem permissão admin
- 404 — artigo não encontrado no PUT por slug/id
- 422 — payload inválido (ex.: falta title/slug no upsert)
Dúvidas de integração: fale com a Agência Kaizen. Guia machine-readable: /api/v1/articles/publication-guide.
