TruckTabs API · v1

Reference

Everything around a quote: finding the right place, a state's legal limits and permitting offices, the codes a quote accepts, and what each error means.

Your key

GEThttps://trucktabs.com/api/v1/me

Your account, this key's name, prefix, scopes and expiry, and your limits. Any key can call it. The response is shown on the overview.

Places

GEThttps://trucktabs.com/api/v1/places?q=Portland&state=OR

Up to five US places matching q (2 to 120 characters), optionally within one state. Send the one you mean in a quote as lat, lng and state, and it is used exactly. Limited to 60 lookups a minute per key.

200 OK
{
  "places": [
    { "label": "Portland, Oregon", "city": "Portland", "state": "OR", "postal_code": null, "lat": 45.5152, "lng": -122.6784 }
  ]
}

States

GEThttps://trucktabs.com/api/v1/jurisdictions

The states we permit, and whether we have their legal limits on file.

200 OK
{
  "jurisdictions": [
    { "code": "AL", "name": "Alabama", "limits_on_file": true },
    { "code": "AK", "name": "Alaska", "limits_on_file": false },
    …
  ]
}

A state's legal limits

GEThttps://trucktabs.com/api/v1/jurisdictions/{code}/limits

A state's legal size and weight limits and its permitting offices. A load over any of these limits needs an oversize/overweight permit in that state. Dimensions are in inches and weights in pounds. limits is null when we have nothing on file, which is not the same as no limit. An unknown code is 404 NOT_FOUND.

200 OK · illustrative values
{
  "state": "OH",
  "state_name": "Ohio",
  "limits": {
    "width_in": 102,
    "height_in": 162,
    "length_single_in": 480,
    "length_semi_in": 636,
    "length_overall_in": null,
    "overhang_front_in": 36,
    "overhang_rear_in": 48,
    "gross_weight_lbs": 80000,
    "axle_single_lbs": 20000,
    "axle_tandem_lbs": 34000,
    "axle_tridem_lbs": 48000,
    "axle_single_non_divisible_lbs": 20000,
    "axle_tandem_non_divisible_lbs": 34000,
    "axle_tridem_non_divisible_lbs": 48000
  },
  "source_url": "https://…",
  "verified_at": "2026-09-06",
  "offices": [
    {
      "label": "Special Hauling Permits",
      "permit_type": "osow",
      "phone": "…",
      "email": null,
      "website_url": "https://…",
      "portal_url": "https://…",
      "weekday_hours": "07:30–17:00",
      "saturday_hours": null
    }
  ],
  "note": "Dimensions are in inches and weights in pounds. A load exceeding any limit needs an oversize/overweight permit in that state."
}

Vehicle types

Send the code. The name and the aliases are accepted too, in any case and with any punctuation. An unknown word is refused, never guessed. tractor_trailer and truck_trailer are semis, which need a trailer type, trailer length and axles per unit. Every other type needs total axles and an overall length.

CodeNameAlso accepted
all_terrain_vehicleAll Terrain Vehicle
bus_charterBus, Charter
bus_non_charterBus, Non-Charter
dump_truckDump Truck
mining_truckMining Truck
motor_homeMotor Home
special_mobile_equipmentSpecial Mobile Equipment
straight_truckStraight Truckbox truck
tractorTractorbobtail
tractor_trailerTractor/Trailersemi, tractor trailer, semi truck
truck_trailerTruck/Trailertruck and trailer
utility_terrain_vehicleUtility Terrain Vehicle
wreckerWrecker

Trailer types

CodeNameAlso accepted
auto_carrierAuto Carrier
conestogaConestoga
double_dropDouble Dropdouble drop deck
drop_deck_landollDrop Deck, Landoll
dump_trailerDump Trailer
flatbedFlatbed
flatbed_b_trainFlatbed, B-Train
flatbed_conestogaFlatbed, Conestoga
flatbed_doubleFlatbed, Double
flatbed_gooseneckFlatbed, Gooseneckgooseneck
flatbed_hotshotFlatbed, Hotshothotshot
flatbed_maxiFlatbed, Maxi
hopper_bottomHopper Bottom
lowboyLowboylow boy, lowbed, low bed
moving_vanMoving Van
pneumaticPneumatic
power_onlyPower Only
reeferReeferrefrigerated, refrigerated van
reefer_intermodalReefer, Intermodal
reefer_logisticsReefer, Logistics
rgnRGNremovable gooseneck
step_deckStep Decksingle drop, drop deck
stepdeck_conestogaStepdeck, Conestoga
straight_box_truckStraight Box Truck
stretch_trailerStretch Trailer
tanker_aluminumTanker, Aluminum
tanker_intermodalTanker, Intermodal
tanker_steelTanker, Steel
vanVandry van
van_conestogaVan, Conestoga
van_curtainVan, Curtain
van_doubleVan, Double
van_hotshotVan, Hotshot
van_insulatedVan, Insulated
van_intermodalVan, Intermodal
van_logisticsVan, Logistics
van_open_topVan, Open-Top
van_roller_bedVan, Roller Bed
van_tripleVan, Triple
van_ventedVan, Vented

Load categories

CodeNameAlso accepted
alcoholAlcohol
boatsBoats
construction_farm_equipmentConstruction/Farm Equipment
emptyEmpty
hazardous_materialsHazardous Materials
mobile_homeMobile Home
modular_homeModular Home
otherOther
portable_buildingsPortable Buildings
sectional_homeSectional Home
vehicleVehicle

Error codes

Every error has the shape { "error": { "code", "message", "details" }, "request_id" }. New codes may be added for new situations; an existing code never changes meaning. An unsupported method gets 405 with an empty body.

CodeStatusMeaning
INVALID_JSON400The body isn't valid JSON, or isn't a JSON object.
UNAUTHORIZED401No key, or the key is unknown, revoked or expired.
FORBIDDEN_SCOPE403The key doesn't have the scope this endpoint needs. details.required_scope says which.
CLIENT_SUSPENDED403API access for your account is suspended. Contact us.
NOT_FOUND404No such resource for your account.
IDEMPOTENCY_MISMATCH409The Idempotency-Key was already used with a different request.
IDEMPOTENCY_IN_PROGRESS409A request with this Idempotency-Key is still running. Retry shortly.
PAYLOAD_TOO_LARGE413The body is larger than 32 KB.
UNSUPPORTED_MEDIA_TYPE415Send the body with Content-Type: application/json.
INVALID_INPUT422Some values are wrong or missing. details.invalid and details.missing list every one.
UNSUPPORTED422The request asks for something we don't quote yet, such as route stops.
PLACE_NOT_FOUND422A place couldn't be found. details.field says which.
PLACE_AMBIGUOUS422A place matches more than one state. details.candidates lists them.
PLACE_MISMATCH422Coordinates aren't in the state sent with them. details.field says which place.
UNKNOWN_STATE422A state code we don't permit.
NO_STATES422The route doesn't cross any state we permit.
INCOMPLETE422The quote couldn't be priced with what was sent. The message says what to add.
RATE_LIMITED429Too many requests. Wait the Retry-After header's seconds.
QUOTE_LIMIT_REACHED429Your daily quote allowance is used. It resets at midnight UTC.
INTERNAL500Something failed on our side. Retry; if it persists, send us the request_id.
SAVE_FAILED500The draft order couldn't be saved, so nothing was created. Retry with the same Idempotency-Key.
QUOTE_FAILED500Pricing failed on our side. Retry with the same Idempotency-Key.
ROUTING_FAILED502Looking up places or miles failed. Retry, or send route.states with miles.
ROUTING_UNAVAILABLE503Place and mileage lookup is unavailable. Send route.states with miles instead.
UNAVAILABLE503This part of the API is briefly unavailable. Wait the Retry-After header's seconds.