AdvancedInfor OSION / ION API architecture

Infor OS Service Limits: Payload, File Size and Rate, and How to Design Around Them

Question
infor os service limits

Also searched as

  • infor os limits
  • ion api payload size limit
  • infor ion document size limit

Short answer

Infor OS services such as ION API and ION messaging have limits on request rate, payload or document size, and processing time. The values change by service and release, so look them up for your tenant rather than trusting a number from a thread, and design integrations to be chunked, resumable and idempotent so a limit becomes a retry instead of an outage.

Applies to: Infor OS with ION API, ION Messaging and IDM; specific limits are version and tenant dependent and must be confirmed with Infor documentation

How to find and design around Infor OS service limits

  1. 1List every Infor OS service your integration touches: ION API calls, ION document flows, IDM attachments, file or data lake loads.
  2. 2For each, look up the documented limits in the current Infor documentation and confirm tenant-specific ones with Infor support. Record them in your integration design.
  3. 3Measure your real maximums: the largest document, the biggest list response and the peak request rate at month end or quarter end.
  4. 4Chunk anything large: page list calls, split big documents into logical batches, and move large files by reference instead of embedding them in a message.
  5. 5Make each unit of work idempotent with a business key so that a retry after a failure cannot duplicate transactions.
  6. 6Add monitoring for rejected, delayed and dead-lettered messages, with an alert before the queue backs up.
  7. 7Test at limit size in a non-production tenant, including the failure path, before go-live.

Three kinds of limits to design for

Rate limits cap how many requests a client may make in a time window; the symptom is HTTP 429. Size limits cap the payload of a request, a message or an attachment; the symptom is a rejection or a truncated result. Time limits cap how long a request or a message-processing step may run; the symptom is a timeout or a retried message.

Each needs a different remedy. Rate is solved with caching and backoff, size with chunking and passing references, and time with asynchronous processing instead of one long synchronous call.

Patterns that survive limits

Prefer an asynchronous, message-based flow for bulk work. Send small business documents through ION, let the receiving application process them at its own pace, and confirm completion with an acknowledgement. This is more resilient than a single call that must finish inside a timeout.

Where a large result is needed, request it in pages and persist a checkpoint after each page, so a failure resumes from the last good page. For files, store them in a document or file service and send only the identifier through the integration path.

paged read with checkpoint (pseudocode):
cursor = load_checkpoint() or start
while cursor:
  page = get(url, cursor, page_size=N)
  process(page)            # idempotent
  save_checkpoint(page.next)
  cursor = page.next

What to do when a limit is not enough

If a legitimate workload cannot fit, the answer is usually architectural, not a bigger quota. Extract data on a schedule to a reporting store and let heavy readers use that. It keeps analytics and AI queries off the transactional services and avoids both rate and size problems.

For on-prem and hybrid estates this is common: a read-only replica or extract feeds search, dashboards and private AI, while ION carries the transactional integration that truly needs to be live.

Try it here, free

Webhook Payload Template Generator

Open full tool

Design a consistent JSON webhook payload for ERP events, with an idempotency id, versioning and signature header guidance.

Common pitfalls

  • !Designing around a limit number from a forum post that no longer applies to your release.
  • !Testing only with small sample documents and finding the size limit in production.
  • !Embedding large files in messages instead of passing a reference.
  • !Retrying non-idempotent operations, which duplicates orders or postings.
  • !Ignoring dead-lettered messages until a user reports missing data.

How an ERP-grounded AI assistant handles this

Heavy AI reads belong off the live services. Netray typically points a private model at a governed extract or replica, so retrieval does not compete with transactional ION traffic. ERPray and DataRay can run on-prem against that copy, read-only, with the generated query visible for review.

Frequently asked questions

What are the service limits in Infor OS?

They cover request rate, payload or document size and processing time, and differ by service and release. Check current Infor documentation and confirm tenant-specific values with Infor support before designing.

How do I handle large payloads in ION?

Split them into business-sized documents, pass big files by reference through a document or file service, and process asynchronously with acknowledgements instead of one oversized message.

What happens when a message is too large or fails?

It is rejected or retried and may end up in an error or dead-letter state. Monitor those queues, fix the cause, and replay safely, which requires idempotent processing on the receiving side.

Are Infor OS limits different on-premise?

Cloud gateway limits do not apply to purely internal traffic, but the application server, database and network still bound throughput. Size and test them, and use extracts for heavy read workloads.

Related

How-to

Infor OS Usage Limits: What They Are and What to Do When You Hit Them

Infor OS limits how hard clients can call its services, most visibly through the ION API gateway, and answers over-limit calls with HTTP errors such as 429 rather than silently dropping them. Exact numbers depend on your tenant and contract, so confirm them with Infor, then fix the cause: chatty clients, missing caching, or polling that should be an event.

How-to

How to Create an .ionapi File and Service Account in Infor OS

An .ionapi file is a JSON credentials file you download from ION API after registering an Authorized App of type Backend Service and creating a service account for it. It carries the tenant, client id, client secret, the token and authorization endpoints, and the service account keys that your scripts or integrations use to request an OAuth 2.0 access token.

Advanced

How to Call M3 API (MI Programs) Through ION API

Calling M3 from an external system today almost always means going through ION API rather than the older direct MvxAPI SOAP endpoint: you create an ION API authorized app or service account in the ION API portal, download its .ionapi credential file, obtain an OAuth 2.0 access token, and call the M3 MI program transaction through the m3api-rest execute endpoint with that token.

Advanced

Paging M3 API MI List Transactions Past the Default Record Limit

M3 List transactions (the read/browse transaction most MI programs expose, such as CRS610MI.LstByNumber or OIS100MI.LstOrderHead) cap the rows returned per call using the MaxReturnedRecords input field, and by default many clients leave it low or unset, which looks like the API silently truncating results. Set MaxReturnedRecords explicitly, then loop the call using the last key values from the previous page as the starting position until fewer rows than the limit come back.

Error fix

Fix a 401 Unauthorized error from Infor ION API

A 401 from ION API almost always means the credentials in the .ionapi file no longer match what ION API Gateway expects - not that the password is simply wrong. Check whether the Authorized App or service account behind the file was revoked, regenerated, expired, or issued for a different tenant, then re-test with a direct OAuth2 client_credentials call before touching any calling code.

Error fix

Diagnose and fix a failed BOD document flow in ION Desk

A Document Flow showing Failed in ION Desk means a BOD (Business Object Document) stopped either at schema validation, at the mapping step, or at the target application. Open the failed instance's detail to see the exact failing element, fix the source data or mapping, then use Resubmit rather than re-triggering the original transaction to avoid duplicates.

AI for ERP

AI Agents Over Infor ION API, BODs, and the Infor Data Lake

Build AI agents on Infor ION API Gateway, BODs, and Data Lake, alongside or instead of Infor's own GenAI features, with your choice of model and hosting.

AI for ERP

An Air-Gapped Private LLM for SyteLine, Built for Defense Suppliers

Deploy a private LLM on an air-gapped network alongside Infor SyteLine for defense suppliers: no internet egress, ITAR and CMMC-aware architecture.

Stuck on Infor OS?

Talk to engineers who work inside Infor OS every week, and who build private AI that answers these questions from your own ERP data.

Keep exploring

Free tools

ERP fixes and how-tos

Runs with your ERP

Guides

AI on your ERP

Integrations