> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lanesurf.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> You are reading the Lanesurf Agent API docs. Start with /for-ai-agents.md for the rules an agent must follow.
> The API is at https://agent.lanesurf.com and the MCP server at https://agent.lanesurf.com/mcp. Lanesurf doesn't send webhooks: poll.
> Limits: /rate-limits.md. Keys: /api-keys.md. Safe retries: /idempotency.md. Every route on one page: /api-reference.md.
> Always confirm with the person before accepting a carrier offer or bidding on a load. Never reveal an API key, and never show broker contact details to a carrier.
> The full contract is at /openapi.yaml.
> Sign up with POST /v1/signup (carrier or broker, a work email, an MC and/or DOT number), then POST /v1/signup/{signup_id}/verify. Follow next_step on every signup answer.

# Get your truck loaded

> For carriers and dispatchers: post your truck, search loads, and bid on the ones you want to run.

> [!NOTE]
>
> The carrier routes need a carrier key; broker keys get `403 wrong_role`.

## Four steps

**1. Get a key with your MC or DOT number**

Sign up with your MC or DOT number and your work email, then enter the 8-digit code we
send. See [Sign up](https://docs.lanesurf.com/carriers/sign-up.md).

* **Verified** carriers can post trucks and lanes, search loads, read a load, get truck matches, see outreach and bid.
* Carriers **under review** (`needs_review`) can post and manage trucks and lanes and list their own bids. Search, load
  details, truck matches, outreach and bidding answer `403 verification_required`.

**2. Save your lanes**

[Save the lanes you run](https://docs.lanesurf.com/carriers/lanes.md): your terminals.

**3. Post your truck**

[Post a truck](https://docs.lanesurf.com/carriers/post-a-truck.md): where it is, when it's free, the equipment, and where it
wants to go. Then ask for loads that fit it.

**4. Find a load and bid**

Search near your truck's ZIP, by equipment and date. When you see one you want to run, [bid on it](https://docs.lanesurf.com/carriers/bid-on-a-load.md).
The broker's team follows up with your dispatcher.

## Search loads

Search near where the truck is: give `origin_zip` (best), or `origin_city` with `origin_state`. Loads come
closest first:

1. the same ZIP (`match: same_zip`),
2. within 50, 100 and 150 miles (`within_50_miles`, `within_100_miles`, `within_150_miles`),
3. anywhere else in the same state (`same_state`).

Each load has `deadhead_miles`: straight-line miles from your ZIP or city to the pickup. `origin_state` alone
lists that state's pickups, newest first, and `destination_state` alone works too. A search with none of
these answers `400`. Only verified carriers can search; keys under review get `403 verification_required`.

```bash theme={null}
curl "https://agent.lanesurf.com/v1/carrier/loads/search?origin_zip=75201&equipment_type=Reefer&pickup_date=2026-10-23" \
  -H "Authorization: Bearer $LANESURF_API_KEY"
```

```json theme={null}
{
  "loads": [
    {
      "load_id": "9e8d…",
      "equipment_type": "Reefer",
      "origin": { "city": "Dallas", "state": "TX" },
      "destination": { "city": "Atlanta", "state": "GA" },
      "pickup_date": "2026-10-23T08:00:00-05:00",
      "delivery_date": "2026-10-24T14:00:00-04:00",
      "weight_lbs": 38000,
      "commodity": "Produce",
      "total_miles": 781,
      "posted_rate": 2100,
      "rate_type": "priced",
      "deadhead_miles": 4,
      "match": "within_50_miles"
    }
  ],
  "total": 1
}
```

| Filter | How it matches |
| - | - |
| `origin_zip` | 5-digit ZIP where the truck is. Ranks loads near it. An unknown ZIP answers `400` unless `origin_state` is also given |
| `origin_city` + `origin_state` | Where the truck is, when you don't have a ZIP. Ranks loads near the city; a city we can't place matches only that exact city |
| `origin_state` alone | A state's code or name: that state's pickups, newest first |
| `destination_state`, `destination_city` | A state's code or name, and an exact city name (any case), on the last delivery |
| `equipment_type` | The load's equipment contains it (`Reefer` matches `Reefer 53'`) |
| `pickup_date` | One day, `YYYY-MM-DD` |
| `pickup_from`, `pickup_to` | A range of days, `YYYY-MM-DD`. They win over `pickup_date` |
| `limit` | A whole number from 1 to 100. Default 25. Anything else answers `400 invalid_request` |

* Results are active loads from Lanesurf brokers that chose to show their loads to carriers' AI agents.
  `total` is the number returned.
* A brokerage that just signed up through the API shows up once Lanesurf has reviewed it and turned on its
  outreach; until then its loads aren't in search, load details or bids.
* `posted_rate` shows only when the broker priced the load (`rate_type: priced`). Otherwise it's
  `ask_first`: bid without a rate to ask for one.
* Results never include the broker's name, contacts or max rate. To go for a load, bid on it.
* A load with more than two stops lists them all in `stops`, in order. A reefer load has its setpoint in
  `temperature` (°F). A pickup or delivery given as a date shows as the date (`2026-11-20`).
* `GET /v1/carrier/loads/{load_id}` returns one load in the same shape (verified carriers only), with `open`:
  `true` while you can bid on it. A load you bid on stays readable after it leaves the market (covered, paused
  or deleted), with `open: false`.

## Loads for a posted truck

```bash theme={null}
curl "https://agent.lanesurf.com/v1/carrier/trucks/$TRUCK_ID/matches?limit=25" \
  -H "Authorization: Bearer $LANESURF_API_KEY"
```

Returns `{ "loads": [...], "total": n }` in the same shape as search, with the same `limit`. Verified
carriers only. A load fits when:

* it picks up near the truck's `current_city`: within 50, 100 and 150 miles, then anywhere in its
  `current_state` (just the state when the city can't be placed),
* its equipment matches the truck's `equipment_type`,
* it picks up between `available_from` and `available_to` (or within 48 hours of `available_from` if
  there's no end).

Closest first, each with `deadhead_miles` and `match`. Within each distance, loads going to one of the
truck's `destinations` states come first. A removed or expired truck gets an empty list.

## Outreach you received

`GET /v1/carrier/outreach` (MCP `my_outreach`) lists up to 50 loads Lanesurf contacted you about in the last
30 days, by email, call or text, newest first: the brokerage it came from, the latest channel and when, the
load (lane, dates, equipment), and `open`, which says whether the load is still on offer. If it is, bid on
it with its `load_id`. Outreach is matched by your MC and the email and phone your key was verified with.
Verified carriers only.

```json theme={null}
{ "outreach": [ { "load_id": "3f2a…", "broker_name": "Acme Freight", "channel": "email",
  "contacted_at": "2026-10-24T14:02:00Z", "open": true,
  "load": { "origin": { "city": "Dallas", "state": "TX" }, "destination": { "city": "Atlanta", "state": "GA" },
            "pickup_date": "2026-10-25T08:00:00-05:00", "equipment_type": "Dry Van" } } ] }
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.