POSTCriar página
Cria uma página institucional com título, corpo HTML, status e SEO.
Cria uma página institucional. Só o título é obrigatório: o slug é gerado a partir dele quando você não envia um, e se o slug já existe a plataforma acrescenta -2, -3 e assim por diante em vez de recusar. A página passa a responder em /{slug} na vitrine quando o status é active.
/api/v1/admin/pagesAdminCria uma página de conteúdo
Exige o privilégio manage_content.
Corpo da requisição
titlestringobrigatórioTítulo. HTML é removido; se sobrar vazio a criação é recusada.
slugstringTrecho da URL. Sem ele, é gerado do título.
bodystringConteúdo em HTML. É sanitizado antes de gravar.
statusstringpadrão: activeactivehiddenStatus inicial. Qualquer valor diferente de
active e hidden vira active (veja o aviso).page_typestringpadrão: pagepagebloglinkTipo da página. Valor desconhecido vira
page.seo_titlestringTítulo para buscadores.
seo_descriptionstringDescrição para buscadores.
positionintegerpadrão: 0Ordem em menus.
vendor_iduuidAtribui a página a um seller. Omita para uma página da loja.
descriptionsobjectConteúdo por idioma, com chave no código do idioma (
pt-BR, en). Cada valor tem title, body, seo_title e seo_description. Idiomas que você não enviar recebem uma cópia do conteúdo principal.Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/pages" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Política de Troca",
"body": "<p>Você pode trocar em até 7 dias.</p>",
"status": "active",
"seo_title": "Troca e devolução"
}'Resposta
201Página criada
json
{
"id": "cc37f047-702b-45c7-9f88-3e8d42e81011",
"title": "Política de Troca",
"slug": "politica-de-troca",
"body": "<p>Você pode trocar em até 7 dias.</p>",
"status": "active",
"page_type": "page",
"position": 0,
"id_path": "",
"created_at": "2026-10-11T21:04:48.445487Z",
"updated_at": "2026-10-11T21:04:48.445487Z",
"page_id": "cc37f047-702b-45c7-9f88-3e8d42e81011",
"page": "politica-de-troca",
"page_title": "Política de Troca",
"description": "<p>Você pode trocar em até 7 dias.</p>",
"seo_name": "politica-de-troca",
"timestamp": 1791752688,
"updated_timestamp": 1791752688
}Campos da resposta
iduuidIdentificador da página.
titlestringTítulo, em texto puro (HTML é removido).
slugstringTrecho da URL pública (
/politica-de-troca). Único na loja.bodystringConteúdo em HTML, já sanitizado:
<script>, atributos on... e links javascript: são removidos.statusstringactive, hidden ou draft. Veja o aviso sobre disabled.page_typestringpage, blog ou link.seo_titlestringTítulo para buscadores. Ausente quando vazio.
seo_descriptionstringDescrição para buscadores. Ausente quando vazia.
positionintegerOrdem de exibição em menus. Menor aparece primeiro.
parent_iduuidPágina pai, quando a página faz parte de uma hierarquia. Ausente na raiz.
vendor_iduuidSeller dono da página. Ausente quando a página é da loja inteira (marketplace).
created_atstringCriação, RFC 3339 em UTC.
updated_atstringÚltima alteração, RFC 3339 em UTC.
Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O administrador não tem o privilégio exigido. | {"error":"insufficient privileges","required":"manage_content"} |
| 400 | Corpo não é JSON válido, ou falta title. | {"error":"title is required"} |
| 500 | O título ficou vazio depois de remover o HTML, ou falha ao gravar. | {"error":"failed to create page","detail":"title_required: page title must not be empty after sanitization"} |