> ## Documentation Index
> Fetch the complete documentation index at: https://docs.citou.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Conteúdo

> Liste os itens publicados da marca ou obtenha um item por slug.

O núcleo da API de entrega. Retorna os itens **publicados** da marca, cada um com o corpo em
markdown/HTML e o JSON-LD já derivado do tipo.

## Listar conteúdo

<ParamField query="key" type="string" required>
  Sua chave de API de conteúdo (ou envie no header `x-api-key`).
</ParamField>

<ParamField query="type" type="string">
  Filtra por tipo (ex.: `page`, `post`, `product`, ou a chave de um tipo personalizado). Sem
  filtro, retorna todos os tipos.
</ParamField>

<CodeGroup>
  ```bash curl theme={null}
  curl "https://api.citou.me/cd/content?type=post&key=SUA_CHAVE"
  ```

  ```js JavaScript theme={null}
  const res = await fetch("https://api.citou.me/cd/content?type=post", {
    headers: { "x-api-key": process.env.CITOU_KEY },
  });
  const posts = await res.json();
  ```
</CodeGroup>

Retorna um **array** de itens (mais recentes primeiro):

```json Resposta theme={null}
[
  {
    "type": "post",
    "slug": "como-aparecer-no-chatgpt",
    "title": "Como aparecer no ChatGPT",
    "metaDescription": "Guia prático de AEO.",
    "data": { "title": "Como aparecer no ChatGPT", "body": "…", "faq": [] },
    "bodyMarkdown": "Texto do post…\n\n## Perguntas frequentes\n…",
    "html": "<p>Texto do post…</p>",
    "jsonLd": "{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Como aparecer no ChatGPT\"\n}",
    "seo": { "canonicalUrl": "", "noindex": false, "ogImage": "" },
    "sourceUrl": null,
    "publishedAt": "2026-07-25T14:00:00.000Z",
    "updatedAt": "2026-07-25T14:00:00.000Z"
  }
]
```

## Obter por slug

`GET /cd/content/{slug}` — um único item publicado (o `slug` é único por marca).

<CodeGroup>
  ```bash curl theme={null}
  curl "https://api.citou.me/cd/content/como-aparecer-no-chatgpt?key=SUA_CHAVE"
  ```

  ```js JavaScript theme={null}
  const res = await fetch(
    `https://api.citou.me/cd/content/${slug}?key=${process.env.CITOU_KEY}`,
  );
  if (res.status === 404) {
    /* não publicado */
  }
  const item = await res.json();
  ```
</CodeGroup>

## Campos da resposta

<ResponseField name="type" type="string">Chave do tipo de conteúdo.</ResponseField>
<ResponseField name="slug" type="string">Slug único do item na marca.</ResponseField>
<ResponseField name="title" type="string">Título.</ResponseField>
<ResponseField name="metaDescription" type="string">Meta descrição.</ResponseField>

<ResponseField name="data" type="object">
  Valores tipados dos campos. Campos de **referência** já vêm resolvidos para o nome.
</ResponseField>

<ResponseField name="bodyMarkdown" type="string">Corpo em markdown otimizado para IAs.</ResponseField>
<ResponseField name="html" type="string">O mesmo corpo renderizado em HTML.</ResponseField>

<ResponseField name="jsonLd" type="string">
  O schema.org JSON-LD do item, **como string** — insira num
  `<script type="application/ld+json">`. Vazio quando não há nada a emitir.
</ResponseField>

<ResponseField name="seo" type="object">
  Controles por página: `canonicalUrl`, `noindex` (boolean), `ogImage`.
</ResponseField>

<ResponseField name="sourceUrl" type="string | null">
  URL canônica de origem (quando o item foi reconciliado com uma página existente do site).
</ResponseField>

<ResponseField name="publishedAt" type="string">Data de publicação (ISO 8601).</ResponseField>
<ResponseField name="updatedAt" type="string">Última atualização (ISO 8601).</ResponseField>

<Note>
  Precisa apenas do markdown pronto para rastreadores de IA (com front-matter e JSON-LD embutido)?
  Use o endpoint de [Markdown para IAs](/api/markdown).
</Note>
