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

# Sayfalama

> Liste endpoint'leri sayfalı yanıtlar döner. page ve per_page ile gezinin.

Liste uçları (`GET /v1/customers`, `GET /v1/appointments`, vb.) standart sayfalama döner. Yanıt, hem veri hem de sayfalama meta bilgisi içerir.

## Parametreler

<ParamField query="page" type="integer" default="1">
  Döndürmek istediğiniz sayfa numarası. `1`'den başlar.
</ParamField>

<ParamField query="per_page" type="integer" default="15">
  Sayfa başına kayıt sayısı. En fazla **100**. Daha büyük değer gönderirseniz `422` doğrulama hatası alırsınız.
</ParamField>

## Örnek istek

```bash theme={null}
curl --request GET \
  --url "https://dev.flextell.ai/api/v1/customers?page=2&per_page=25" \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12"
```

## Yanıt yapısı

Liste yanıtları `data` içinde kayıtları, `meta` içinde sayfalama bilgilerini, `links` içinde gezinme URL'lerini döner:

```json theme={null}
{
  "success": true,
  "data": [
    { "id": 1, "first_name": "Ayşe", "last_name": "Demir" },
    { "id": 2, "first_name": "Mehmet", "last_name": "Yılmaz" }
  ],
  "links": {
    "first": "https://dev.flextell.ai/api/v1/customers?page=1",
    "last":  "https://dev.flextell.ai/api/v1/customers?page=42",
    "prev":  "https://dev.flextell.ai/api/v1/customers?page=1",
    "next":  "https://dev.flextell.ai/api/v1/customers?page=3"
  },
  "meta": {
    "current_page": 2,
    "from": 26,
    "to": 50,
    "last_page": 42,
    "per_page": 25,
    "total": 1034,
    "path": "https://dev.flextell.ai/api/v1/customers"
  }
}
```

<ResponseField name="meta.total" type="integer">
  Filtrelerinize uyan toplam kayıt sayısı.
</ResponseField>

<ResponseField name="meta.last_page" type="integer">
  Mevcut `per_page` değeri ile son sayfa numarası.
</ResponseField>

<ResponseField name="links.next" type="string | null">
  Bir sonraki sayfa URL'i, yoksa `null`.
</ResponseField>

## Tüm kayıtları dolaşma örüntüsü

Kayıtları paralel işlem yapmadan sırayla dolaşmak için `links.next` takip edilebilir:

```js theme={null}
let url = "https://dev.flextell.ai/api/v1/customers?per_page=100";

while (url) {
  const res = await fetch(url, {
    headers: {
      Authorization: `Bearer ${TOKEN}`,
      "X-Tenant": "12",
    },
  });
  const body = await res.json();

  for (const customer of body.data) {
    handle(customer);
  }

  url = body.links.next; // null geldiğinde döngüden çıkar
}
```

## Performans ipuçları

* **Küçük sayfalar.** `per_page=100` yerine `25–50` tercih edin; büyük sayfalar bellek ve yanıt süresi maliyetini yükseltir.
* **Sık değişen listeler.** Birden fazla sayfa okurken araya yeni kayıt girerse kayıtlar sayfalar arası "kayabilir". Güçlü bir sıralama (ör. `sort_by=created_at&sort_order=desc`) kullanmak bu etkiyi azaltır.
* **Dakikada çok sayıda sayfa isteği atıyorsanız** [rate limit](/requests/rate-limiting) yiyebilirsiniz. Paralel sayfa isteklerini sınırlayın.

<Note>
  Şu an cursor-based pagination (imleçli sayfalama) desteklenmemektedir. İleride eklendiğinde [Changelog](/resources/changelog) üzerinden duyurulur.
</Note>
