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

# Raporlar

> Tek seferlik bir tarama raporu dışa aktarın veya düzenli rapor e-postaları zamanlayın.

> [!NOTE]
>
> GetQR API'si beta aşamasındadır ve seçili çalışma alanlarında kullanılabilir. Ayrıntılar genel sürümden önce değişebilir.

Raporlar, tamamlanmış bir gün, hafta veya ay için QR kodu başına taramaları özetler. Hemen bir rapor dışa aktarın veya düzenli olarak e-postayla gönderilen bir rapor zamanlayın.

| Yöntem | Yol | Açıklama |
| - | - | - |
| `POST` | `/api/v1/reports` | [Rapor dışa aktarma](#rapor-dışa-aktarma) |
| `GET` | `/api/v1/reports/schedules` | [Zamanlanmış raporları listeleme](#zamanlanmış-raporları-listeleme) |
| `POST` | `/api/v1/reports/schedules` | [Rapor zamanlama](#rapor-zamanlama) |
| `PATCH` | `/api/v1/reports/schedules/{id}` | [Zamanlanmış raporu güncelleme](#zamanlanmış-raporu-güncelleme) |
| `DELETE` | `/api/v1/reports/schedules/{id}` | [Zamanlanmış raporu silme](#zamanlanmış-raporu-silme) |

## Başlıklar

**Authorization** `string` *required*

`Bearer` ve ardından API anahtarınız. Bkz. [Kimlik doğrulama](https://docs.getqr.com/tr/api/authentication.md).

**Content-Type** `string`

`application/json`. `POST` ve `PATCH` isteklerinde zorunludur.

## Kapsam

Tek seferlik ve zamanlanmış raporların ikisi de bir `scope` alır:

| `scope` | Kapsadığı | `qrIds` |
| - | - | - |
| `all` | Çalışma alanınızdaki QR kodları | Göndermeyin |
| `selected` | Seçilmiş bir QR kodu kümesi | Bir veya daha fazla kimlik |
| `single` | Tam olarak bir QR kodu | Tam olarak bir kimlik |

Bir rapor en fazla 50 QR kodunu listeler. `all` ile bunlar en son oluşturulan aktif QR kodlarıdır; duraklatılmış kodlar dahil edilmez. `selected` ve `single` ile duraklatılmış kodlar dahil edilir. Kısa bağlantısı olmayan QR kodlarının taraması yoktur ve atlanır.

## Dönem

Dönem her zaman son tamamlanmış dönemdir; bu nedenle bir rapor hiçbir zaman bugünün kısmi verilerini içermez. Dönemin sınırları, raporun saat dilimindeki gece yarısıdır.

| `period` veya `frequency` | Kapsadığı |
| - | - |
| `daily` | Önceki gün |
| `weekly` | Önceki hafta, pazartesiden pazara |
| `monthly` | Önceki takvim ayı |

## Rapor dışa aktarma

`POST /api/v1/reports`

Son tamamlanmış dönem için bir rapor oluşturur ve yanıtta döndürür.

**scope** `string` *required*

`all`, `selected` veya `single`. Bkz. [Kapsam](#kapsam).

**period** `string` *required*

`daily`, `weekly` veya `monthly`. Bkz. [Dönem](#dönem).

**format** `string` *required*

`json`, raporu yanıt gövdesinde döndürür. `csv` ve `pdf` bir dosya indirmesi döndürür.

**qrIds** `string[]`

Kapsanacak QR kodları. `selected` (bir veya daha fazla kimlik) ve `single` (tam olarak bir kimlik) için zorunludur. `all` için göndermeyin.

**timezone** `string` (default: UTC)

Dönem sınırlarının hizalandığı IANA saat dilimi; örneğin `America/New_York`. Bilinmeyen bir saat dilimi `422` döndürür.

**locale** `string` (default: en)

PDF'in dili; örneğin `en` veya `de`. Desteklenmeyen bir değer İngilizceye döner. `csv` ve `json` tarafından yok sayılır.

**name** `string`

PDF'te gösterilen başlık; en fazla 40 karakter. `csv` ve `json` tarafından yok sayılır.

### JSON yanıtı

**periodStart** `string`

Dönemin ilk günü, `YYYY-MM-DD`.

**periodEnd** `string`

Dönemden sonraki ilk gün, `YYYY-MM-DD`. Dönem bu günün başındaki gece yarısında sona erer.

**qrs** `object[]`

QR kodu başına bir kayıt.

**properties**

**qrId** `string`

QR kodunun kimliği.

**name** `string`

QR kodunun başlığı veya `Untitled QR`.

**type** `string`

QR kodu türü; örneğin `website`.

**totalScans** `integer`

Dönemdeki toplam taramalar.

**uniqueScans** `integer`

Dönemdeki benzersiz taramalar.

**topGeography** `string`

En çok taramanın geldiği ülke kodu; tarama yoksa `—`.

**topDevice** `string`

En çok taramanın geldiği cihaz veya `—`.

**topOs** `string`

En çok taramanın geldiği işletim sistemi veya `—`.

**topBrowser** `string`

En çok taramanın geldiği tarayıcı veya `—`.

### CSV ve PDF yanıtları

Gövde dosyanın kendisidir. `Content-Disposition`, dosyayı döneme göre adlandırır; örneğin `report-2026-08-10_2026-08-17.csv`. CSV'de QR kodu başına bir satır ve `QR ID`, `QR name`, `QR type`, `Total scans`, `Unique scans`, `Top geography`, `Top device`, `Top OS` ve `Top browser` sütunları bulunur.

```bash JSON theme={null}
curl -X POST "https://getqr.com/api/v1/reports" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": "selected",
    "qrIds": ["clw3n7t1x0002ab0d5mqe8pkr"],
    "period": "weekly",
    "format": "json",
    "timezone": "America/New_York"
  }'
```

```bash PDF theme={null}
curl -X POST "https://getqr.com/api/v1/reports" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "scope": "all", "period": "monthly", "format": "pdf", "locale": "de" }' \
  --output report.pdf
```

```json 200 theme={null}
{
  "periodStart": "2026-08-10",
  "periodEnd": "2026-08-17",
  "qrs": [
    {
      "qrId": "clw3n7t1x0002ab0d5mqe8pkr",
      "name": "Landing page",
      "type": "website",
      "totalScans": 128,
      "uniqueScans": 96,
      "topGeography": "US",
      "topDevice": "Mobile",
      "topOs": "iOS",
      "topBrowser": "Safari"
    }
  ]
}
```

## Zamanlanmış rapor nesnesi

Zamanlanmış bir rapor, kendi saat dilimindeki gece yarısında, onu oluşturan hesaba e-postayla gönderilir.

**id** `string`

Zamanlanmış raporun kimliği.

**name** `string | null`

E-posta konusunda ve panelde gösterilen etiket.

**frequency** `string`

`daily`, `weekly` veya `monthly`.

**scope** `string`

`all`, `selected` veya `single`.

**qrIds** `string[] | null`

`selected` ve `single` kapsamlarında raporun kapsadığı QR kodları. Hiç kimlik gönderilmediyse `null`.

**filters** `null`

Her zaman `null`. Ayrılmıştır.

**includePdf** `boolean`

E-postaya PDF eklenip eklenmediği.

**status** `string`

`active` veya `paused`.

**timezone** `string`

Gönderim zamanının ve dönemin hizalandığı IANA saat dilimi.

**locale** `string`

E-postanın ve PDF'in dili.

**nextRunAt** `string`

Bir sonraki e-postanın zamanı, ISO 8601: raporun saat diliminde bir sonraki gece yarısı (`daily`), bir sonraki pazartesi (`weekly`) veya bir sonraki ayın 1'i (`monthly`).

**lastRunAt** `string | null`

Son e-postanın gönderildiği zaman, ISO 8601.

**createdAt** `string`

Oluşturulma tarihi, ISO 8601.

**updatedAt** `string`

Son güncelleme tarihi, ISO 8601.

## Zamanlanmış raporları listeleme

`GET /api/v1/reports/schedules`

Diğer üyelerin oluşturdukları dahil, çalışma alanınızın zamanlanmış raporlarını en yeniden başlayarak döndürür. Liste sayfalıdır: bkz. [Sayfalama](https://docs.getqr.com/tr/api/introduction.md#sayfalama).

**page** `integer` (default: 1)

Döndürülecek sayfa; 1 veya daha büyük.

**pageSize** `integer` (default: 100)

Sayfa başına sonuç; 1 ile 100 arası.

```bash cURL theme={null}
curl "https://getqr.com/api/v1/reports/schedules?page=1&pageSize=100" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "data": [
    {
      "id": "clx8f2k9a0001qk0c8vhd3xyz",
      "name": "Weekly campaign digest",
      "frequency": "weekly",
      "scope": "selected",
      "qrIds": ["clw3n7t1x0002ab0d5mqe8pkr", "clw3n7t1x0004ab0d9rzu2wfh"],
      "filters": null,
      "includePdf": true,
      "status": "active",
      "timezone": "America/New_York",
      "locale": "en",
      "nextRunAt": "2026-08-10T04:00:00.000Z",
      "lastRunAt": "2026-08-03T04:00:12.000Z",
      "createdAt": "2026-07-01T12:34:56.000Z",
      "updatedAt": "2026-07-28T09:12:00.000Z"
    }
  ],
  "pagination": { "page": 1, "pageSize": 100, "total": 1, "hasMore": false }
}
```

## Rapor zamanlama

`POST /api/v1/reports/schedules`

Düzenli olarak e-postayla gönderilen bir rapor oluşturur. `nextRunAt`, sıklığa ve saat dilimine göre hesaplanır.

> [!NOTE]
>
> Bir QR kodu, her sıklık için yalnızca bir zamanlanmış rapora ait olabilir. Çakışan bir zamanlama `409 conflict` döndürür.

`all` kapsamlı bir rapor, aynı sıklıktaki diğer tüm raporlarla çakışır. Duraklatılmış raporlar da sayılır.

**frequency** `string` *required*

Raporun ne sıklıkla gönderileceği: `daily`, `weekly` veya `monthly`. Kapsadığı dönemi de belirler. Bkz. [Dönem](#dönem).

**scope** `string` *required*

`all`, `selected` veya `single`. Bkz. [Kapsam](#kapsam).

**timezone** `string` *required*

Gönderim zamanının ve dönemin hizalandığı IANA saat dilimi; örneğin `America/New_York`. Bilinmeyen bir saat dilimi `422` döndürür.

**locale** `string` *required*

E-postanın ve PDF'in dili; örneğin `en` veya `de`. Desteklenmeyen bir değer İngilizceye döner. `zh`, `ja`, `ko` ve `ar` dillerindeki PDF'ler İngilizce oluşturulur.

**qrIds** `string[]`

Kapsanacak QR kodları. `selected` (bir veya daha fazla kimlik) ve `single` (tam olarak bir kimlik) için zorunludur. Her kimlik çalışma alanınızdaki bir QR koduna ait olmalıdır; aksi hâlde istek `404` döndürür.

**name** `string`

E-posta konusunda ve panelde gösterilen etiket; en fazla 40 karakter.

**includePdf** `boolean` (default: false)

Raporun PDF sürümünü e-postaya ekler.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/reports/schedules" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Weekly campaign digest",
    "frequency": "weekly",
    "scope": "selected",
    "qrIds": ["clw3n7t1x0002ab0d5mqe8pkr"],
    "includePdf": true,
    "timezone": "America/New_York",
    "locale": "en"
  }'
```

```json 200 theme={null}
{
  "id": "clx8f2k9a0001qk0c8vhd3xyz",
  "name": "Weekly campaign digest",
  "frequency": "weekly",
  "scope": "selected",
  "qrIds": ["clw3n7t1x0002ab0d5mqe8pkr"],
  "filters": null,
  "includePdf": true,
  "status": "active",
  "timezone": "America/New_York",
  "locale": "en",
  "nextRunAt": "2026-08-10T04:00:00.000Z",
  "lastRunAt": null,
  "createdAt": "2026-08-03T12:34:56.000Z",
  "updatedAt": "2026-08-03T12:34:56.000Z"
}
```

## Zamanlanmış raporu güncelleme

`PATCH /api/v1/reports/schedules/{id}`

Zamanlanmış bir raporu değiştirir ya da duraklatır ve sürdürür. Yalnızca değiştirmek istediğiniz alanları, en az bir tane olmak üzere gönderin. Sıklığı veya saat dilimini değiştirmek ya da duraklatılmış bir raporu sürdürmek `nextRunAt` değerini yeniden hesaplar. Sıklık başına tek rapor kuralı yine geçerlidir; bu nedenle çakışan bir değişiklik `409` döndürür.

**id** `string` *required*

Zamanlanmış raporun kimliği. Liste veya oluşturma yanıtından alın.

**status** `string`

`paused`, zamanlamayı silmeden e-postaları durdurur. `active` e-postaları sürdürür.

**name** `string`

Etiket; en fazla 40 karakter.

**frequency** `string`

`daily`, `weekly` veya `monthly`.

**scope** `string`

`all`, `selected` veya `single`.

**qrIds** `string[]`

Kapsanacak QR kodları. Her kimlik çalışma alanınızdaki bir QR koduna ait olmalıdır.

**includePdf** `boolean`

E-postaya bir PDF ekler.

**timezone** `string`

IANA saat dilimi.

**locale** `string`

E-postanın ve PDF'in dili.

```bash cURL theme={null}
curl -X PATCH "https://getqr.com/api/v1/reports/schedules/clx8f2k9a0001qk0c8vhd3xyz" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Monthly campaign digest",
    "frequency": "monthly",
    "status": "active"
  }'
```

```json 200 theme={null}
{
  "id": "clx8f2k9a0001qk0c8vhd3xyz",
  "name": "Monthly campaign digest",
  "frequency": "monthly",
  "scope": "selected",
  "qrIds": ["clw3n7t1x0002ab0d5mqe8pkr"],
  "filters": null,
  "includePdf": true,
  "status": "active",
  "timezone": "America/New_York",
  "locale": "en",
  "nextRunAt": "2026-09-01T04:00:00.000Z",
  "lastRunAt": "2026-08-03T04:00:12.000Z",
  "createdAt": "2026-07-01T12:34:56.000Z",
  "updatedAt": "2026-08-05T10:15:00.000Z"
}
```

## Zamanlanmış raporu silme

`DELETE /api/v1/reports/schedules/{id}`

Zamanlamayı siler ve sonraki tüm e-postaları durdurur.

> [!WARNING]
>
> Zamanlanmış bir raporu silme işlemi geri alınamaz.

**id** `string` *required*

Zamanlanmış raporun kimliği.

```bash cURL theme={null}
curl -X DELETE "https://getqr.com/api/v1/reports/schedules/clx8f2k9a0001qk0c8vhd3xyz" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{ "id": "clx8f2k9a0001qk0c8vhd3xyz", "deleted": true }
```

## Sık karşılaşılan sorunlar

> [accordion] Rapor dışa aktarırken 404
>
> `selected` veya `single` kapsamında, `qrIds` değerlerinden hiçbiri çalışma alanınızda kısa bağlantısı olan bir QR koduyla eşleşmedi. Kimlikleri kontrol edin.

> [accordion] Rapor zamanlarken 404 "QR not found."
>
> `qrIds` değerlerinden biri çalışma alanınızdaki bir QR kodu değil veya silinmiş. Kimlikleri [QR kodlarını listeleme](https://docs.getqr.com/tr/api/endpoints/qr-codes.md) ile kontrol edin.

> [accordion] Rapor zamanlarken 409
>
> QR kodlarından biri zaten aynı sıklıktaki bir zamanlanmış rapora ait veya bu sıklıktaki bir rapor `all` kapsamını kullanıyor. O raporu düzenleyin veya silin ya da farklı bir sıklık seçin.

> [accordion] 404 "Scheduled report not found."
>
> `id`, çalışma alanınızdaki hiçbir zamanlanmış raporla eşleşmiyor. Değeri [Zamanlanmış raporları listeleme](#zamanlanmış-raporları-listeleme) yanıtından alın.

> [accordion] Raporda bugünün taramaları eksik
>
> Raporlar yalnızca son tamamlanmış dönemi kapsar. Anlık sayılar için [Analizler](https://docs.getqr.com/tr/api/endpoints/analytics.md) uç noktasını kullanın.

## Sırada ne var

> [card] [Analizler](https://docs.getqr.com/tr/api/endpoints/analytics.md)

> [card] [Uygulamada zamanlanmış raporlar](https://docs.getqr.com/tr/analytics/scheduled-reports.md)

> [card] [Raporları okuma](https://docs.getqr.com/tr/analytics/reading-reports.md)

> [card] [Hatalar](https://docs.getqr.com/tr/api/errors.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.