---
title: "Sipariş Raporu API (get-report)"
description: "send-sms ile oluşturulan siparişin teslimat raporunu sorgulayın. Sipariş özeti, mesaj başına teslim durumu, sayfalama."
slug: /docs/api/get-report
locale: tr
audience: developer
last_updated: 2026-04-29
endpoint:
  method: POST
  path: /v1/get-report/json
  base_url: https://api.iletimerkezi.com
auth: api-key-and-hash
related: [send-sms, authentication, get-balance, error-codes]
alternates:
  tr: https://www.iletimerkezi.com/docs/api/get-report
  en: https://www.iletimerkezi.com/en/docs/api/get-report
  toplusmsapi: https://toplusmsapi.com/sms/rapor/liste/json
  a2psmsapi: https://a2psmsapi.com/en/sms/rapor/liste/json
---

# Sipariş Raporu API (get-report)

`get-report` endpoint'i, [`send-sms`](./send-sms.md) ile oluşturulan bir siparişin teslimat raporunu döner. Sipariş genel durumu, sayaçlar (toplam / teslim edilen / edilemeyen / bekleyen), zaman damgaları, sipariş bedeli ve her bir mesajın alıcı bazında durumu tek yanıtta gelir. Büyük siparişler `page` + `rowCount` ile sayfalanır.

## Ö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-report/json` |
| Content-Type | `application/json` |
| Auth | API Key + Hash (`request.authentication`) |

## Request

### Şema

```
request
├─ authentication
│  ├─ key (string, zorunlu)
│  └─ hash (string, zorunlu)
└─ order
   ├─ id (string, zorunlu)         — send-sms yanıtından dönen orderId
   ├─ page (string, opsiyonel)     — varsayılan "1"
   └─ rowCount (string, opsiyonel) — bir sayfadaki mesaj adedi, varsayılan "1000", maks "1000"
```

> 1000'in üzerinde mesaj içeren siparişlerde tüm raporu çekmek için `page` değerini arttırarak ardışık çağrı yapın.

### Tam örnek

```json
{
  "request": {
    "authentication": {
      "key": "API_KEY",
      "hash": "API_HASH"
    },
    "order": {
      "id": "312891245",
      "page": "1",
      "rowCount": "1000"
    }
  }
}
```

## Response

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

```json
{
  "response": {
    "status": {
      "code": 200,
      "message": "İşlem başarılı"
    },
    "order": {
      "id": "312891245",
      "status": 114,
      "total": 1,
      "delivered": 1,
      "undelivered": 0,
      "waiting": 0,
      "submitAt": "2026-04-29 04:32:24",
      "sendAt": "2026-04-29 04:32:24",
      "sender": "eMarka Test",
      "price": 1,
      "message": [
        {
          "number": "+905333128320",
          "status": 111
        }
      ]
    }
  }
}
```

**Alanlar:**

- `response.order.id` (string): Sipariş ID'si.
- `response.order.status` (integer): Sipariş genel durumu (aşağıdaki tabloya bakın).
- `response.order.total` (integer): Siparişteki toplam mesaj sayısı.
- `response.order.delivered` (integer): Operatör tarafından alıcıya teslim edilen mesaj sayısı.
- `response.order.undelivered` (integer): Teslim edilemeyen mesaj sayısı (kara liste, kapalı hat, yanlış numara vb.).
- `response.order.waiting` (integer): Hâlâ kuyrukta bekleyen mesaj sayısı.
- `response.order.submitAt` (string): API'ye istek geldiği zaman damgası, format `YYYY-MM-DD HH:MM:SS`.
- `response.order.sendAt` (string): Operatöre verildiği zaman damgası. İleri tarihli sipariş değilse `submitAt` ile aynıdır.
- `response.order.sender` (string): Sipariş için kullanılan sender ID.
- `response.order.price` (integer): Siparişin tükettiği toplam kontör adedi. Mesaj başına 1 ya da daha fazla olabilir (uzun mesaj, UCS-2 vb.).
- `response.order.message[]` (array): Her bir alıcıya ait teslim durumu.
  - `number` (string): Alıcı numara, dönüşte `+90` prefix'i ile gelir.
  - `status` (integer): Mesaj durumu (aşağıdaki tabloya bakın).

> `total`, `delivered`, `undelivered`, `waiting`, `submitAt`, `sendAt`, `sender`, `price` alanları canlı API'de mevcuttur ve canlı testle doğrulanmıştır. Eski apidocs-website şartnamesinde bu alanlar listelenmemiş olabilir; canlı API ground truth alınır (drift: [`apidocs-website#3`](https://github.com/iletimerkezi/apidocs-website/issues/3)).

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

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

### Mesaj durum kodları (`message[].status`)

| Kod | Anlam |
|---|---|
| 110 | Mesaj gönderiliyor |
| 111 | Mesaj gönderildi |
| 112 | Mesaj gönderilemedi |

### Hata yanıtları

#### 401 — Üyelik bilgileri hatalı

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

#### 455 — Sipariş bulunamadı

Verilen `order.id` bu hesaba ait değil veya silinmiş. ID'yi `send-sms` yanıtından kontrol edin.

#### Diğer hata kodları

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

## Kod örnekleri

### cURL

```bash
curl -X POST 'https://api.iletimerkezi.com/v1/get-report/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "request": {
      "authentication": {
        "key": "'"$ILETIMERKEZI_API_KEY"'",
        "hash": "'"$ILETIMERKEZI_API_HASH"'"
      },
      "order": { "id": "312891245", "page": "1", "rowCount": "1000" }
    }
  }'
```


## Common Pitfalls

- **Numara format dönüşte değişir.** Gönderirken `905XXXXXXXXX` verseniz bile rapor yanıtında numara `+905XXXXXXXXX` olarak gelir. Numara karşılaştırma yapan kodlarda iki formatı da normalize edin.
- **Hemen sorgulamayın, kuyrukta bekleyebilir.** `send-sms`'in hemen ardından çağırırsanız sipariş `status: 113` (devam) ve `waiting > 0` olabilir. Operatör onayları saniyeler içinde gelir; webhook tabanlı raporlama daha verimli.
- **Sayfalama 1000'le sınırlı.** `rowCount` üst sınır 1000. 1000'den fazla mesaj içeren siparişler için `page` arttırılarak ardışık çağrı yapılır.
- **Yanıt eski şartnameden zengin.** Canlı API `total`, `delivered`, `undelivered`, `waiting`, `sender`, `price`, `submitAt`, `sendAt` alanlarını da döner. Bunları dashboard ve analitik için kullanabilirsiniz; eski şartname temelli SDK'lar bu alanları parse etmiyor olabilir.
- **`order.status: 114` "her şey teslim edildi" demek değil.** Sadece "siparişin gönderim akışı tamamlandı" demek. Detaylı kontrol için `delivered` ve `undelivered` sayaçlarına bakın.


## Related

- [SMS gönderme (send-sms)](./send-sms.md)
- [Kimlik doğrulama (authentication)](./authentication.md)
- [Bakiye sorgulama (get-balance)](./get-balance.md)
- [Webhook ile rapor (webhooks)](./webhooks.md)
- [Hata kodları tablosu](./error-codes.md)
