API Documentation


Thank you for taking the time to read our documentation for Liminal Network's API. We hope that you find our API to be easy-to-use in whatever language or library you are connecting with. Our goal is to make our products some of the easiest apis you've ever implemented.



Liminal Network's proprietary product connects you directly with your carriers. Updates depend on the carrier's technology, and update frequency can be anywhere from near-real-time to daily.

Liminal Network currently supports four major APIs:

  • Get Delivery Status
  • Get Expected Delivery Date
  • Get Bill of Lading
  • Get Proof of Delivery

Get Delivery Status returns a shipment's current status as provided by the carrier. Common statuses include "In Transit", "Out for Delivery", "Images Available", "Images Complete", or "Delivered".

Get Expected Delivery Date returns a shipment's expected or actual delivery date as provided by the carrier. The delivery date is actual when the delivery status is "Delivered".

Get Bill of Lading returns an image (pdf, png, jpg) of the Bill of Lading (BOL) provided to the carrier when a shipment was tendered. Your customers may find this useful because it often includes details about the shipment including weight, pallet count, and dimensions.

Get Proof of Delivery returns an image of the Proof of Delivery (POD) confirming the shipment was delivered. The POD often (but not always) includes the name and signature of the person who signed for a shipment. Larger customers may have a "drop & hook" agreement that allows carriers to deliver multiple shipments at one time. Under these agreements the receiver has a set amount of time to review the delivery and file any disputes.

Everyone has different data available. Our product works without a TMS - you probably have PRO / Tracking Number and Carrier available in your OMS or Invoice data. We offer variations on each API to meet your needs:

  • Multiple Carriers on One Key - you have Carrier Name/SCAC and PRO/Tracking Number
  • One Carrier per Key - your system requires separate API keys for each carrier
  • Tracking Number - you have the tracking number but not the carrier information
  • Bill of Lading - you want to track by BOL number
  • Multiple Accounts per Carrier - you have multiple credentials for one carrier and need to make separate calls

A Note on Vocabulary

If you're curious about any supply chain terminology in this documentation, our Glossary is here. PRO and tracking number are interchangeable, generally PRO is used for LTL and tracking number for parcel.

Rate Limits

Every subscription includes virtually unlimited access to our Sandbox. Our Sandbox rate limits are in the 10s of requests per second and hundreds per day.

Your production per-API rate limits are listed under each API Key, and your account-wide limits are listed under Billing.


The best way to learn about our API is to use it. You can test our Sandbox API from any web browser:

When you have the tracking number and carrier, you can specify the SCAC (or get pattern matching on the carrier's name) by including the name / SCAC in the url, along with the tracking number.

Note: using the Sandbox carrier forces the carrier in this example to be our internal sandbox provider. Below, you will need to replace YOUR_API_KEY with an API Key provided by our dashboard, and replace NAME_OR_SCAC and CARRIER_ID with real data.

Getting Started with Carriers

Before you try this live with your own carriers and tracking information, carrier credentials need to be added on My Carriers. It is important to partner with your shipping/operations team - if you create new credentials on the carrier's website, you won't have the access you need. More information on carrier setup can be found here.

Try it with a form

To try all of this live with your own carriers and tracking information, you can visit the Tracking page, and see what you have available now.

Multiple Carriers on one API Key / Selecting a Carrier via API

When accessing our API using one of your user-defined API Keys, you may have selected more than one Carrier Key to use with that API key. We recommend this API whenever possible. This API has the lowest latency and will provide the best user experience. When you provide the SCAC or Carrier name, we connect directly:

Single Carriers per key

If your platform expects a different API Key for each carrier, you can create an API Key for each Carrier Credential. In this case, the URL you use can be simplified to remove the SCAC:

What about PRO Numbers if I don't have the carrier?

Of course we have you covered. Generally, if we know which carrier to connect to, for a given Tracking/PRO (characters and number patterns), we will connect directly. If we are not able to determine which is which, we may try some or all carriers, returning data if / when data is returned by the upstream carrier.

What about BOL Numbers?

Yes, we take BOL Numbers too. That said, BOL number calls usually take more time for carriers to process because they're not inherently unique. We recommend using tracking/PRO if possible for a better end user experience.

I know exactly what I want

Sometimes setups with carriers are more complex than one Carrier Key per SCAC can handle. If you have multiple accounts with one or more carriers (multiple carrier credentials with the same SCAC), you can use the Carrier ID to access the specific Carrier Key you need. You can create one API Key with all of your Carrier Keys attached and specify the Carrier ID for each specific Carrier key from our internal Tracking page. You will need to be fully explicit and provide all references with this API set. Your Carrier IDs go where the SCAC was above:

What API arguments can I use?

For status, date, lading, or proof, the list of arguments to our API endpoints and their meanings are as follows:

  • auth - authentication argument, required if not provided in the http headers
  • bol - Bill of Lading number, typically used with /lading
  • pro - Pro / tracking number, can typically be used with all endpoints
  • image - 0..pages-1, when /lading and /proof can return multiple pages, fetch individual pages in the highest quality we have.

What about rating?

If you would like to check the pricing on your LTL shipments, you can test directly in our web interface on the Rating page, remembering to select your "ArcBest" carrier (we only support Rating via ArcBest at the current time). When on our Rating page, you can see what your API call would look like with those arguments, allowing you to copy / paste and edit as necessary.

For making rating calls to our API directly, there are several required, and some optional arguments:

  • origin - required This is the origin address where the shipment is to be picked up from. The full address format is: city,state,zip,country,name1,name2,street,account, with partial formats accepted:
    • city,state,zip
    • city,state,zip,country,,,street
    • city,state,zip,country,,,street,account
    • city,state,zip,country,,,,account

    country, if included must be one of: us, ca, or mx

    account, if included must be the estes-express account id

  • dest - required - This is the destination address where the shipment is to be dropped off to. This has the same format and requirements as the originaddress.
  • tpb - optional - This is the Third-Party to bill, who is not at the origin or destination address. Same format as origin and dest, with the addition that account must be provided.
  • payer - required - One of ship (origin account), cons (recipient account), or tpb (third-party, requires tpb above)
  • caller - required - Who you are, as the API caller - one of ship (origin account), cons (recipient account), or tpb (third-party, requires tpb above)
  • when - required - When to pick up in YYYY-MM-DD format.
  • frt - required - Description of the freight items you would like to ship, defined as: length,width,height,weight,class,count,type or length,width,height,weight,class,count with all distance measurements in inches, and weight measurements in pounds.

    type, if included, must be one of:

    • BAG - Bag
    • BL - Bale
    • BRL - Barrel
    • BSK - Basket
    • BX - Box
    • BKT - Bucket
    • BLKH - Bulkhead
    • BDL - Bundle
    • CRB - Carboy
    • CTN - Carton
    • CS - Case
    • CHT - Chest
    • CL - Coil
    • CRT - Crate
    • CYL - Cylinder
    • DR - Drum
    • FIR - Firkin
    • HMP - Hamper
    • HHD - Hogshead
    • KEG - Keg
    • PKG - Package
    • PL - Pail
    • PLT - Pallet (default if omitted)
    • PC - Piece
    • RK - Rack
    • REL - Reel
    • RL - Roll
    • SKD - Skid
    • SLP - Slip Sheet
    • TOTE - Tote
    • TRK - Trunk
    • TB - Tube
    class must be one of:
    • Class: 50 -> Over 50 lbs per cubic foot
    • 55 -> 50 - 35 lbs
    • 60 -> 35 - 30 lbs
    • 65 -> 30 - 22.5 lbs
    • 70 -> 22.5 - 15 lbs
    • 77.5 -> 15 - 13.5 lbs
    • 85 -> 13.5 - 12 lbs
    • 92.5 -> 12 - 10.5 lbs
    • 100 -> 10.5 - 9 lbs
    • 110 -> 9 - 8 lbs
    • 125 -> 8 - 7 lbs
    • 150 -> 7 - 6 lbs
    • 175 -> 6 - 5 lbs
    • 200 -> 5 - 4 lbs
    • 250 -> 4 - 3 lbs
    • 300 -> 3 - 2 lbs
    • 400 -> 2 - 1 lbs
    • 500 -> Under 1 lb per cubic foot
  • frt1 - optional - use frt1...frt15 if you need more freight items, same format as frt
  • ...
  • frt15 - optional - use frt1...frt15 if you need more freight items, same format as frt
  • pickup - comma-separated list of (optional) pickup options. If included, must be selected from:
    • liftgate - Use truck-provided liftgate
    • inside - Items are not near Truck
    • residential - Residential Area
    • tradeshow - Tradeshow
    • ltd_church - Church site
    • ltd_mil - Military site
    • ltd_school - School site
    • ltd_storage - U-Storage site
    • ltd_other - Other limited-access site
  • dropoff - comma-separated list of (optional) delivery options. If included, must be selected from:
    • construction - Construction site
    • liftgate - Use truck-provided liftgate
    • inside - Items are not near Truck
    • residential - Residential Area
    • ts_warehouse - Tradeshow delivery to warehouse
    • ts_direct - Tradeshow delivery direct to site
    • ltd_church - Church site
    • ltd_mil - Military site
    • ltd_school - School site
    • ltd_storage - U-Storage site
    • ltd_other - Other limited-access site
  • other - comma-separated list of (optional) additional options that are not specifically pickup or delivery related. If included, must be selected from:
    • pallet - Palletized shipment (default if all of your frt* item types are PLT)
    • capacity - One piece is over 28 feet (automatically included when freight dimensions included)
    • nostack - Do Not Stack
    • arr_notify - Arrival Notification
    • bond - Customs Bond or Supervision
    • single - All pieces in one shipment
    • freeze - Shipment must be protected from freezing
    • hazard - Hazardous Shipment

Final Mile Photos Webhooks

Webhooks are sent to your specified url as a POST request. For per-image events, each will be base64 encoded, and included as the "image" argument, with a "filename" to indicate original file name and type.

The following data will be posted to your endpoint, encoded either as json (as shown), or as 'application/x-www-form-urlencoded' (not shown).

  • qrcode -
      "what": "qrcode",
      "ref": number // for single; [number, number] for a range
  • start -
      "what": "start",
      "ref": "string"
  • image -
      "what": "image",
      "ref": "string",
      "image": "data:image/jpeg;base64,IMAGE_DATA_BASE64_ENCODED"
      "filename": "REF_NAME.jpg" // same ref as above, for verification
  • end -
      "what": "end",
      "ref": "string",
      "longstatus": "string" // is exactly "{status} - {longstatus}" as returned by /status endpoint