openapi: 3.1.0 info: title: ArcBest Expedite Third Party TMS API version: v1 summary: Quote, book, document and reference ArcBest Expedite loads from a third-party TMS. description: >- The ArcBest Expedite 3rd Party TMS API is the integration surface ArcBest publishes for transportation management systems and freight-visibility platforms (the published examples use project44 as the calling Source). Flow published by ArcBest: Step 1 POST /quote to receive a rate quote - the response includes the quote id, total charge, itemized charges, pickup datetime, advertised transit days and delivery date; the returned notes must be shown to the customer and the returned pickup date should seed the confirmation step. Step 2 PUT /booking to book once the customer finalises pickup and delivery windows and contact details. Step 3 quotes are queued and booked by operators within minutes - poll GET /booking/status and consume ArcBestOrderNo and ExpediteOrderNo (which serves as the BOL number). Step 4 generate the BOL with GET /order/bol/{expediteOrderNo}. Step 5 update references if necessary with /order/refs. Step 6 the track-and-trace object is POSTed by ArcBest to an endpoint the integrator must specify and register with ArcBest (see asyncapi/arcbest-track-and-trace-webhooks.yml). PROVENANCE: this document was DERIVED by API Evangelist from ArcBest's own publicly downloadable API definition bundle - the Swagger-Codegen static HTML reference "Arcbest Expedite 3rd Party TMS API" and the PDF "TMS Expedite Quote and Book Instructions and JSON (Version August 2024)", both shipped inside https://arcb.com/sites/default/files/API/ArcBest-Expedite-Digital-API-August-2024.zip (verbatim copies in this repo under docs/). Paths, HTTP methods, operationIds, tags, parameter names and types, response codes and descriptions are transcribed verbatim from that bundle. The live swagger.json is auth-gated (HTTP 401 with `WWW-Authenticate: Basic realm="service"` at https://api.arcb.com/expedite/digital/swagger/v1/swagger.json, probed 2026-09-04). Nothing here is invented. contact: name: ArcBest API Support email: api@arcb.com url: https://arcb.com/technology/shippers/API termsOfService: https://arcb.com/terms-of-use x-generated-from: provider-published Swagger-Codegen HTML reference + provider PDF instructions x-method: derived x-source: - https://arcb.com/technology/shippers/API/expedite-setup-documentation-download - https://arcb.com/sites/default/files/API/ArcBest-Expedite-Digital-API-August-2024.zip - docs/arcbest-expedite-tms-api-definition.html - docs/arcbest-expedite-tms-quote-book-instructions-2024-08.pdf x-derived-on: '2026-09-04' servers: - url: https://api.arcb.com/expedite/digital description: >- Production. Probed 2026-09-04 - returns HTTP 401 with a `WWW-Authenticate` header of `Basic realm="service"`, confirming the gateway is live and HTTP Basic authenticated. - url: https://test.api.arcb.com/expedite/digital description: Test / sandbox. "API top level URI is https://test.api.arcb.com/Expedite/Digital/" - ArcBest TMS instructions PDF, August 2024. Every curl sample in the provider's own HTML reference targets this host. tags: - name: Quote description: Rate quote requests for expedite loads. - name: Booking description: Booking requests placed against a quote, and their asynchronous status. - name: Order description: Bill of Lading retrieval and reference-number updates on a booked order. security: - basicAuth: [] paths: /quote: post: operationId: quoteCreate summary: Create a rate quote description: >- Send a rate quote request to retrieve initial pricing and timing availability. Errors may include dimensions or weight beyond limits, incompatible scheduling, or rejected accessorials (temperature control, lift gate, hazmat). The response includes the earliest available pickup - show this to the customer in case they initially selected a time that is too early. tags: [Quote] requestBody: required: true description: Quote request (Source, UserName, ArcBestCustomerId, Payer, Shipper, Consignee, PickupDate, Commodities[], Accessorials[]). content: application/json: schema: type: object responses: '200': description: OK. Carries ExpediteQuoteId, Charge, AdvertisedTransitDays, AdvertisedDueDate, PickupDate, ItemizedCharges, Notes and an Errors array which is empty on success and populated with {Code, Message} objects on a rejected quote. /booking: put: operationId: bookingCreate summary: Book a quoted expedite load description: >- After showing the customer the quote response information (quote id, pricing, schedule dates, notes), if they wish to book, send the booking request from your client. tags: [Booking] requestBody: required: true description: Booking request. content: application/json: schema: type: object responses: '200': description: OK /booking/status: get: operationId: bookingGetStatus summary: Get booking status for one or more quotes description: >- Quotes are queued and booked by ArcBest operators within minutes. Poll this operation to update your UI. The response is keyed by quote id and carries Status, StatusString (for example BOOKINGINPROGRESS, SHIPMENTBOOKED), ExpediteOrderNo and ArcBestOrderNo. tags: [Booking] parameters: - name: quoteids in: query required: true description: One or more quote ids. Repeat the parameter per quote id. schema: type: array items: type: string responses: '200': description: OK /order/bol/{expediteOrderNo}: get: operationId: orderBol summary: Retrieve the Bill of Lading for a booked order description: Use the expedite order BOL number from the booking status step after the shipment is booked. tags: [Order] parameters: - name: expediteOrderNo in: path required: true description: The expedite order number returned by /booking/status, which serves as the BOL number. schema: type: string responses: '200': description: OK /order/refs/{arcbOrderNo}: post: operationId: orderUpdateRefs summary: Update purchase order and customer reference numbers on a booked order description: >- Call the order reference endpoint to update purchase order (PO) numbers or customer references (CUSTREFs) on the BOL. The body is an array of {type, value} objects where type is "PO" or "CUSTREF". tags: [Order] parameters: - name: arcbOrderNo in: path required: true description: The ArcBest order (pro) number. schema: type: string requestBody: required: true content: application/json: schema: type: array items: type: object properties: type: type: string description: Reference type. Published values are PO and CUSTREF. value: type: string responses: '200': description: OK components: securitySchemes: basicAuth: type: http scheme: basic description: >- HTTP Basic. "Request basic authentication username and password from the ArcBest Expedite team" - ArcBest TMS instructions PDF. Confirmed live 2026-09-04, the gateway answers a `WWW-Authenticate` header of `Basic realm="service"`.