Post freight to LoadBoot straight from your TMS or load-posting network. REST, JSON, API-key auth, batch posting and idempotent retries.
Two audiences use this API. Freight brokers already posting on LoadBoot who want their TMS to do it automatically instead of someone re-keying loads. And load-posting networks and TMS vendors — if you syndicate broker postings to multiple boards, this is how you add LoadBoot as a destination.
Posting is free. There is no per-post fee and no subscription. What we ask is the thing that makes the board worth posting to: the API key must belong to a licensed, document-verified LoadBoot broker account, so every load on the board came from a real brokerage.
write scope to post loads, read to pull them.Keys look like lb_… and are shown once. If you are a network or TMS vendor and want a sandbox key before wiring anything up, email [email protected] and say what you are integrating — we will set one up.
POST https://rwscphuhpjoudvljvmdk.supabase.co/functions/v1/dev-api?resource=loads · scope write
curl -X POST "https://rwscphuhpjoudvljvmdk.supabase.co/functions/v1/dev-api?resource=loads" \
-H "Authorization: Bearer lb_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"origin": "Dallas, TX",
"destination": "Atlanta, GA",
"pickup_date": "2026-09-02",
"hazmat": false,
"equipment": "Dry Van",
"rate": 2450,
"miles": 780,
"weight": 42000,
"commodity": "Palletized goods",
"reference": "YOUR-LOAD-12345",
"idempotency_key": "YOUR-LOAD-12345"
}'| Field | Type | Notes | |
|---|---|---|---|
origin | string | required | City, ST — e.g. Dallas, TX |
destination | string | required | City, ST |
pickup_date | date | required | YYYY-MM-DD. A date in the past is rejected. |
hazmat | boolean | required | We will not infer this. Declare it explicitly. |
equipment | string | recommended | Dry Van, Reefer, Flatbed, Step Deck, Hotshot, Power Only, Box Truck |
rate | number | recommended | All-in rate in USD. Loads without a rate get far less carrier attention. |
miles | number | recommended | Loaded miles. We estimate if omitted. |
weight | number | recommended | Pounds. |
commodity | string | recommended | What is on the truck. |
reference | string | recommended | Your load number. Echoed back in the response. |
idempotency_key | string | recommended | Reuse it and a retry will not double-post. Your load number works well. |
origin_full | string | optional | Full pickup address. Kept private until the load is booked. |
destination_full | string | optional | Full delivery address. Kept private until booked. |
delivery_date | date | optional | YYYY-MM-DD |
pickup_window | string | optional | e.g. 08:00-15:00. Without this or appointment_required the load posts as FCFS. |
delivery_window | string | optional | Same format. |
appointment_required | boolean | optional | Set true if the shipper schedules an appointment. |
tracking_required | boolean | optional | Defaults to LoadBoot standard tracking. |
hazmat_info | string | optional | UN number, class, placards. Required reading if hazmat is true. |
accessorials | object | optional | Your own detention / layover / TONU / lumper terms. See below. |
stops | array | optional | Additional stops beyond origin and destination. |
pickup_lat / pickup_lng | number | optional | Skip our geocoding if you already have coordinates. |
delivery_lat / delivery_lng | number | optional | Same. |
Unknown fields are ignored rather than rejected, so extra columns from your TMS will not fail the post.
A carrier will not book a load without knowing what happens when they sit at a dock for four hours. LoadBoot requires detention, layover, TONU and lumper terms on every posting — and we know your TMS almost certainly does not carry those fields.
So if you omit them, we apply LoadBoot's published standard terms automatically: detention $60/hr after 2 free hours, layover $250/day, TONU $250, lumper reimbursed with receipt. The carrier still sees written terms; they are ours rather than yours.
If your brokerage has its own terms, send them and they win — we only fill what is missing:
"accessorials": {
"detention_per_hr": "75",
"detention_free_hours": "2",
"layover_per_day": "300",
"tonu": "350",
"lumper_policy": "Reimbursed with receipt"
}Send up to 50 loads per request as {"loads": [ … ]} or a bare JSON array. Each load is validated on its own, so one bad row does not sink the batch.
You get 200 when every load posted, 207 when some did and some did not, and 400 when none did. Read the per-item results array either way — each entry carries your reference back so you can match failures to your own records.
{
"posted": 2,
"failed": 1,
"results": [
{ "index": 0, "ok": true, "reference": "A-1001", "result": { "ok": true } },
{ "index": 1, "ok": true, "reference": "A-1002", "result": { "ok": true } },
{ "index": 2, "ok": false, "reference": "A-1003",
"error": "Pickup date has already PASSED — update your pickup schedule before posting." }
]
}Send an idempotency_key on each load, or an Idempotency-Key header for the whole request. Repeat the same key and we return the original load instead of creating a duplicate. If your network times out mid-post, just send it again.
401 — Missing, invalid or revoked API key.403 — Key lacks the scope — write to post, read to fetch.400 — Body was not JSON, the batch was empty, or every load failed validation.207 — Partial batch — read results to see which loads landed.404 — Unknown resource, or a POST to something other than loads.Validation errors come back as plain sentences, not codes — the message tells you what to fix. The most common ones on a first integration are a missing hazmat declaration, a pickup date in the past, and a key whose broker account has not finished document verification.
GET https://rwscphuhpjoudvljvmdk.supabase.co/functions/v1/dev-api?resource=loads&limit=25 · scope read — returns public load opportunities. GET ?resource=me confirms which account a key belongs to and what scopes it has, which is the quickest way to check your setup.
If you syndicate broker postings, we would like LoadBoot on your destination list. We are a newer board and our carrier network is small today — we are not going to pretend otherwise. What we offer your users is one more free destination with no workflow change, and a board with no ghost loads: every posting comes from a verified brokerage, and covered freight comes down immediately.
The integration above is live now, and we will add CSV or email intake if that fits your pipeline better.