---
title: "GET /templates/browse — Browse Templates"
url: https://lumean.app/tr/developers/docs/api/get-templates-browse
locale: tr
description: "Browse Templates"
generated: 2026-10-17
operationId: template.browse
method: GET
path: /templates/browse
scopes: [templates.read]
spec_version: 0.0.1
---

# GET /templates/browse

**Browse Templates**

Paginated walk through the template tree: folders and templates in one
`data.items[]` list, folders first.

With no `folder_id` you get the root. To descend, take a folder's `id` from `items[]`
and repeat with `?folder_id=<id>`; the path to the current folder arrives in
`data.breadcrumbs`, the folder itself in `data.current_folder`.

Pagination lives in `data.current_page` / `last_page` / `per_page` / `total`.

**Required key permission:** `templates.read`.

- Gerekli izin: `templates.read`

## İstek

```bash
curl -X GET 'https://api.lumean.app/api/public/templates/browse' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY'
```

## Parametreler

| Alan | Yer | Tür | Zor. | Açıklama |
| --- | --- | --- | --- | --- |
| `page` | query | `integer` — ≥ 1 | — | Page number, starting at `1`. |
| `per_page` | query | `integer` — 1..100 | — | Items per page, `1..100`. Defaults to 15. |
| `sort_by` | query | `string` — `name` · `created_at` | — | Sort field. Defaults to `name`. |
| `sort_order` | query | `string` — `asc` · `desc` | — | Sort direction. Defaults to `asc`. |
| `folder_id` | query | `string` — uuid | — | Folder UUID. Omitted — the root is returned. The path to the current folder arrives in `data.breadcrumbs`. |
| `task_type` | query | `string` — ≤ 64 karakter | — | Show only templates of services with this task type (the service `default_task_type`), e.g. `tts` for every voiceover engine at once. Empty folders are hidden while filtering. |
| `service` | query | `string` | — | Show only templates of this service. The code is a short latin string: `elevenlabs`, `heygen`, `lumimg`, `sfx`, `music`; the ones available to you are listed by `GET /usage` in its `service_code` field. |

## İstek gövdesi

Gövde yok.

## Yanıtlar

### 200 — Success. The payload is in `data`.

**Yanıt alanları**

| Alan | Tür | Zor. | Açıklama |
| --- | --- | --- | --- |
| `success` | `boolean` | zorunlu | Success flag. Branch on the HTTP status code instead: any 2xx response carries `true` here, while an error comes back in a different shape that need not contain this field at all. |
| `message` | `string` | zorunlu | A human-readable note in the account language. Fine to show to a user; do not parse it — the wording changes without notice and is not an error code. |
| `data` | `BrowseTemplates` | zorunlu | Folder contents with pagination and an ancestor trail — meant for a template tree in a UI. |
| `data.items` | `array<TemplateItem>` | zorunlu | Contents of the current folder — folders and templates interleaved, in sort order. Tell them apart by `service_key`: only a template has it. |
| `data.items[].type` | `string` — `template` | zorunlu |  |
| `data.items[].id` | `string` | zorunlu |  |
| `data.items[].name` | `string` | zorunlu |  |
| `data.items[].slug` | `string` | — |  |
| `data.items[].service_key` | `string` | — |  |
| `data.items[].service` | `Service \| null` — nullable | — |  |
| `data.items[].config` | `object \| string` | — |  |
| `data.items[].is_public` | `string` | — |  |
| `data.items[].folder_id` | `string` | — |  |
| `data.items[].created_at` | `string` | zorunlu |  |
| `data.items[].updated_at` | `string` | zorunlu |  |
| `data.items[].templates_count` | `string \| integer` | — |  |
| `data.current_page` | `integer` | zorunlu | Current page number, starting at 1. |
| `data.last_page` | `integer` | zorunlu | Number of the last page. When it equals `current_page`, there is nothing further. |
| `data.per_page` | `integer` | zorunlu | How many records fit on a page. |
| `data.total` | `integer` | zorunlu | How many records the folder holds in total, across all pages. |
| `data.current_folder` | `object` — nullable | zorunlu | The folder whose contents are shown. `null` means you are at the root. |
| `data.current_folder.id` | `string` | zorunlu | UUID of the current folder — pass it as `folder_id` to open the folder again. |
| `data.current_folder.name` | `string` | zorunlu | Name of the current folder. |
| `data.breadcrumbs` | `array<object>` | zorunlu | The path from the root to the current folder, ancestor first — ready to render as a breadcrumb trail. |
| `data.breadcrumbs[].id` | `string` — uuid | — | UUID of an ancestor folder — the `folder_id` value that jumps back to that level. |
| `data.breadcrumbs[].name` | `string` | — | Name of the ancestor folder. |

**Örnek**

```json
{
  "success": true,
  "message": "Templates browsed",
  "data": {
    "items": [
      {
        "type": "template",
        "id": "7e2a4c1d-8b3f-4a5e-9c6d-1f2e3a4b5c6d",
        "name": "Narrator Voice (EN)",
        "slug": null,
        "service_key": "elevenlabs",
        "service": {
          "id": 3,
          "code": "elevenlabs",
          "name": "ElevenLabs",
          "display_name": "ElevenLabs TTS",
          "payg_access": "everyone",
          "billing_mode": "pay_as_you_go",
          "unit_asset_id": 5,
          "unit_asset": {
            "id": 5,
            "code": "tts_units",
            "kind": "unit",
            "precision": 0,
            "name": "TTS Units",
            "deleted_at": null,
            "created_at": "2026-01-10T09:00:00+00:00",
            "updated_at": "2026-01-10T09:00:00+00:00"
          },
          "required_entitlement_id": null,
          "units_per_call": null,
          "units_per_char": 1,
          "units_per_image": null,
          "units_per_second": null,
          "min_billable_chars": 1,
          "lumcoin_per_token": 10,
          "lumc_precision": 2,
          "price_lumc_minor": null,
          "unit_size": 1,
          "uses_money_first_pricing": false,
          "rate_unit": "char",
          "display_category": "voice",
          "is_premium": false,
          "display_order": 1,
          "metadata": null,
          "is_active": true,
          "created_at": "2026-01-10T09:00:00+00:00",
          "updated_at": "2026-01-10T09:00:00+00:00"
        },
        "config": {
          "tts_settings": {
            "model_id": "eleven_multilingual_v2",
            "voice_id": "21m00Tcm4TlvDq8ikWAM",
            "mode": "mode_v1",
            "language_code": null,
            "advanced_voice_settings": true,
            "voice_settings": {
              "stability": 0.5,
              "similarity_boost": 0.75,
              "use_speaker_boost": true
            }
          }
        },
        "is_public": false,
        "folder_id": null,
        "created_at": "2026-06-01T10:00:00+00:00",
        "updated_at": "2026-06-01T10:00:00+00:00"
      },
      {
        "type": "folder",
        "id": "c1d2e3f4-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
        "name": "Podcast Intros",
        "templates_count": 3,
        "created_at": "2026-05-01T09:00:00+00:00",
        "updated_at": "2026-05-01T09:00:00+00:00"
      }
    ],
    "current_page": 1,
    "last_page": 1,
    "per_page": 15,
    "total": 2,
    "current_folder": null,
    "breadcrumbs": [
      {
        "id": null,
        "name": "Root"
      }
    ]
  }
}
```

### 401 — The key is missing, unknown, disabled or expired.

**Yanıt alanları**

| Alan | Tür | Zor. | Açıklama |
| --- | --- | --- | --- |
| `success` | `boolean` | zorunlu | Always `false` in error responses. |
| `message` | `string` | zorunlu | Error text in the key's language (set through the `X-Locale` header). |
| `data` | `null` — nullable | zorunlu | Always `null` when the request is rejected before processing. |

**Örnek**

```json
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
```

### 403 — The key lacks the required permission, or the object belongs to another user.

**Yanıt alanları**

| Alan | Tür | Zor. | Açıklama |
| --- | --- | --- | --- |
| `success` | `boolean` | zorunlu | Always `false` in error responses. |
| `message` | `string` | zorunlu | Error text in the key's language (set through the `X-Locale` header). |

**Örnek**

```json
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
```

### 422 — Validation error. Offending fields are listed in `errors`.

**Yanıt alanları**

| Alan | Tür | Zor. | Açıklama |
| --- | --- | --- | --- |
| `message` | `string` | zorunlu | Errors overview. |
| `errors` | `object` | zorunlu | A detailed description of each field that failed validation. |
| `errors.*` | `array<string>` — rastgele anahtarlar | — |  |

**Örnek**

```json
{
  "message": "string",
  "errors": {}
}
```

---

- Bu sayfa tarayıcıda: https://lumean.app/tr/developers/docs/api/get-templates-browse
- Makine tarafından okunabilir tam başvuru: https://api.lumean.app/docs/llm.md
