---
title: "Sipariş Listesi API (get-reports)"
description: "Belirli bir tarih aralığındaki SMS siparişlerinin agrega özet listesini çekin. Sipariş bazında toplam, teslim edilen, edilemeyen, bekleyen sayaçları + sender ve zaman damgaları."
slug: /docs/api/get-reports
locale: tr
audience: developer
last_updated: 2026-04-30
endpoint:
  method: POST
  path: /v1/get-reports/json
  base_url: https://api.iletimerkezi.com
auth: api-key-and-hash
related: [get-report, send-sms, authentication, error-codes]
alternates:
  tr: https://www.iletimerkezi.com/docs/api/get-reports
  en: https://www.iletimerkezi.com/en/docs/api/get-reports
  toplusmsapi: https://toplusmsapi.com/sms/rapor/paket-ozet/json
  a2psmsapi: https://a2psmsapi.com/en/sms/rapor/paket-ozet/json
---

# Sipariş Listesi API (get-reports)

`get-reports` endpoint'i, verilen tarih aralığında oluşturulmuş tüm SMS siparişlerinin **agrega özet listesini** döner. Her sipariş için sayaçlar (toplam / teslim edilen / edilemeyen / bekleyen), zaman damgaları ve sender bilgisi tek yanıtta gelir; mesaj-bazında alıcı kırılımı **bu yanıtta yoktur** — onun için sipariş başına [`get-report`](./get-report.md) kullanılır.

Bu endpoint, panelin **Raporlar → Toplu SMS Geçmişi** ekranının arkasındaki listeleme sorgusudur. Tipik kullanım: dashboard, dönemsel analitik, "son hafta gönderimlerini listele" gibi sorular.

## Önemli ön koşul: Panel'de API erişimi

> Bu endpoint'i çağırmadan önce panelinizde **API kullanımına izin ver** seçeneğinin aktif olması gerekir.
>
> Ayar yeri: `panel.iletimerkezi.com` → **Ayarlar → Güvenlik → Erişim İzinleri**
>
> Aktif değilse istek `401 — Üyelik bilgileri hatalı` ile döner. Detay: [authentication.md](./authentication.md)

## Endpoint

| Alan | Değer |
|---|---|
| Method | `POST` |
| URL | `https://api.iletimerkezi.com/v1/get-reports/json` |
| Content-Type | `application/json` |
| Auth | API Key + Hash (`request.authentication`) |

## Request

### Şema

```
request
├─ authentication
│  ├─ key (string, zorunlu)
│  └─ hash (string, zorunlu)
└─ filter
   ├─ start (string, zorunlu)  — başlangıç tarihi, format Y-m-d (ör. 2026-04-01)
   ├─ end (string, zorunlu)    — bitiş tarihi, format Y-m-d
   └─ page (integer, opsiyonel) — varsayılan 1
```

> **Tarih aralığı limiti:** `start` ve `end` arasındaki fark **maksimum 10 gün**. Daha geniş aralık için ardışık çağrı yapılmalı (`2026-04-01..2026-04-10`, sonra `2026-04-11..2026-04-20` gibi). Limit aşılırsa istek `458 — Tarih aralığı hatalı` ile döner.

### Tam örnek

```json
{
  "request": {
    "authentication": {
      "key": "API_KEY",
      "hash": "API_HASH"
    },
    "filter": {
      "start": "2026-04-22",
      "end": "2026-04-29",
      "page": 1
    }
  }
}
```

## Response

### Başarılı (200)

```json
{
  "response": {
    "status": {
      "code": 200,
      "message": "İşlem başarılı"
    },
    "count": 2,
    "orders": [
      {
        "id": 312988299,
        "status": 114,
        "total": 1,
        "delivered": 1,
        "undelivered": 0,
        "waiting": 0,
        "submitAt": "2026-04-29 21:49:42",
        "sendAt": "2026-04-29 21:49:42",
        "sender": "eMarka Test"
      },
      {
        "id": 313003818,
        "status": 114,
        "total": 1,
        "delivered": 1,
        "undelivered": 0,
        "waiting": 0,
        "submitAt": "2026-04-30 06:57:45",
        "sendAt": "2026-04-30 06:57:45",
        "sender": "eMarka Test"
      }
    ]
  }
}
```

**Alanlar:**

- `response.count` (integer): Yanıttaki sipariş sayısı (mevcut sayfadaki). Tarih aralığındaki toplam sipariş sayısı değildir; sayfalama için `page` arttırılarak ardışık çağrı yapılır.
- `response.orders[]` (array): Sipariş listesi. Her eleman:
  - `id` (integer): Sipariş ID. Detay raporu için [`get-report`](./get-report.md)'a verilir.
  - `status` (integer): Sipariş genel durumu (113 / 114 / 115).
  - `total` (integer): Siparişteki toplam mesaj sayısı.
  - `delivered` (integer): Teslim edilmiş mesaj sayısı.
  - `undelivered` (integer): Teslim edilemeyen mesaj sayısı.
  - `waiting` (integer): Hâlâ kuyrukta bekleyen mesaj sayısı.
  - `submitAt` (string): API'nin isteği aldığı an, format `YYYY-MM-DD HH:MM:SS`.
  - `sendAt` (string): Operatöre verildiği an. İleri tarihli sipariş değilse `submitAt` ile aynıdır.
  - `sender` (string): Sipariş için kullanılan sender ID.

> Mesaj-bazında alıcı kırılımı (`message[]` array, `number`, `status` per-recipient) **bu endpoint'te yoktur**. Tek sipariş için detay rapor gerekiyorsa [`get-report`](./get-report.md) kullanın; çok-siparişli dashboard için bu endpoint daha verimlidir (tek istek = N sipariş özeti).

### Boş liste (200)

Tarih aralığında sipariş yoksa veya sayfalamada son sayfayı geçtiyseniz:

```json
{
  "response": {
    "status": { "code": 200, "message": "İşlem başarılı" },
    "count": 0,
    "orders": []
  }
}
```

`count: 0` ve boş `orders` dizisi sayfalama döngüsü için doğal terminator'dır.

### Sipariş durum kodları (`order.status`)

| Kod | Anlam |
|---|---|
| 113 | Sipariş gönderimi devam ediyor |
| 114 | Sipariş gönderimi tamamlandı |
| 115 | Sipariş gönderilemedi |

### Hata yanıtları

#### 401 — Üyelik bilgileri hatalı

Detay: [authentication.md](./authentication.md).

#### 458 — Tarih aralığı hatalı

İki olası neden:
1. `start` veya `end` formatı `Y-m-d` (örn. `2026-04-22`) değil.
2. `start` ile `end` arasındaki fark 10 günden büyük.

Geniş bir dönemi kapsamak için tarihleri 10 günlük dilimlere bölün ve döngüyle çağırın.

#### Diğer hata kodları

`400, 404` için tablo: [error-codes.md](./error-codes.md).

## Kod örnekleri

### cURL

```bash
curl -X POST 'https://api.iletimerkezi.com/v1/get-reports/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "request": {
      "authentication": {
        "key": "'"$ILETIMERKEZI_API_KEY"'",
        "hash": "'"$ILETIMERKEZI_API_HASH"'"
      },
      "filter": { "start": "2026-04-22", "end": "2026-04-29", "page": 1 }
    }
  }'
```


## Common Pitfalls

- **`get-reports` ≠ `get-report`.** Endpoint isimleri tek harfle ayrılır ama davranış farklıdır. `get-report` (tekil) tek sipariş için **mesaj-bazında detay** verir; `get-reports` (çoğul) tarih aralığında **N sipariş için agrega özet** döner. Mesaj kırılımı sadece tekil endpoint'te.
- **10 günlük tavan unutulmaz.** Aylık veya kampanya dönemi raporu için döngü gerekir. 30 günlük tek istek `458` döner. İstemci tarafında dönemi 10'arlı dilimlere bölüp her dilim için ardışık istek atın.
- **Tarih formatı katı.** `Y-m-d` (`2026-04-22`) zorunlu. `22/04/2026`, `22-04-2026`, `2026/04/22` kabul edilmez. JavaScript tarafında `date.toISOString().slice(0, 10)` güvenli.
- **`count` "toplam" değildir.** `response.count` mevcut sayfadaki sipariş adedidir. Tarih aralığındaki toplam sipariş sayısını öğrenmek için `count` küçülene kadar `page`'i arttırın (boş `orders` veya `count: 0` döndüğünde sayfalama biter).
- **`waiting > 0` ise rapor henüz son değil.** Anlık sorgularda yeni siparişlerin bir kısmı operatör kuyruğunda olabilir. Final rakamlar için ya kısa süre sonra tekrar sorgulayın ya da webhook ile delta güncelleyin.
- **`status: 114` "her şey teslim" demek değil.** Sadece "gönderim akışı bitti". Gerçek başarı için `delivered` ve `undelivered` sayaçlarına bakın. (Aynı semantic [`get-report`](./get-report.md)'taki gibi.)
- **Numara görünmez, sender görünür.** Bu endpoint alıcı numarayı listelemez (privacy + payload boyutu); sender ve sayaçlar yeterlidir. Alıcı bazlı denetim için tek tek `get-report` çağırın.


## Related

- [Tek sipariş raporu (get-report)](./get-report.md) — mesaj-bazında detay, alıcı kırılımı
- [SMS gönderme (send-sms)](./send-sms.md)
- [Webhook ile rapor (webhooks)](./webhooks.md) — push tabanlı alternatif
- [Kimlik doğrulama (authentication)](./authentication.md)
- [Hata kodları tablosu](./error-codes.md)
