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

# List Templates

> List templates visible to authenticated key scope

Returns templates visible to the current key scope (owner/private + workspace + public as applicable).

## Query Parameters

<ParamField query="search" type="string">
  Optional name filter (case-insensitive partial match).
</ParamField>

<ParamField query="limit" type="number" default="20">
  Number of templates to return. Range: `1-100`.
</ParamField>

<ParamField query="offset" type="number" default="0">
  Number of templates to skip.
</ParamField>

## Response

<ResponseField name="templates" type="array">
  Template list.

  <Expandable title="Template Object">
    <ResponseField name="id" type="string" />

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

    <ResponseField name="description" type="string | null" />

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

    <ResponseField name="preview_url" type="string | null" />

    <ResponseField name="use_count" type="number" />

    <ResponseField name="last_used_at" type="string | null" />

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

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

    <ResponseField name="is_owner" type="boolean" />

    <ResponseField name="config" type="object" />
  </Expandable>
</ResponseField>

<ResponseField name="total" type="number" />

<ResponseField name="limit" type="number" />

<ResponseField name="offset" type="number" />

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://www.genviral.io/api/partner/v1/templates?search=hooks&limit=20' \
    --header 'Authorization: Bearer <token>'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "ok": true,
    "code": 200,
    "message": "Templates retrieved",
    "data": {
      "templates": [
        {
          "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
          "name": "Hooks Template",
          "description": "2-slide educational format",
          "visibility": "private",
          "preview_url": null,
          "use_count": 3,
          "last_used_at": "2026-02-14T09:11:00.000Z",
          "created_at": "2026-02-12T15:00:00.000Z",
          "updated_at": "2026-02-14T09:11:00.000Z",
          "is_owner": true,
          "config": {
            "version": 1,
            "structure": {
              "slides": [
                {
                  "type": "pack",
                  "id": "11111111-1111-1111-1111-111111111111",
                  "pinnedImageUrl": null,
                  "textElements": [
                    {
                      "id": "22222222-2222-2222-2222-222222222222",
                      "content": "Hook text",
                      "x": 50,
                      "y": 25,
                      "fontSize": 48,
                      "width": 70
                    }
                  ]
                }
              ]
            },
            "content": {
              "mode": "manual",
              "productId": null,
              "language": "en",
              "slideshowType": "educational"
            },
            "visuals": {
              "packId": null,
              "aspectRatio": "4:5",
              "textSettings": {
                "fontSize": "default",
                "preset": "tiktok",
                "width": "default"
              }
            }
          }
        }
      ],
      "total": 1,
      "limit": 20,
      "offset": 0
    }
  }
  ```
</ResponseExample>

## Error Responses

* `422 invalid_query` - query params failed validation
* `401` - authentication failed (missing/invalid/revoked token)
* `402 subscription_required` - active Creator/Professional/Business plan required
* `403 tier_not_allowed` - Scheduler tier cannot use Partner API
* `500 templates_list_failed` - unexpected listing failure
