A unified shipping API over every carrier and order.
Publish one versioned endpoint that quotes, labels, and tracks across all your carrier accounts, so callers integrate once while the carriers behind it change.
The problem
Every caller integrates with every carrier, one at a time.
Your clients, your storefront, and your ERP each want rates, labels, and tracking. Without a single API in front, each of them integrates with each carrier, or with a wrapper your team wrote years ago and now has to keep alive.
When you add a carrier or change how you choose one, every caller feels it. A multi-carrier API should hide that change, not pass it on.
How it works in Flows
A multi-carrier API built from endpoints and flows.
Each endpoint is a flow behind a contract. Callers see a stable, documented API; you change what runs behind it whenever you need to.
endpointPublish the endpointPut a flow behind a stable URL such as /v/your-org/rates. A custom contract defines the request and response JSON Schemas, and requests that do not match are rejected with a 422 before any flow runs.
transform.mapMap the caller's shapeTranslate the caller's fields into an Orderly shipment with inline mapping, defaults, and lookup tables for codes such as service levels or warehouse ids.
orderly.rateQuote every carrier at onceRate shop across every carrier account connected to your organization and rank the quotes by cheapest, fastest, or best value, whichever the caller asked for.
respondAnswer in your contractThe Respond step becomes the HTTP response, checked against the response schema. A sync endpoint answers within 25 seconds, or returns a 202 and a status URL when the flow needs longer.
orderly.label.purchaseBuy labels through the same APIA second endpoint buys the label the caller chose, with funds held before any carrier call. A retried request with the same Idempotency-Key returns the original label instead of buying another.
shipments.getTrack through a standard contractUse the standard shipments.get and shipments.list contracts to let callers look up a shipment by external id or tracking number, whichever carrier carried it.
Callers
Keys, limits, and callbacks for every consumer.
Each consumer gets its own fe_ key that can only invoke, bound to one endpoint, shown once, and revocable without touching anyone else. Set how many requests each caller may make per minute; callers over the limit get a 429 with Retry-After. Async callers can receive the final result as a signed callback, and every request is logged with its caller, status, latency, and the run it started. The endpoints page covers each of these in detail.
Where it fits
One API for your clients, too.
A 3PL can publish the same API per client, with keys that work only on that client's endpoint, as in white-label client integrations. Endpoint prices and the request pools are on Flows pricing. Read the virtual endpoints docs ↗
Questions
Unified shipping API FAQ.
Can we change carriers without breaking API callers?
Yes. The endpoint always answers with the flow's published version. Add a carrier account, change the ranking, or rework the mapping, then publish: every caller keeps the same URL, contract, and key, and runs already in progress finish on the version they started with.
What stops a retried label request from buying twice?
Callers send an Idempotency-Key with each request. A retry with the same key from the same caller returns the original result instead of starting a second run, so a nervous client cannot buy the same label twice. The label step also holds funds before calling the carrier, so the API can never overdraw your balance.
Do callers get documentation for the API?
Yes. Orderly generates an OpenAPI 3.1 description of every active endpoint, which you can hand to callers or load into an API client to generate code. A dry test also lets you check a sample request against the contract before anyone calls.
How is a unified shipping API priced?
Each virtual endpoint is $19/mo. Flows Launch includes none, Flows Pro includes 10, and Flows Dedicated includes 25. Calls draw on the plan's monthly pool of endpoint requests, and requests beyond the pool are $2 per 1,000.
Publish one API
Give every caller one shipping API, whatever runs behind it.
Tell us who calls you today, what they send, and which carriers sit behind it. We will show you the endpoint contract and the flow that answers it.