# Build on the API Roadmark runs on.

> Build on the same public API Roadmark's own screens, driver app and agents use: every load, quote and invoice, plus webhooks and an MCP server.

URL: https://roadmark.ai/developers
Language: en

Our own screens, the driver app and every agent call the same public API. There is no private one. Anything Roadmark can do to a load, a quote or an invoice, your code can do too, under the same permissions.

## Every record the product uses is in the API.

One resource model, the same one our screens read from. Nothing in the app has a shape your code can't also see.

- **loads** A shipment from pickup to delivery, with its stops and status.
- **stops** A pickup, delivery or intermediate stop and its appointment window.
- **quotes** A priced request, drafted or sent, with the reasons behind the number.
- **orders** A customer's booking before it becomes a load.
- **customers** Who you bill, their contracts and their contacts.
- **carriers** Who you hire, their insurance, lanes and rate history.
- **drivers** Hours of service, documents and pay, for your own fleet.
- **units** Trucks and trailers, their maintenance and current load.
- **invoices** What you bill a customer, and when it was paid.
- **settlements** What a driver or carrier is owed, and when it was paid.
- **documents** PODs, rate confirmations and anything else attached to a load.
- **events** Every change to every record, and who or what made it.

## Webhooks tell your systems the moment a load changes.

Subscribe an endpoint to the events you care about. Each one carries the record's id and its version, so a late retry never overwrites something newer, and you can always fetch the full record under your key's own permissions.

- **quote.drafted** An agent or a person creates a quote for an RFQ or an inbox request.
- **quote.sent** A quote goes out to a customer.
- **load.status_changed** A load moves between booked, dispatched, in transit and delivered.
- **load.stop.arrived** A check call, scan or ELD event marks arrival at a stop.
- **tender.accepted** A carrier accepts a tender in the carrier portal or by EDI.
- **invoice.issued** An invoice is created from a delivered load.
- **settlement.paid** A driver or carrier settlement is paid out.
- **document.uploaded** A POD, rate confirmation or other document lands on a load.

## The same MCP server Claude, ChatGPT and Gemini use.

It's a small set of tools, in plain words, not a copy of the whole API. Every call runs as the person signed in: it sees their companies and customers, and nothing else.

- **search_loads** Find loads by customer, lane, status or date, the way a dispatcher would ask.
- **get_load** Read one load in full: stops, status, rate and documents.
- **draft_quote** Price a lane from contracts and rate history, and leave the result as a draft.
- **update_eta** Record a new ETA from a check call or a delay, drafted for approval like any other update.
- **list_invoices** Find open, paid or overdue invoices for a customer.
- **find_customer** Look up a customer's contract, contacts and recent loads.

## Agents you build draft the work, and a person approves it in the same record.

Whatever you build against the API writes to the same drafts our own agents use. Nothing it prepares reaches a customer, carrier or driver until someone approves it in Roadmark, and every action is attributed to your integration by name.

## A sandbox with a real group already in it.

Test keys point at Ashgrove Transportation Group, a test workspace with companies, loads, customers and carriers already loaded. Nothing you do there reaches a live company.

## What developers ask.

- **Does Roadmark have a public API?** Yes, and it's the same API Roadmark's own screens, driver app and agents call; there is no private one. Anything Roadmark can do to a load, a quote or an invoice, your code can do too, under the same permissions.
- **What data does the API cover?** Every record the product uses: loads, stops, quotes, orders, customers, carriers, drivers, units, invoices, settlements, documents and events. It's the same resource model the screens read from.
- **Does Roadmark support webhooks?** Yes. Subscribe an endpoint to events such as quote.sent, load.status_changed, tender.accepted or invoice.issued. Each event carries the record's id and version, so a late retry never overwrites something newer.
- **Is there an MCP server?** Yes, the same one Claude, ChatGPT and Gemini use. It's a small set of plain-word tools, such as search_loads, draft_quote and list_invoices, and every call runs as the person signed in, seeing only their companies and customers.
- **Is there a sandbox for testing?** Yes, and access is free. Test keys point at Ashgrove Transportation Group, a test workspace with companies, loads, customers and carriers already loaded, and nothing you do there reaches a live company.
- **Are there SDKs?** Yes. Typed clients are available for Node.js, Python and Ruby. You can also use the REST and JSON API directly.

## Related pages

- [Integrations](https://roadmark.ai/integrations): ELD, EDI, load boards and accounting
- [Connect your AI assistant](https://roadmark.ai/ai-assistants): Use Roadmark from Claude, ChatGPT or Gemini
- [TMS MCP server: connect Roadmark to any AI assistant](https://roadmark.ai/integrations/modelcontextprotocol): Roadmark has an MCP server: a small set of freight tools any MCP client can use, each call running as the person signed in and seeing only their access.
- [Security](https://roadmark.ai/security): Company isolation, access and your data
- [EDI X12 integration: 204, 990, 214 and 210 explained](https://roadmark.ai/integrations/edi): What EDI 204, 990, 214 and 210 mean, which way each goes and when it's sent, how trading partners are set up, and how tracking status becomes 214s.

Companies, people and shipment figures in product examples are fictional. They illustrate workflows and are not customer testimonials or measured results.