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

# Kişileri dışa aktarma

> Bütün kişileri okuyun veya yalnızca değişenleri okuyun.

Dışa aktarma işlemi `GET /contacts` ile yapılır. Ayrı bir uç nokta yoktur ve
başlatılacak bir iş yoktur: imleç `null` olana kadar sayfaları okursunuz.

## Bütün kişileri okuma

`limit` değerini 500 yapın, sonra `next_cursor` değerini izleyin:

```bash theme={null}
curl "https://kaisupport.com/api/v1/contacts?limit=500" \
  -H "Authorization: Bearer $KAI_API_KEY"
```

```json theme={null}
{
  "data": [ { "id": "4f1d6f2a-...", "external_id": "DK-1042" } ],
  "next_cursor": "MjAyNi0wOC0wNVQxODoyMDoxMS4wMDBafDRmMWQ2ZjJh",
  "has_more": true
}
```

Sonraki istekte `next_cursor` değerini `cursor` olarak gönderin. `has_more`
değeri `false` olduğunda durun.

```python theme={null}
import requests

API = "https://kaisupport.com/api/v1"
HEADERS = {"Authorization": f"Bearer {KAI_API_KEY}"}

cursor, rows = None, []
while True:
    params = {"limit": 500}
    if cursor:
        params["cursor"] = cursor
    page = requests.get(f"{API}/contacts", params=params, headers=HEADERS).json()
    rows += page["data"]
    cursor = page["next_cursor"]
    if not cursor:
        break

print(len(rows))
```

## Yalnızca değişenleri okuma

Son başarılı çalışmanızın zaman damgasını `updated_since` ile gönderin:

```bash theme={null}
curl "https://kaisupport.com/api/v1/contacts?limit=500&updated_since=2026-08-05T00:00:00Z" \
  -H "Authorization: Bearer $KAI_API_KEY"
```

Okuduğunuz son kişinin `updated_at` değerini saklayın ve bir sonraki
çalışmanın `updated_since` değeri olarak kullanın. Küçük bir örtüşme bırakın,
örneğin bir dakika, böylece çalışma sırasında değişen bir kişi iki çalışmanın
arasına düşmez.

## Sıralamanın nedeni

Kai kişileri en eski değişiklik önce gelecek biçimde, önce `updated_at` sonra
`id` sırasıyla döndürür.

40.000 kişilik bir dışa aktarma çok sayıda istek alır ve çalışma alanınız bu
sırada kişileri düzenlemeye devam eder. Düzenlenen bir kişi bu sıralamada sona
gider, geriye gitmez. Bu yüzden dışa aktarma o kişiyi iki kez görebilir, ama
atlayamaz.

En yeni değişiklik önce gelen bir sıralama ise tam tersini yapar ve dışa
aktarma satırları sessizce atlar.

## Filtreler

| Parametre       | Ne yapar                                                       |
| --------------- | -------------------------------------------------------------- |
| `search`        | Ad, e-posta, telefon veya dış kimliğin bir parçasıyla eşleşir. |
| `owner`         | Bir üye kimliği, tek bir hesap sorumlusunun kişileri için.     |
| `owner=none`    | Sorumlusu olmayan kişiler.                                     |
| `updated_since` | Bir ISO 8601 zaman damgasında veya sonrasında değişen kişiler. |

Filtreler birlikte çalışır. Bu istek, bir ekip arkadaşının bugün değişen
kişilerini listeler:

```
GET /contacts?owner=2c9a0d51-...&updated_since=2026-08-06T00:00:00Z&limit=500
```
