Order Report API (get-report)
The get-report endpoint returns the delivery report for an order created via send-sms. One response carries the overall order status, summary counters (total / delivered / undelivered / waiting), timestamps, sender, order price, and per-recipient delivery status. Large orders paginate via page + rowCount.
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-report/json | | Content-Type | application/json | | Auth | API Key + Hash (request.authentication) |
Request
Schema
request
├─ authentication
│ ├─ key (string, required)
│ └─ hash (string, required)
└─ order
├─ id (string, required) — orderId returned by send-sms
├─ page (string, optional) — default "1"
└─ rowCount (string, optional) — messages per page, default "1000", max "1000"For orders larger than 1000 messages, increment
pageand call again until you have walked the full report.
Full example
{
"request": {
"authentication": {
"key": "API_KEY",
"hash": "API_HASH"
},
"order": {
"id": "312891245",
"page": "1",
"rowCount": "1000"
}
}
}Response
Success (200)
{
"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
}
]
}
}
}İşlem başarılı means "Request successful" in Turkish.
Fields:
response.order.id(string): Order ID.response.order.status(integer): Overall order status (see table below).response.order.total(integer): Total number of messages in the order.response.order.delivered(integer): Messages confirmed delivered to the recipient by the carrier.response.order.undelivered(integer): Messages that could not be delivered (blacklist, off network, invalid number, etc.).response.order.waiting(integer): Messages still in the queue.response.order.submitAt(string): When the API received the request, formatYYYY-MM-DD HH:MM:SS.response.order.sendAt(string): When the order was handed to the carrier. EqualssubmitAtunless the order was scheduled for a future time.response.order.sender(string): Sender ID used for the order.response.order.price(integer): Total credits the order consumed. Per-message cost may exceed 1 (long messages, UCS-2, etc.).response.order.message[](array): Per-recipient delivery status.number(string): Recipient number, returned with+90prefix.status(integer): Message status (see table below).
The
total,delivered,undelivered,waiting,submitAt,sendAt,sender,pricefields are present in the live API and confirmed by live testing. Older versions of the apidocs-website spec may not list these fields; we treat the live API as ground truth (drift:apidocs-website#3).
Order status codes (order.status)
| Code | Meaning | |---|---| | 113 | Order delivery in progress | | 114 | Order delivery completed | | 115 | Order could not be delivered |
Message status codes (message[].status)
| Code | Meaning | |---|---| | 110 | Message being sent | | 111 | Message sent (delivered) | | 112 | Message could not be sent |
Error responses
401 — Üyelik bilgileri hatalı ("Authentication failed")
See authentication.md.
455 — Sipariş bulunamadı ("Order not found")
The given order.id does not exist on this account or has been removed. Verify the ID against the response from send-sms.
Other error codes
For 400, 404, 456: see error-codes.md.
Code samples
cURL
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
- Number format changes in the response. You may submit
905XXXXXXXXX, but the report returns+905XXXXXXXXX. If you compare numbers across systems, normalize both representations. - Don't poll right after sending. If you call
get-reportimmediately aftersend-sms, the order may still bestatus: 113(in progress) withwaiting > 0. Carrier acks land within seconds; webhook-based reporting is more efficient than polling. - Pagination capped at 1000.
rowCountmax is 1000. For orders with more than 1000 messages, incrementpageand call until exhausted. - The response is richer than older spec. The live API also returns
total,delivered,undelivered,waiting,sender,price,submitAt,sendAt. Use them for dashboards and analytics; SDKs built against the older spec may not expose these fields. order.status: 114is not "everything delivered". It only means the order's send pipeline finished. Always checkdeliveredandundeliveredfor actual outcome.
Related
Last updated: 2026-04-29 · Türkçe