# General Overview

## Prerequisites

Before you begin integration:

1. **Contact your Echo account team** to obtain your UserName (ENumber) and APIKey
2. Ensure your system can make HTTPS REST API calls with JSON payloads
3. Review the OpenAPI specification for complete request/response schemas


## API Endpoints

All endpoints use base URL `https://restapi.echo.com` unless noted.

### Rates

| Method | Endpoint | Operation |
|  --- | --- | --- |
| POST | `/v2/rates` | Get LTL carrier rates, transit days, and guaranteed options |
| POST | `/v2/rates/summary` | Get a filtered summary of LTL carrier rates |


### Shipment Creation

| Method | Endpoint | Operation |
|  --- | --- | --- |
| POST | `/v2/shipments/LTL` | Create an LTL shipment |
| POST | `/v2/shipments/TL` | Create a TL shipment |
| POST | `/v2/shipments/PL` | Create a partial load shipment |


### Shipment Status and Tracking

| Method | Endpoint | Operation |
|  --- | --- | --- |
| GET | `/v2/shipments/{ShipmentId}` | Get status for a single shipment |
| GET | `/v2/shipments/statuses` | Get status for up to 25 shipments |
| GET | `/v2/shipments/{ShipmentId}/tracking` | Get tracking events for a shipment |


### Shipment Details and Documents

| Method | Endpoint | Operation |
|  --- | --- | --- |
| POST | `/v2/query/shipmentdetail` | Get full shipment details |
| POST | `/v2/query/shipments` | Search shipments |
| GET | `/v2/shipments/{ShipmentId}/documents` | List available documents |
| GET | `/v2/shipments/{ShipmentId}/documents/{type}` | Retrieve a specific document |
| GET | `/v2/shipments/{ShipmentId}/cost` | Get shipment cost breakdown |


### Update and Cancel (prod_int.echo.com)

These endpoints use base URL `https://prod_int.echo.com` and match the original Create request structure, identified by BOL number.

| Method | Endpoint | Operation |
|  --- | --- | --- |
| POST | `/Shipments/LTL/Update/Service.svc` | Update an LTL shipment |
| POST | `/Shipments/TL/Update/Service.svc` | Update a TL shipment |
| POST | `/Shipments/LTL/Cancel/Service.svc` | Cancel an LTL shipment |
| POST | `/Shipments/TL/Cancel/Service.svc` | Cancel a TL shipment |


## Recomended Workflow

### Rate and Create Shipment (LTL)

1. **Get rates** — POST to `/v2/rates` with origin/destination zip codes, weight, and freight class
2. **Select a rate** — Choose a carrier SCAC and guarantee option from the response
3. **Create shipment** — POST to `/v2/shipments/LTL` with the selected carrier and full shipment details
4. **Receive Echo Load ID** — The `ShipmentId` in the response is your reference for all subsequent calls


### Track Shipment and Access Documents

1. **Check status** — GET `/v2/shipments/{ShipmentId}` for current status
2. **Get tracking** — GET `/v2/shipments/{ShipmentId}/tracking` for event history
3. **Retrieve documents** — GET `/v2/shipments/{ShipmentId}/documents` once the shipment is booked; BOL, POD, and Invoice are available when loaded in Echo's system


## Update and Cancel Rules

- The JSON request body must match the original Create request structure
- Echo matches the update or cancel to the existing load by `BolNumber`
- The original `BolNumber` must be present in both the existing load and the update/cancel request
- For TL updates: `Accessorials`, `EquipmentType`, `EquipmentAccessorials`, `EquipmentTarps`, `EquipmentNotes`, and `CubicSize` are **not** eligible for update. Please reach out to your Echo account representative.