Limits and pagination
Rate limits
IDM counts requests per tenant, per credential and per endpoint class (geography, quotes, deliveries and so on) in sliding windows. The limits are set by Intellisol and can be narrowed for your tenant, never widened beyond the platform's.
Every answer tells you where you stand:
| Header | Meaning |
|---|---|
RateLimit-Limit | Requests allowed in the current window |
RateLimit-Remaining | Requests left in it |
RateLimit-Reset | Seconds until the window resets |
Retry-After | On a 429: seconds to wait before trying again |
Over the limit you get 429 RATE_LIMIT_EXCEEDED. Wait for Retry-After, then retry with the same idempotency key. If you need more capacity, talk to Intellisol rather than spreading calls over several credentials.
IDM also watches for patterns that look like abuse, such as guessing references. A credential that is refused for other tenants' references too often is slowed down.
Pagination
Lists are paged with an opaque cursor:
GET /v1/partners?limit=50
→ { "items": [ … ], "next_cursor": "c_…" }
GET /v1/partners?limit=50&cursor=c_…
→ { "items": [ … ], "next_cursor": null }
limitis 1 to 100; the default is 25.- Pass
next_cursorback exactly as you received it. Do not build or change cursors. next_cursor: nullmeans there are no more pages.- There is no page number or offset.
Sizes and formats
- Bodies are JSON (
content-type: application/json). Other content types are refused. - Bodies have a size cap; over it you get
413 PAYLOAD_TOO_LARGE. - Times are ISO 8601 in UTC, such as
2026-09-20T10:33:02Z. - Money is a string with two decimals plus a currency code.
- Phones are in international format, such as
+233200000000.