ParcelRadar.io
ParcelRadar.ioDeveloper Portal
← Back to Overview

API Reference

Full endpoint reference for the Parcel Radar APIs.

Production

This is the production API

The consoles below call the live Parcel Radar deployment, not a sandbox. Enter your X-API-Key to authorize the requests, then run any endpoint.

Instant Quote — Synchronous

One request, one response: POST your shipment to /quote and the call blocks until every carrier's rate is in (or a ~60s timeout, which returns 504). The simplest way to integrate — choose this unless you must avoid holding a request open for up to a minute (e.g. serverless/edge functions with short timeouts, or very high concurrency).

POSThttps://api.parcelradar.io/api/partner/v1/instant-quote/quote

Get live rates (sync)

Submit a shipment and receive the live rate from every supported carrier in a single call. Blocks until the carrier fan-out settles (or ~60s → 504).

POST/api/partner/v1/instant-quote/quote
Enter your X-API-Key above to run this request.
This endpoint gathers live rates from every supported carrier in real time, so it can take a few seconds longer than a typical API call to respond. Please allow the request to finish.
Send the request to see the response.

Instant Quote — Asynchronous

Non-blocking, in three steps: POST /inquiry to start, GET /inquiry?id= to poll until the status leaves "processing", then GET /results?inquiryId= for the rates. Returns the same rates as the sync lane — choose this when you don't want a long-held request, want to show progressive UI, or run where request timeouts are short.

Get live rates (async)

Create an inquiry, poll it until it's ready, then fetch the results — the same rates as the synchronous /quote, without holding a request open. Call these three endpoints in order.

Your app
Parcel Radar API
1POST /inquiry
202 · { inquiryId }id to poll
2GET /inquiry?id={inquiryId}loop
{ status }until "ready"
3GET /results?inquiryId={inquiryId}
{ status, results[] }promoted first, then cheapest

Polling tips: wait ~1–2s between polls (a short exponential backoff is fine) and give up after about 60s — the same ceiling the synchronous /quote uses. Only POST /inquiry needs your X-API-Key; the poll and results calls just need the returned inquiryId.

POSThttps://api.parcelradar.io/api/partner/v1/instant-quote/inquiry

Create an inquiry

Start an async quote. Returns immediately with an inquiryId to poll — the carrier fan-out runs in the background. Same shipment body as /quote.

POST/api/partner/v1/instant-quote/inquiry
Enter your X-API-Key above to run this request.
Send the request to see the response.
GEThttps://api.parcelradar.io/api/partner/v1/instant-quote/inquiry

Poll inquiry status

Check whether an inquiry has finished. Poll every ~1–2s until the status leaves "processing", then fetch the results.

GET/api/partner/v1/instant-quote/inquiry
Enter your X-API-Key above to run this request.
Send the request to see the response.
GEThttps://api.parcelradar.io/api/partner/v1/instant-quote/results

Get inquiry results

Fetch the per-provider rates for an inquiry. Same results shape as the synchronous /quote response; results fill in once the status is "ready".

GET/api/partner/v1/instant-quote/results
Enter your X-API-Key above to run this request.
Send the request to see the response.

Provider detail

Look up a provider's shipping conditions or rate card by the provider id returned in a quote result.

GEThttps://api.parcelradar.io/api/partner/v1/instant-quote/conditions

Get provider conditions

The shipping conditions for one provider — incoterms, transit time, service network, features, weight config and route coverage. Pass a provider id from a /quote result.

GET/api/partner/v1/instant-quote/conditions
Enter your X-API-Key above to run this request.
Send the request to see the response.
GEThttps://api.parcelradar.io/api/partner/v1/instant-quote/ratecard

Get provider ratecard

The rate card for one provider — display flags, banners, and (for manual-rate providers) a static price curve. Pass a provider id from a /quote result.

GET/api/partner/v1/instant-quote/ratecard
Enter your X-API-Key above to run this request.
Send the request to see the response.

Address Book

Your tenant's saved sender/recipient addresses — the same book members manage in the Member Portal, so changes show up there. Partner lane only. Switching an address off keeps it on file and listed; deleting removes it.

GEThttps://api.parcelradar.io/api/partner/v1/address-book

List address book

A page of your tenant's saved addresses. Ordering is by stored value, so `country` sorts by ISO code rather than localized name. Switched-off addresses are included by default.

GET/api/partner/v1/address-book
Enter your X-API-Key above to run this request.
Send the request to see the response.
POSThttps://api.parcelradar.io/api/partner/v1/address-book

Create an address

Save a new address. At least one role flag must be true; an address can be both, and then appears in both lists. Returns the address as stored.

POST/api/partner/v1/address-book
Enter your X-API-Key above to run this request.
Send the request to see the response.
PUThttps://api.parcelradar.io/api/partner/v1/address-book/{id}

Update an address

Full replacement (PUT): send the complete address — omitted optional fields clear to null. Omit `isActive` to keep the current on/off state (toggle it with `PATCH /{id}/active`).

PUT/api/partner/v1/address-book/{id}
Enter your X-API-Key above to run this request.
Send the request to see the response.
PATCHhttps://api.parcelradar.io/api/partner/v1/address-book/{id}/active

Activate / deactivate an address

Switch an address on or off. A soft disable: it stays in the book and still comes back from the list, so it can be switched back on. Idempotent. To remove it for good, use DELETE.

PATCH/api/partner/v1/address-book/{id}/active
Enter your X-API-Key above to run this request.
Send the request to see the response.
DELETEhttps://api.parcelradar.io/api/partner/v1/address-book/{id}

Delete an address

Permanently remove an address. This cannot be undone and the id stops resolving. To keep it on file but unused, PATCH /{id}/active with `isActive: false` instead.

DELETE/api/partner/v1/address-book/{id}
Enter your X-API-Key above to run this request.
Send the request to see the response.

Orders

Your tenant's shipping orders, shared with the Member Portal. Partner lane only.

GEThttps://api.parcelradar.io/api/partner/v1/orders

List orders

A page of the tenant's orders, newest first.

GET/api/partner/v1/orders
Enter your X-API-Key above to run this request.
Send the request to see the response.
POSThttps://api.parcelradar.io/api/partner/v1/orders

Create an order

Create an order from the two required routing countries.

POST/api/partner/v1/orders
Enter your X-API-Key above to run this request.
Send the request to see the response.
GEThttps://api.parcelradar.io/api/partner/v1/orders/{id}

Get an order

Fetch one order by id.

GET/api/partner/v1/orders/{id}
Enter your X-API-Key above to run this request.
Send the request to see the response.
PUThttps://api.parcelradar.io/api/partner/v1/orders/{id}

Update an order

Full replacement (PUT): send the complete order — omitted fields are cleared. Status is unchanged (use suspend).

PUT/api/partner/v1/orders/{id}
Enter your X-API-Key above to run this request.
Send the request to see the response.
POSThttps://api.parcelradar.io/api/partner/v1/orders/{id}/suspend

Suspend an order

Put an order on hold (→ ON_HOLD). Only from CREATED or PROCESSING.

POST/api/partner/v1/orders/{id}/suspend
Enter your X-API-Key above to run this request.
Send the request to see the response.

Order Documents

The files attached to an order's Package Documents (invoices, packing lists, …). Bytes travel base64 — no multipart. Also embedded as `attachments` on a single-order GET. Partner lane only.

GEThttps://api.parcelradar.io/api/partner/v1/orders/{orderId}/documents

List an order's documents

The order's uploaded Package Documents (metadata only, newest first). These are the FILES — distinct from the `documents` milestone (the tab's JSON state). The same list is embedded as `attachments` on a single-order GET.

GET/api/partner/v1/orders/{orderId}/documents
Enter your X-API-Key above to run this request.
Send the request to see the response.
POSThttps://api.parcelradar.io/api/partner/v1/orders/{orderId}/documents

Upload an order document

Attach a file to the order. The bytes travel base64-encoded in `contentBase64` (a `data:…;base64,` prefix is accepted) — plain JSON, no multipart. Decoded size ≤ 10 MB.

POST/api/partner/v1/orders/{orderId}/documents
Enter your X-API-Key above to run this request.
Send the request to see the response.
PUThttps://api.parcelradar.io/api/partner/v1/orders/{orderId}/documents/{docId}

Update a document

Replace a document's metadata (name / description / docType). Include `contentBase64` to replace the file bytes too; omit it to keep the stored file.

PUT/api/partner/v1/orders/{orderId}/documents/{docId}
Enter your X-API-Key above to run this request.
Send the request to see the response.
GEThttps://api.parcelradar.io/api/partner/v1/orders/{orderId}/documents/{docId}

Download a document

Fetch one document WITH its bytes (base64). Decode `contentBase64` to a Blob/file and save it as `name`.

GET/api/partner/v1/orders/{orderId}/documents/{docId}
Enter your X-API-Key above to run this request.
Send the request to see the response.
DELETEhttps://api.parcelradar.io/api/partner/v1/orders/{orderId}/documents/{docId}

Delete a document

Remove a document from the order.

DELETE/api/partner/v1/orders/{orderId}/documents/{docId}
Enter your X-API-Key above to run this request.
Send the request to see the response.