Order List API (get-reports)
The get-reports endpoint returns the aggregate summary list of all SMS orders created within a given date range. For each order the response carries counters (total / delivered / undelivered / waiting), timestamps, and sender; per-recipient breakdown is not included — for that, call get-report for the specific order.
This endpoint backs the Reports → Bulk SMS History screen in the panel. Typical use cases: dashboards, periodic analytics, queries like "list orders from the last week".
Prerequisite: enable API access in the panel
Before calling this endpoint, the Allow API access toggle must be on in your iletiMerkezi panel.
Location:
panel.iletimerkezi.com→ Settings → Security → Access PermissionsIf it is off, every request returns
401 — Üyelik bilgileri hatalı("Authentication failed"). See authentication.md.
Endpoint
| Field | Value | |---|---| | Method | POST | | URL | https://api.iletimerkezi.com/v1/get-reports/json | | Content-Type | application/json | | Auth | API Key + Hash (request.authentication) |
Request
Schema
request
├─ authentication
│ ├─ key (string, required)
│ └─ hash (string, required)
└─ filter
├─ start (string, required) — range start, format Y-m-d (e.g. 2026-04-01)
├─ end (string, required) — range end, format Y-m-d
└─ page (integer, optional) — default 1Range limit: the gap between
startandendis at most 10 days. Longer periods require sequential calls (2026-04-01..2026-04-10, then2026-04-11..2026-04-20, etc.). If the limit is exceeded the request returns458 — Tarih aralığı hatalı("Invalid date range").
Full example
{
"request": {
"authentication": {
"key": "API_KEY",
"hash": "API_HASH"
},
"filter": {
"start": "2026-04-22",
"end": "2026-04-29",
"page": 1
}
}
}Response
Success (200)
{
"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"
}
]
}
}İşlem başarılı means "Request successful" in Turkish.
Fields:
response.count(integer): Number of orders in the current page of the response, not the total in the date range. Walk pages until empty to get the full picture.response.orders[](array): List of orders. Each element:id(integer): Order ID. Use it as input toget-reportfor the detailed per-recipient view.status(integer): Overall order status (113 / 114 / 115).total(integer): Total number of messages in the order.delivered(integer): Messages confirmed delivered.undelivered(integer): Messages that could not be delivered.waiting(integer): Messages still in the queue.submitAt(string): Timestamp when the API received the order, formatYYYY-MM-DD HH:MM:SS.sendAt(string): Timestamp when the order was handed to the carrier. EqualssubmitAtunless the order was scheduled.sender(string): Sender ID used for the order.
The per-recipient breakdown (
message[]array withnumberand per-messagestatus) is not present in this response. If you need it, callget-reportper order; for multi-order dashboards this endpoint is more efficient (one request = N order summaries).
Empty list (200)
When the date range contains no orders, or you have walked past the last page:
{
"response": {
"status": { "code": 200, "message": "İşlem başarılı" },
"count": 0,
"orders": []
}
}count: 0 plus an empty orders array is the natural terminator for the pagination loop.
Order status codes (order.status)
| Code | Meaning | |---|---| | 113 | Order delivery in progress | | 114 | Order delivery completed | | 115 | Order could not be delivered |
Error responses
401 — Üyelik bilgileri hatalı ("Authentication failed")
See authentication.md.
458 — Tarih aralığı hatalı ("Invalid date range")
Two possible causes:
startorendis not inY-m-dformat (e.g.2026-04-22).- The gap between
startandendis longer than 10 days.
To cover a wider period, split the range into 10-day windows and loop.
Other error codes
For 400, 404: see error-codes.md.
Code samples
cURL
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. One letter apart, very different behavior.get-report(singular) returns per-recipient detail for one order;get-reports(plural) returns aggregate summaries for N orders in a date range. Per-recipient data lives only in the singular endpoint.- 10-day cap is non-negotiable. Monthly or campaign-period reports require a loop. A 30-day single request returns
458. Split the range client-side into 10-day windows and call sequentially. - Strict date format.
Y-m-d(e.g.2026-04-22) is required. Forms like22/04/2026,22-04-2026, or2026/04/22are rejected. In JavaScript,date.toISOString().slice(0, 10)is safe. countis not "total".response.countis the number of orders in the current page. To find the total in the range, incrementpageuntil the response is empty (count: 0or emptyorders).waiting > 0means the report is provisional. Recently submitted orders may still be in the carrier queue. For final figures either re-poll later or rely on webhooks for delta updates.status: 114does not mean "all delivered". It only means "the send pipeline finished". Always checkdeliveredandundeliveredfor the actual outcome — same semantic asget-report.- No recipient numbers, but sender is visible. This endpoint omits recipient phone numbers (privacy and payload size); sender plus counters is what you get. For per-recipient audit, call
get-reportper order.
Related
- Single-order report (get-report) — per-recipient detail
- Send SMS (send-sms)
- Webhook delivery reports (webhooks) — push-based alternative
- Authentication
- Error code table
Last updated: 2026-04-30 · Türkçe