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

# GET /templates

> Returns published public templates and templates available to the workspace tied to your API key.

<RequestExample>
  ```shellscript cURL theme={null}
  curl "https://api.chroniclehq.com/api/v1/templates" \
    -H "Authorization: Bearer $API_KEY"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.chroniclehq.com/api/v1/templates",
    {
      headers: {
        Authorization: `Bearer ${API_KEY}`,
      },
    }
  );

  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

The workspace is inferred from your API key. No query parameters are required.

### Response

<ResponseExample>
  ```json Response theme={null}
  {
    "templates": [
      {
        "id": "tpl_123",
        "name": "Sales pitch",
        "description": "A pitch template for sales discovery calls",
        "category": ["sales", "discovery"],
        "preview_url": "https://templates.chroniclehq.com/sales-pitch.png",
        "sections": []
      }
    ]
  }
  ```
</ResponseExample>

<ResponseField name="templates" type="array">
  List of available templates

  <Expandable title="child attributes">
    <ResponseField name="id" type="string">
      Template ID
    </ResponseField>

    <ResponseField name="name" type="string">
      Template name
    </ResponseField>

    <ResponseField name="description" type="string">
      Template description
    </ResponseField>

    <ResponseField name="category" type="string[]">
      Template categories. Empty array if uncategorized.
    </ResponseField>

    <ResponseField name="preview_url" type="string | null">
      Absolute preview image URL on `templates.chroniclehq.com`. `null` when the template has no preview.
    </ResponseField>

    <ResponseField name="sections" type="array">
      Template slides
    </ResponseField>
  </Expandable>
</ResponseField>

***

## FAQs

<AccordionGroup>
  <Accordion title="Do I need to send a workspace ID?">
    No. Workspace scope is inferred from your API key — every key belongs to exactly one workspace.

    The response contains the public templates plus templates accessible to that workspace.
  </Accordion>

  <Accordion title="Why don't I see every template in the workspace?">
    The endpoint returns public templates plus templates accessible to the workspace.

    Hidden and personal templates are excluded.
  </Accordion>

  <Accordion title="What should I do with the template IDs returned here?">
    Use them as inputs to presentation creation or generation flows.

    This endpoint is the best way to discover valid templates before making those requests.
  </Accordion>
</AccordionGroup>

***

## Related posts

* [POST /presentations](/post-presentations)
* [Authentication](/authentication)
* [Error codes](/error-codes)
