{"openapi":"3.1.0","info":{"title":"Axle Quoting API","version":"1.3","summary":"Instant freight quotes from FastQuotes","description":"The Axle Quoting API returns a customer rate together with customer-safe lane context,\nquote terms, and disclosed assumptions. Some requests are held for human review before\nthe number is final. Booking and tendering remain human-gated.\n\nA hosted MCP endpoint is available at https://www.fastquotes.io/mcp/v1 with the tools\nget_freight_quote, get_quote_status, request_booking, and describe_capabilities. MCP initialize, tools/list,\nand describe_capabilities work without a key. Authenticated MCP tools accept an Axle API\nkey through Authorization: Bearer or X-Axle-Api-Key. For access, contact john@fastquotes.io.\n\nThis specification is also available as JSON at\nhttps://www.fastquotes.io/api/external/v1/openapi.json.\n","contact":{"name":"FastQuotes","email":"john@fastquotes.io","url":"https://www.fastquotes.io"},"license":{"name":"Proprietary","url":"https://www.fastquotes.io/terms"}},"servers":[{"url":"https://www.fastquotes.io/api/external/v1","description":"Production"}],"security":[{"AxleApiKey":[]}],"paths":{"/quote":{"post":{"operationId":"createFreightQuote","summary":"Create a freight quote","description":"Submit the lane, equipment, either aggregate dimensions or itemized cargo, and requested services. Origin and\ndestination accept ZIP codes or city-and-state text. The request is strict: unknown\nfields and missing required fields return 400.\n\nFor partner keys, customerRef may select an authorized customer when it resolves\nunambiguously inside the calling organization and is allowed for that key. For a key\nbound to one customer, customerRef is optional; when supplied, it must identify that\nsame customer. A disallowed, ambiguous, missing, or cross-organization reference\nreturns the same customer_reference_not_permitted response.\n\nA standard response contains the rate, customer-safe context signals, quote terms,\nand assumptions. Every terms entry with binding: true is a condition of the quoted\nrate and must be presented wherever the number is presented. A pending_review status\nmeans the displayed number is being confirmed by our team. Loads requiring specialist\nhandling return the manual-review response instead of an automatic rate. Routine permit\nquotes include routed state abbreviations without exposing per-state permit costs.\n","security":[{"AxleApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRequest"},"examples":{"standardFlatbed":{"summary":"Standard flatbed request","value":{"originZip":"Phoenix, AZ","destinationZip":"75201","equipmentType":"standard-flatbed","loadDimensions":{"lengthFt":20,"lengthIn":0,"lengthUnit":"ft","widthFt":8,"widthIn":0,"widthUnit":"ft","cargoHeightFt":8,"cargoHeightIn":0,"heightUnit":"ft","weightLbs":18000,"weightUnit":"lbs","commodityCategory":"general_freight"},"surcharges":{"tarping":false,"liftGate":false}}},"itemizedCargo":{"summary":"Itemized cargo request","value":{"originZip":"Bradley, IL","destinationZip":"Cottontown, TN","equipmentType":"standard-flatbed","items":[{"description":"Machine","quantity":1,"lengthIn":138,"widthIn":80,"heightIn":90,"weightLbs":12000,"weightBasis":"per_piece"}],"surcharges":{"tarping":false,"liftGate":false}}}}}}},"responses":{"200":{"description":"Final quote, pending-review quote, a choice of full and partial options, manual-review response, or a request to clarify item weights","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/QuoteResponse"},{"$ref":"#/components/schemas/ManualReviewResponse"},{"$ref":"#/components/schemas/NeedsMoreInfoResponse"}]}}}},"400":{"description":"Invalid strict request, including unknown or missing fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"401":{"description":"Missing, invalid, or inactive API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Scope is not allowed or customerRef is not permitted","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ScopeError"},{"$ref":"#/components/schemas/CustomerReferenceError"}]}}}},"429":{"description":"Per-key request limit reached. Daily caps also apply.","headers":{"Retry-After":{"description":"Seconds until the caller may retry","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}}},"/quote/{quoteReference}":{"get":{"operationId":"getFreightQuoteStatus","summary":"Retrieve a saved customer quote","description":"Returns the current state of a saved quote visible to the calling key's organization.\npending_review means the quote is still being confirmed by our team; final means the\ncustomer number is released. Quotes outside the caller's organization are not returned.\n","security":[{"AxleApiKey":[]}],"parameters":[{"name":"quoteReference","in":"path","required":true,"description":"Saved FastQuotes quote reference","schema":{"type":"string","minLength":1,"maxLength":160}}],"responses":{"200":{"description":"Current pending or final quote state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteStatusResponse"}}}},"401":{"description":"Missing, invalid, or inactive API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"The key does not include quote access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeError"}}}},"404":{"description":"Quote not found for the calling organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteNotFoundError"}}}},"429":{"description":"Per-key request limit reached. Daily caps also apply.","headers":{"Retry-After":{"description":"Seconds until the caller may retry","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}}},"/quote/{quoteReference}/book-request":{"post":{"operationId":"requestFreightBooking","summary":"Request human confirmation of a saved quote","description":"Sends a saved quote to the FastQuotes freight team for review and confirmation.\nThis endpoint does not automatically book, dispatch, or tender freight. The returned\npending_review status remains in effect until a specialist confirms the shipment.\n","security":[{"AxleApiKey":[]}],"parameters":[{"name":"quoteReference","in":"path","required":true,"description":"Saved FastQuotes quote reference","schema":{"type":"string","minLength":1,"maxLength":160}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookRequest"}}}},"responses":{"202":{"description":"Booking request accepted for human review","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookRequestResponse"}}}},"400":{"description":"Invalid strict request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"401":{"description":"Missing, invalid, or inactive API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"The key does not include quote access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeError"}}}},"404":{"description":"Quote not found for the calling key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteNotFoundError"}}}},"429":{"description":"Per-key request limit reached. Daily caps also apply.","headers":{"Retry-After":{"description":"Seconds until the caller may retry","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}}}},"components":{"securitySchemes":{"AxleApiKey":{"type":"apiKey","in":"header","name":"X-Axle-Api-Key","description":"Primary and only REST authentication header. Keys are issued by FastQuotes."}},"schemas":{"BookRequest":{"type":"object","additionalProperties":false,"properties":{"changesSinceQuote":{"type":"string","minLength":1,"maxLength":2000,"description":"Shipment facts that changed after the saved quote was created."},"loadRequirements":{"type":"string","minLength":1,"maxLength":2000,"description":"Securement or accessory needs such as straps, e-track, load bars, edge protectors, chains, coil racks, or dunnage."}}},"BookRequestResponse":{"type":"object","additionalProperties":false,"required":["status","quoteReference","bookingRequestId","message","contacts"],"properties":{"status":{"type":"string","const":"pending_review"},"quoteReference":{"type":"string"},"bookingRequestId":{"type":"string"},"message":{"type":"string"},"contacts":{"$ref":"#/components/schemas/QuoteContacts"}}},"QuoteRequest":{"type":"object","additionalProperties":false,"required":["originZip","destinationZip","equipmentType","surcharges"],"oneOf":[{"required":["loadDimensions"],"not":{"required":["items"]}},{"required":["items"],"not":{"required":["loadDimensions"]}}],"properties":{"customerRef":{"type":"string","minLength":1,"maxLength":160,"description":"Authorized customer id or company name. Bound keys may omit it."},"originZip":{"type":"string","minLength":2,"description":"Origin ZIP code or City, ST (for example Dallas, TX). City and state are accepted directly; never invent a stand-in ZIP."},"destinationZip":{"type":"string","minLength":2,"description":"Destination ZIP code or City, ST (for example Oklahoma City, OK). City and state are accepted directly; never invent a stand-in ZIP."},"stops":{"type":"array","maxItems":5,"items":{"type":"object","additionalProperties":false,"required":["zip"],"properties":{"zip":{"type":"string","minLength":2,"maxLength":40,"description":"Intermediate ZIP code or city-and-state text."}}}},"equipmentType":{"type":"string","minLength":1,"description":"Exact FastQuotes equipment id. Use one of the enumerated hyphenated values. If the requester did not explicitly specify the trailer/equipment type, ask them before quoting — do not infer equipment from the commodity. Any equipment type here is quotable; the choice belongs to the shipper.","enum":["dry-van-53","box-truck-26","sprinter-van","curtain-side-box","standard-flatbed","conestoga-flatbed","step-deck","conestoga-step-deck","hot-shot-40","flatbed-53","step-deck-low-profile","rgn","lowboy","double-drop","multi-axle-lowboy","stretch-rgn","rgn-heavy","stretch-trailer","stretch-lowboy","stretch-double-drop","step-deck-extendable","flatbed-extendable"]},"loadDimensions":{"$ref":"#/components/schemas/LoadDimensions"},"items":{"type":"array","minItems":1,"maxItems":250,"description":"Itemized cargo rows. Provide this or loadDimensions, but not both. For quantity greater than one, weightBasis is required so weight is never multiplied silently.","items":{"$ref":"#/components/schemas/ItemizedCargoItem"}},"surcharges":{"$ref":"#/components/schemas/Surcharges"},"isPTL":{"type":"boolean","description":"Set true only when the shipper says they want a shared/partial truck, or false only when they say they need the whole truck. If the shipper has not said, omit this field; when the load is partial-eligible the response includes both choices. Small cargo size alone does not mean the shipper wants partial."},"airRideRequired":{"type":"boolean","description":"Hotshot only. Set true if the freight needs air-ride suspension; FastQuotes confirms air-ride availability before booking. All 53-foot/class-8 trailer equipment is air-ride as standard, so this is not needed for it."},"linearFeet":{"type":"number","minimum":1,"maximum":100},"cargoWeight":{"type":"number","minimum":1,"maximum":48000},"highValueInsurance":{"type":"boolean"},"declaredValue":{"type":"number","minimum":1,"maximum":1000000},"pickupDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Pickup date in YYYY-MM-DD format."},"isExpedited":{"type":"boolean"},"weekendDelivery":{"type":"boolean"},"appointmentRequired":{"type":"boolean"},"appointmentTier":{"type":"string","enum":["basic","rigging","trade_show"]}}},"LoadDimensions":{"type":"object","additionalProperties":false,"properties":{"lengthFt":{"type":"number","minimum":0,"maximum":200,"default":0},"lengthIn":{"type":"number","minimum":0,"maximum":11,"default":0},"lengthUnit":{"type":"string","enum":["ft","in"],"default":"ft"},"widthFt":{"type":"number","minimum":0,"maximum":50,"default":0},"widthIn":{"type":"number","minimum":0,"maximum":11,"default":0},"widthUnit":{"type":"string","enum":["ft","in"],"default":"ft"},"cargoHeightFt":{"type":"number","minimum":0,"maximum":30,"default":0,"description":"Cargo height in feet, not loaded height including trailer deck. Always send the supplied cargo height here; a 4 ft cargo uses cargoHeightFt: 4."},"cargoHeightIn":{"type":"number","minimum":0,"maximum":11,"default":0,"description":"Additional cargo height inches. Send alongside cargoHeightFt; do not omit cargo height."},"heightUnit":{"type":"string","enum":["ft","in"],"default":"ft"},"weightLbs":{"type":"number","minimum":0,"maximum":500000,"default":0},"weightUnit":{"type":"string","enum":["lbs","kg"],"default":"lbs"},"commodityCategory":{"type":"string","enum":["machinery_vehicles","steel_metal","building_materials","equipment_parts","general_freight"]},"removableAttachments":{"type":"boolean"},"equipmentDriveable":{"type":"string","enum":["yes","no","unknown"]},"loadingMethod":{"type":"string","enum":["drive_on","lift_on","winch_on"]},"overhangAllowed":{"type":"string","enum":["yes","no","unknown"]},"isSelfSupporting":{"type":"string","enum":["yes","no","unknown"]},"commodity":{"type":"string"}}},"ItemizedCargoItem":{"type":"object","additionalProperties":false,"required":["description","quantity","lengthIn","widthIn","heightIn","weightLbs"],"properties":{"description":{"type":"string","minLength":1,"maxLength":240},"quantity":{"type":"integer","minimum":1,"maximum":999,"default":1},"lengthIn":{"type":"number","exclusiveMinimum":0,"maximum":2400},"widthIn":{"type":"number","exclusiveMinimum":0,"maximum":600},"heightIn":{"type":"number","exclusiveMinimum":0,"maximum":360},"weightLbs":{"type":"number","exclusiveMinimum":0,"maximum":500000,"description":"Weight interpreted according to weightBasis. For quantity greater than one, state the basis explicitly."},"weightBasis":{"type":"string","enum":["per_piece","row_total"]},"stackable":{"type":"boolean","default":false},"sideBySideOk":{"type":"boolean","default":false},"isSelfSupporting":{"type":"boolean"}}},"Surcharges":{"type":"object","additionalProperties":false,"required":["tarping","liftGate"],"properties":{"tarping":{"type":"boolean","description":"Available only for open-deck equipment. Use false for enclosed van and box equipment."},"tarpDropHeight":{"type":"string","enum":["4","6","8","10","12_plus"]},"liftGate":{"type":"boolean","description":"Available only for box-truck-26 straight-truck service. Use false for open-deck and other equipment."},"rampsRequired":{"type":"boolean"}}},"QuoteResponse":{"type":"object","required":["totalRate","mode","modeLabel","distance","equipmentLabel","quoteReference","status","needsReview","reviewReasonCodes","context","keyTerms","terms","assumptions","contacts"],"properties":{"mode":{"type":"string","enum":["dedicated_full","shared_partial"],"description":"Machine-readable service mode for this priced option."},"modeLabel":{"type":"string","enum":["Dedicated / Full Truckload","Shared / Partial Truckload"],"description":"Human-readable service mode for this priced option."},"totalRate":{"type":"number","description":"Customer rate in USD. When status is pending_review, our team is confirming this number."},"distance":{"type":"number","description":"Route distance in miles."},"transitEstimate":{"$ref":"#/components/schemas/TransitEstimate"},"equipmentLabel":{"type":"string"},"quoteReference":{"type":"string"},"stops":{"type":"integer","minimum":1},"routeLegs":{"type":"array","items":{"$ref":"#/components/schemas/RouteLeg"}},"loadPlan":{"$ref":"#/components/schemas/ItemizedLoadPlan"},"status":{"type":"string","enum":["final","pending_review"]},"needsReview":{"type":"boolean"},"reviewReasonCodes":{"type":"array","items":{"type":"string"}},"message":{"type":"string","description":"Present when the quote is being confirmed by our team."},"context":{"$ref":"#/components/schemas/QuoteContext"},"keyTerms":{"type":"array","description":"Max 3 key binding terms (validity, booking confirmation, and most load-specific term) selected for human-facing assistant responses.","items":{"type":"string"},"maxItems":3},"fullTermsUrl":{"type":"string","format":"uri","description":"Public, unguessable URL for the quote's full terms page. Only present when the quote is saved."},"terms":{"type":"array","description":"Quote conditions, including the same operational fine print shown on the customer PDF. Every binding=true entry must be presented with the rate.","items":{"$ref":"#/components/schemas/QuoteTerm"}},"assumptions":{"type":"array","description":"Inputs FastQuotes defaulted or interpreted for this quote.","items":{"$ref":"#/components/schemas/QuoteAssumption"}},"contacts":{"$ref":"#/components/schemas/QuoteContacts"},"permits":{"$ref":"#/components/schemas/PermitSummary"},"flexiblePartialReviewAvailable":{"type":"boolean"},"modeSelection":{"type":"string","enum":["choose_one"],"description":"Present when FastQuotes priced both service modes and the requester should choose one."},"modeSelectionMessage":{"type":"string"},"quoteOptions":{"type":"array","minItems":2,"maxItems":2,"description":"Independently priced and saved dedicated/full and shared/partial choices. Each option has its own quoteReference.","items":{"$ref":"#/components/schemas/QuoteResponse"}},"flexiblePartialReviewExplanation":{"type":"string"},"contact":{"type":"string"},"savedQuote":{"type":"object","additionalProperties":false,"required":["quoteNumber","status"],"properties":{"quoteNumber":{"type":"string"},"status":{"type":"string","enum":["final","pending_review"]}}}}},"ItemizedLoadPlan":{"type":"object","required":["billableLinearFeet","totalWeightLbs","placements","axleEstimate","compliance"],"properties":{"billableLinearFeet":{"type":"number","minimum":0},"totalWeightLbs":{"type":"number","minimum":0},"placements":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["itemId","startIn","leftOffsetIn","lengthIn","widthIn","relation"],"properties":{"itemId":{"type":"string"},"startIn":{"type":"number"},"leftOffsetIn":{"type":"number"},"lengthIn":{"type":"number"},"widthIn":{"type":"number"},"relation":{"type":"string","enum":["alone","beside","stacked"]}}}},"nestingSuggestion":{"type":"object","description":"Suggestion only. It is never applied silently to the quoted footprint.","additionalProperties":true},"axleEstimate":{"type":"object","additionalProperties":true},"weightHeadroomLbs":{"type":["number","null"]},"compliance":{"type":"object","additionalProperties":true}}},"ManualReviewResponse":{"type":"object","additionalProperties":false,"required":["manualQuoteRequired","reason","contact","contacts","quoteReference"],"properties":{"manualQuoteRequired":{"type":"boolean","const":true},"reason":{"type":"string"},"contact":{"type":"string"},"contacts":{"$ref":"#/components/schemas/QuoteContacts"},"quoteReference":{"type":"string"},"loadPlan":{"$ref":"#/components/schemas/ItemizedLoadPlan"}}},"NeedsMoreInfoResponse":{"type":"object","additionalProperties":false,"required":["status","needsMoreInfo","message","rows","requestedField","allowedValues"],"properties":{"status":{"type":"string","const":"needs_more_info"},"needsMoreInfo":{"type":"boolean","const":true},"message":{"type":"string"},"rows":{"type":"array","items":{"type":"string"}},"requestedField":{"type":"string","const":"items[].weightBasis"},"allowedValues":{"type":"array","items":{"type":"string","enum":["per_piece","row_total"]}}}},"QuoteStatusResponse":{"type":"object","additionalProperties":false,"required":["quoteReference","status","needsReview","customerPriceUsd","equipmentType","lane","contacts"],"properties":{"quoteReference":{"type":"string"},"status":{"type":"string","enum":["final","pending_review"]},"needsReview":{"type":"boolean"},"customerPriceUsd":{"type":"number"},"equipmentType":{"type":"string"},"lane":{"type":"object","additionalProperties":false,"required":["origin","destination","miles"],"properties":{"origin":{"type":"string"},"destination":{"type":"string"},"miles":{"type":"number"}}},"contacts":{"$ref":"#/components/schemas/QuoteContacts"},"message":{"type":"string","description":"Present while status is pending_review."}}},"QuoteContacts":{"type":"object","additionalProperties":false,"required":["bookingEmail","bookingPhone","softwareQuestionsEmail"],"properties":{"bookingEmail":{"type":"string","const":"truckitusa1@tallgrassfreight.com"},"bookingPhone":{"type":"string","const":"913-721-0079 x681"},"softwareQuestionsEmail":{"type":"string","const":"john@fastquotes.io"}}},"PermitSummary":{"type":"object","additionalProperties":false,"required":["type","states"],"properties":{"type":{"type":"string","const":"routine_oversize"},"states":{"type":"array","description":"Routed states requiring routine permits. Per-state costs are not exposed.","items":{"type":"string","pattern":"^[A-Z]{2}$"}}}},"TransitEstimate":{"type":"object","required":["estimatedTransitDays","estimatedDeliveryDate","confidence"],"properties":{"estimatedTransitDays":{"type":"number"},"estimatedDeliveryDate":{"type":"string"},"confidence":{"type":"string"}}},"RouteLeg":{"type":"object","additionalProperties":false,"required":["from","to","distance"],"properties":{"from":{"type":"string"},"to":{"type":"string"},"distance":{"type":"number"}}},"QuoteContext":{"type":"object","required":["summary","signals"],"properties":{"summary":{"type":"string"},"signals":{"type":"array","items":{"$ref":"#/components/schemas/ContextSignal"}}}},"ContextSignal":{"type":"object","required":["class","severity","text","source"],"properties":{"class":{"type":"string"},"severity":{"type":"string"},"text":{"type":"string"},"source":{"type":"string"},"observationDate":{"type":["string","null"]}}},"QuoteTerm":{"type":"object","additionalProperties":false,"required":["code","title","text","binding"],"properties":{"code":{"type":"string"},"title":{"type":"string"},"text":{"type":"string"},"binding":{"type":"boolean"}}},"QuoteAssumption":{"type":"object","additionalProperties":false,"required":["code","text","binding"],"properties":{"code":{"type":"string"},"text":{"type":"string"},"binding":{"type":"boolean"}}},"UnauthorizedError":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","const":"Unauthorized"}}},"InvalidRequestError":{"type":"object","additionalProperties":false,"required":["error","issues"],"properties":{"error":{"type":"string","const":"Invalid request"},"issues":{"type":"array","maxItems":10,"description":"Bounded, customer-safe field guidance for correcting the request.","items":{"$ref":"#/components/schemas/ValidationIssue"}}}},"ValidationIssue":{"type":"object","additionalProperties":false,"required":["path","message"],"properties":{"path":{"type":"string"},"message":{"type":"string"}}},"CustomerReferenceError":{"type":"object","additionalProperties":false,"required":["error","code"],"properties":{"error":{"type":"string","const":"Customer reference not permitted"},"code":{"type":"string","const":"customer_reference_not_permitted"}}},"ScopeError":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","const":"Scope not allowed"}}},"RateLimitError":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","const":"Rate limit exceeded"}}},"QuoteNotFoundError":{"type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"string","const":"Quote not found"}}}}}}