Carrier’s official API

Banyan Technology API: integration guide

Banyan Technology is a US freight connectivity and TMS platform that rates and books shipments across many carriers from one integration. Its V3 REST API covers creating a shipment and pulling multi-carrier quotes, booking a chosen quote (optionally dispatching a pickup), tracking, document retrieval (BOL, POD, labels) and freight invoice data. It is aimed at shippers, 3PLs and software vendors that want LTL and other modes behind a single JSON API.

This guide covers Banyan Technology’s own API. Credentials come from Banyan Technology, not from FreightAPIs, and we are not affiliated with them.

Want one API key for carrier terminals, NMFC and ports instead? FreightAPIs API docs →

Interface REST/JSONEndpoints 7Reviewed 2026-10-09Open in ChatGPT↗Open in Claude↗

At a glance

CarrierBanyan Technology
TypeMulti-carrier TMS platform
InterfaceREST/JSON
AuthenticationOAuth 2.0 client credentials (JWT bearer token)
CapabilitiesRate quote (create shipment), Transit time, Booking, dispatch & pickup, Shipment tracking, Documents & images (BOL, POD, labels), Freight invoices, Accessorial codes (static data)

Getting access

  • API access is tied to a Banyan customer account. Client credentials (a client_id and client_secret) are issued by your Banyan account manager rather than through self-service signup.
  • Banyan provides an integration (test) environment for building and a separate production environment. The production base URL is supplied by Banyan when you go live, so confirm it with your account manager.
  • Which carriers you get quotes from, and features such as market reference rates (pullMarketRates), depend on how your Banyan account is configured.
  • The documentation reviewed does not describe pricing for API access or a formal approval process.

Authentication

OAuth 2.0 client credentials (JWT bearer token).

  • POST to /auth/connect/token with Content-Type application/x-www-form-urlencoded and the fields grant_type=client_credentials, client_id and client_secret. Both credential values must be URL-encoded.
  • An optional clientrefnum field ties the token to a specific client reference so actions can be traced back to it.
  • The response returns access_token (a JWT), token_type Bearer, expires_in (about 3,600 seconds) and the granted scope.
  • Send Authorization: Bearer <access_token> on every API call. Tokens last roughly one hour, so refresh before expiry; an expired token returns 401.

Endpoints

Rate quote (create shipment)

Quoting works by creating a shipment with importAsStatus set to Quoted. Banyan runs the request through its carrier rating engine and returns a loadId plus a list of carrier quotes. The same call can also import a shipment directly as Pending, Booked or Dispatched.

POST/api/v3/shipmentsCreate a shipment and, with importAsStatus=Quoted, return multi-carrier quotes.
Key inputsimportAsStatus (Pending | Quoted | Booked | Dispatched)waitForRates, shouldRunRates, isEzRate, pullMarketRatesshipmentData.shipType (Shipper | Consignee | ThirdParty), shipmentData.payType (Collect | Prepaid)shipperLocation / consigneeLocation > address (city, stateOrProvince, zipCode, country required)shipmentServices[] (serviceMode, packageType, equipmentType)handlingUnits[] > products[] (packageType, quantity, class, weight; optional nmfc, description, hazmatDetails)shipperAccessorials / consigneeAccessorials / loadAccessorials (abbreviation or description)
Key outputsloadIdstatus, ratingCompletedquotes[] (quoteId, carrierName, scac, transitTime, quoteNumber, price breakdown)

Transit time

There is no separate transit-time endpoint in the documentation reviewed. Each quote carries a transit time in days, and a dispatched booking returns an estimated delivery date.

POST/api/v3/shipmentsRead transitTime on each returned quote.
Key outputsquotes[].transitTimedispatchResponse.estimatedDeliveryDate

Booking, dispatch & pickup

Book a quoted shipment by passing the chosen quoteId. Optional flags move the load straight to Dispatched and send a pickup request to the carrier, set a PRO number, or email a BOL copy.

POST/api/v3/shipments/{Id}/BookAward a quote on an existing shipment (Id = loadId) and optionally dispatch it.
Key inputsquoteId (required)dispatch, submitPickupRequest, dispatchOverrideproNumber (overwrites any existing value)acceptInsurance, acceptCarbonServiceemailBol, bolEmailAddress
Key outputsstatus (Booked | Dispatched)manifestId (PRO), bolNumber, pickupNumber, trackingNumbers[]awardedQuotePricing (raw, carrier, customer)dispatchResponse (success, pickupNumber, proNumber, estimatedDeliveryDate, bolLink, warnings, errors)

Shipment tracking

Fetch tracking events for one or more shipments by loadId. You can ask for the full history or only the most recent status. Each event carries both the carrier's raw message and a Banyan-normalized message.

GET/api/v3/trackingReturn tracking statuses for the loadIds passed in Ids.
Key inputsIds (repeat the parameter for each loadId)LatestStatusOnly
Key outputsshipmentId, bol, proNumbertrackingStatuses[] (dateTime, timeZoneInfo, type EDI | Web, code, carrierMessage, banyanMessage, city, state, zipCode, latitude, longitude, dateTimeType)

Documents & images (BOL, POD, labels)

Request one or more document types for a shipment. PDFs and images come back base64-encoded; shipping labels can also be returned as ZPL or EPL for thermal printers. Each document type succeeds or fails independently.

POST/api/v3/shipments/{Id}/GetDocumentsReturn the requested documents for a shipment (Id = loadId).
Key inputsdocumentTypes[] (Banyan_BOL, Carrier_BOL, Carrier_POD, Shipping_Label, Carrier_Label, AP, AR, Carrier_Weight, InsuranceCertificate)shippingLabelFormat (ZPL | EPL | PDF), labelHasDockTabsconvertPdfToImage, imageFormat (JPG | PNG)
Key outputsdocumentType, base64Documents[], zplDocuments[], success, error.message

Freight invoices

Page through carrier invoices with filters for PRO, BOL, loadId, client reference, status and four date ranges. Each invoice includes line items, payments and the variance between the invoiced amount and the original quote, which is useful for freight audit.

GET/api/v3/InvoicesList invoices matching the filters, with full detail per invoice.
Key inputsProNumber, BolNumber, LoadId, ClientReferenceNumber, InvoiceStatus, ExcludeExportedCreatedStartDate/EndDate, PickupStartDate/EndDate, DeliveredStartDate/EndDate, BillingStartDate/EndDatePageNumber, PageSize (default 10, max 50), OrderBy
Key outputsapId, carrierScac, invoiceStatusCode, netAmountDue, totalCharges, hasExceptionshipmentDetails (proNumber, bolNumber, loadId), quoteDetails.variancelineItems[] (carrierChargeCode, normalizedChargeCode, charge), payments[], bolAvailable, podAvailable

Accessorial codes (static data)

Download the list of accessorial services Banyan accepts, split into Shipper, Consignee and Load types. Use it to map your own service flags to Banyan abbreviations.

GET/api/StaticData/AccessorialsReturn every accessorial with its description, type and abbreviation.
Key outputsdescriptiontype (Shipper | Consignee | Load)abbreviation (e.g. SLFTG, CLFTG, CRDEL, CAPPT, LGUAR)

Example request

Create a shipment and get LTL quotesbash
curl -X POST "https://YOUR_BANYAN_API_HOST/api/v3/shipments" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "importAsStatus": "Quoted", "waitForRates": true, "shouldRunRates": true, "shipmentData": { "shipType": "Shipper", "payType": "Prepaid", "shipperLocation": { "address": { "city": "Chicago", "stateOrProvince": "IL", "zipCode": "60601", "country": "US" } }, "consigneeLocation": { "address": { "city": "Los Angeles", "stateOrProvince": "CA", "zipCode": "90001", "country": "US" } }, "shipmentServices": [ { "serviceMode": "LTL", "packageType": "PLTS", "equipmentType": "ALL" } ], "handlingUnits": [{ "packageType": "PLTS", "quantity": 1, "length": 48, "width": 40, "height": 48, "unitOfMeasurement": "IN", "products": [{ "packageType": "PLTS", "quantity": 1, "class": 70, "weight": 500, "weightUnitOfMeasurement": "LBS", "description": "General freight" }] }], "consigneeAccessorials": [{ "abbreviation": "CLFTG" }] } }'

Replace YOUR_BANYAN_API_HOST with the integration or production host Banyan gives you. Keep the returned loadId and the quoteId you pick; both are needed to book.

Integration notes

  • loadId is the key for everything after quoting: booking, documents, tracking and invoice lookups all take it. Store it as soon as the create call returns.
  • waitForRates defaults to true, so the create call blocks until rating finishes. If you set it to false, check ratingCompleted and poll for quotes later.
  • If a handling unit has length, width and height, unitOfMeasurement (IN, FT or CM) becomes required. Weight units are LBS or KG, and freight class must be one of the standard values from 50 to 500.
  • Accessorials go into three separate arrays (shipperAccessorials, consigneeAccessorials, loadAccessorials). Liftgate at pickup is SLFTG, liftgate at delivery is CLFTG; putting a code in the wrong array is a common mistake.
  • The accessorial list endpoint is limited to 3 requests per minute and returns 429 beyond that. Pull it once and cache it.
  • On booking, submitPickupRequest sends a real pickup request to the carrier. With dispatchOverride left false, a failed pickup request keeps the load out of Dispatched status, so check dispatchResponse.success and errors.
  • For tracking, repeat the query parameter per shipment (Ids=123&Ids=456) instead of sending a comma list. dateTimeType tells you whether a timestamp came from the carrier or is the time Banyan received the event.
  • Errors use the RFC 7231 problem-details shape (type, title, status, traceId, detail, errors). Log traceId when raising a support ticket. Carrier_POD only becomes available after delivery and otherwise returns success false for that document type.

FAQ

Does Banyan Technology have an API?

Yes. Banyan offers a V3 REST/JSON API for multi-carrier quoting, booking and dispatch, tracking, documents and invoices. Credentials are issued to Banyan customers by their account manager.

How does Banyan API authentication work?

It uses OAuth 2.0 client credentials. You POST your client_id and client_secret to /auth/connect/token and get a JWT that lasts about one hour, then send it as Authorization: Bearer on each request.

How do I get LTL rate quotes from multiple carriers with Banyan?

Call POST /api/v3/shipments with importAsStatus set to Quoted and shouldRunRates true. The response returns a loadId and a quotes array with one entry per carrier option.

Can I get a BOL or proof of delivery from the Banyan API?

Yes. POST /api/v3/shipments/{loadId}/GetDocuments with documentTypes such as Banyan_BOL, Carrier_BOL or Carrier_POD. Documents come back base64-encoded, and labels can be returned as ZPL.

Does the Banyan API return freight invoices?

Yes. GET /api/v3/Invoices lists invoices with line items, payments and the variance against the original quote, filtered by PRO, BOL, loadId or date ranges, up to 50 per page.

On FreightAPIs

Official resources

Written from Banyan Technology’s published API documentation and last checked 2026-10-09. FreightAPIs is not affiliated with Banyan Technology; endpoints and access rules can change, so confirm details in the carrier’s own documentation before going live.

Other carrier API guides