# Push API for carriers

If we can't connect to your ELD or GPS provider, your systems can send locations, statuses and documents to Shipment Insight directly. One integration reaches every customer you haul for.

> **PLANNED:** The Push API is being built. The endpoints and formats below are the planned design and may still change before release.

## What you can send

| Endpoint | What it's for |
| --- | --- |
| `POST /v1/push/locations` | GPS positions, up to 1,000 per request. |
| `POST /v1/push/statuses` | Milestones such as arrived, departed, loaded, delivered, and delays with a reason. |
| `POST /v1/push/events` | Truck and trailer events: doors, engine, reefer temperature. |
| `POST /v1/push/etas` | Your own estimated arrival per stop. |
| `POST /v1/push/documents` | Proof of delivery, bill of lading and photos. |
| `GET /v1/push/shipments` | The loads assigned to you, so you know what to report on. |

## Identify the load your way

You don't need our shipment ids. Each record can reference the load by **load number**, **PRO**, **BOL**, **order number**, **truck or trailer number**, or **container number**. We only match against loads shared with you. If nothing matches yet, the record waits in an **unmatched** list for 72 hours and is matched automatically when the load appears.

```bash
curl https://api.example.com/v1/push/locations \
  -H "Authorization: Bearer si_test_..." \
  -H "Idempotency-Key: 9b2f6c1e-..." \
  -H "Content-Type: application/json" \
  -d '{"records":[{"ref":{"loadNumber":"LD-880142"},"truckNumber":"T-118","time":"2026-11-07T14:02:11Z","lat":45.5017,"lon":-73.5673,"speedKph":87,"heading":241}]}'
```

## Results per record

One bad record never rejects the whole batch. The response lists the result of each record: `accepted`, `unmatched` or `rejected` with a reason such as `time_in_future` or `invalid_coordinates`. Send the same `Idempotency-Key` again and you get the same result, without duplicates.

## Getting started

1. In the console, open **Settings**, then **Integrations**, then **Push API**.
2. Create a test key and send data to the sandbox. It checks your references and timestamps against sample loads.
3. Watch the request log for errors and warnings.
4. When the checklist is green, create a live key.

## No developers? Other ways to send data

- Update loads by hand in the console, one by one or in bulk.
- Upload a CSV file using our template.
- Drop CSV or EDI 214 files on SFTP.
- Send drivers a link that shares their phone's location during the load only.