Ana içeriğe geç

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 Permissions

If it is off, every request returns 401: Üyelik bilgileri hatalı ("Authentication failed"). See authentication.md.

Endpoint

FieldValue
MethodPOST
URLhttps://api.iletimerkezi.com/v1/get-report/json
Content-Typeapplication/json
AuthAPI 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 page and 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, format YYYY-MM-DD HH:MM:SS.
  • response.order.sendAt (string): When the order was handed to the carrier. Equals submitAt unless 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 +90 prefix.
    • status (integer): Message status (see table below).

The total, delivered, undelivered, waiting, submitAt, sendAt, sender, price fields 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)

CodeMeaning
113Order delivery in progress
114Order delivery completed
115Order could not be delivered

Message status codes (message[].status)

CodeMeaning
110Message being sent
111Message sent (delivered)
112Message 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-report immediately after send-sms, the order may still be status: 113 (in progress) with waiting > 0. Carrier acks land within seconds; webhook-based reporting is more efficient than polling.
  • Pagination capped at 1000. rowCount max is 1000. For orders with more than 1000 messages, increment page and 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: 114 is not "everything delivered". It only means the order's send pipeline finished. Always check delivered and undelivered for actual outcome.

Related

Last updated: 2026-04-29 · Türkçe