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.comSettings → Security → Access Permissions

If 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 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)

| 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-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