EasyRoutes API

Update route end location

PATCH
/routes/{routeId}/end/location

Updates the address and/or coordinates for a route's end location by route ID, or sets one if the route currently has none (in which case address must be included in updateMask). This is a partial update: provide the fields to change in end and list their paths in updateMask, which must contain at least one of address or coordinates. Changing the end location affects the route's distances and ETAs and marks the route as not optimized; fetch the route to see the updated directions, and call ReoptimizeRoute if the stop order should be adjusted. The route must not be archived. The response returns the full updated route.

Authorization

bearerAuth
AuthorizationBearer <token>

Access token from /authenticate

In: header

Path Parameters

routeId*string

The ID of the route to update.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/routes/rte-123e4567-e89b-12d3-a456-426614174000/end/location" \  -H "Content-Type: application/json" \  -d '{    "end": {},    "updateMask": "string"  }'
{  "id": "rte-123e4567-e89b-12d3-a456-426614174000",  "name": "Morning route",  "driver": {    "id": "drv-123e4567-e89b-12d3-a456-426614174000",    "firstName": "John",    "lastName": "Doe",    "phone": "+14265551000",    "status": "ACTIVE"  },  "start": {    "address": {      "address1": "123 Main St",      "address2": "Apt 3B",      "city": "New York",      "provinceCode": "NY",      "countryCode": "US",      "zip": "10001"    },    "tasks": [      {        "id": "tsk-123e4567-e89b-12d3-a456-426614174000",        "title": "Delivery checklist",        "type": "TEXT_INPUT",        "items": [],        "input": {          "value": "020123456789",          "updatedAt": "2019-08-24T14:15:22Z",          "inputMethod": "SCANNED"        },        "requiredToMarkStopAsDelivered": true,        "requiredToMarkStopAsAttempted": true      }    ],    "status": "STARTED",    "updatedStart": "2019-08-24T14:15:22Z",    "scheduledStart": "2019-08-24T14:15:22Z",    "photos": [      {        "id": "att-123e4567-e89b-12d3-a456-426614174000",        "createdAt": "2019-08-24T14:15:22Z",        "url": "https://example.com/stop-attachment/attachment-2025-06-03-1"      }    ]  },  "end": {    "address": {      "address1": "123 Main St",      "address2": "Apt 3B",      "city": "New York",      "provinceCode": "NY",      "countryCode": "US",      "zip": "10001"    },    "tasks": [      {        "id": "tsk-123e4567-e89b-12d3-a456-426614174000",        "title": "Delivery checklist",        "type": "TEXT_INPUT",        "items": [],        "input": {          "value": "020123456789",          "updatedAt": "2019-08-24T14:15:22Z",          "inputMethod": "SCANNED"        },        "requiredToMarkStopAsDelivered": true,        "requiredToMarkStopAsAttempted": true      }    ],    "plannedArrival": "2019-08-24T14:15:22Z",    "distanceMeters": 1234.56,    "updatedArrival": "2019-08-24T14:15:22Z",    "status": "COMPLETED",    "photos": [      {        "id": "att-123e4567-e89b-12d3-a456-426614174000",        "createdAt": "2019-08-24T14:15:22Z",        "url": "https://example.com/stop-attachment/attachment-2025-06-03-1"      }    ]  },  "stops": [    {      "id": "rst-123e4567-e89b-12d3-a456-426614174000",      "type": "DELIVERY",      "deliveryStatus": "ATTEMPTED_DELIVERY",      "breakStatus": "COMPLETED",      "updatedAt": "2019-08-24T14:15:22Z",      "duration": "string",      "plannedArrival": "2019-08-24T14:15:22Z",      "note": "Leave at door.",      "address": {        "address1": "123 Main St",        "address2": "Apt 3B",        "city": "New York",        "provinceCode": "NY",        "countryCode": "US",        "zip": "10001"      },      "contact": {        "firstName": "John",        "lastName": "Doe",        "company": "Roundtrip Systems Inc",        "phone": "+14265551000",        "email": "john.doe@roundtrip.ai"      },      "plannedCoordinates": {        "latitude": 0.1,        "longitude": 0.1      },      "items": [        {          "name": "Bananas",          "quantity": 5,          "grams": 500,          "sku": "BANANA-001"        }      ],      "source": "IMPORTED_STOP",      "shopifyOrderId": "6229749334323",      "savedStopId": "sst-123e4567-e89b-12d3-a456-426614174000",      "deliveredCoordinates": {        "latitude": 0.1,        "longitude": 0.1      },      "proofOfDeliveryNote": "Left at door.",      "proofOfDeliveryPhotos": [        {          "id": "att-123e4567-e89b-12d3-a456-426614174000",          "createdAt": "2019-08-24T14:15:22Z",          "url": "https://example.com/stop-attachment/attachment-2025-06-03-1"        }      ],      "proofOfDeliverySignatures": [        {          "id": "att-123e4567-e89b-12d3-a456-426614174000",          "createdAt": "2019-08-24T14:15:22Z",          "url": "https://example.com/stop-attachment/attachment-2025-06-03-1"        }      ],      "tasks": [        {          "id": "tsk-123e4567-e89b-12d3-a456-426614174000",          "title": "Delivery checklist",          "type": "TEXT_INPUT",          "items": [],          "input": {            "value": "020123456789",            "updatedAt": "2019-08-24T14:15:22Z",            "inputMethod": "SCANNED"          },          "requiredToMarkStopAsDelivered": true,          "requiredToMarkStopAsAttempted": true        }      ],      "priority": 8,      "importedStopId": "ist-123e4567-e89b-12d3-a456-426614174000",      "orderName": "#1234",      "distanceMeters": 123.45,      "updatedArrival": "2019-08-24T14:15:22Z",      "timeWindows": [        {          "start": {            "hours": 13,            "minutes": 37,            "seconds": 16          },          "end": {            "hours": 13,            "minutes": 37,            "seconds": 16          }        }      ],      "deliveryDate": {        "year": 2019,        "month": 11,        "day": 15      },      "attributes": [        {          "key": "delivery_date",          "value": "2025-12-16"        }      ],      "clientStopId": "test-order-1234",      "tags": [        "foo",        "bar"      ],      "attemptedReason": "NOT_AVAILABLE",      "attemptedNote": "Customer did not answer the door.",      "customerRating": {        "rating": 5,        "comment": "Excellent delivery",        "createdAt": "2019-08-24T14:15:22Z"      },      "customSignatureDisclosure": "I acknowledge that I have received this delivery.",      "shopifyOrder": {        "orderNote": "Customer has paid.",        "customerNote": "Leave at door."      },      "proofOfDeliveryBarcodes": [        {          "value": "string",          "createdAt": "2019-08-24T14:15:22Z"        }      ],      "proofOfDeliveryBarcodeIssues": [        {          "reason": "ITEM_MISSING",          "note": "Item was not packed.",          "createdAt": "2019-08-24T14:15:22Z"        }      ]    }  ],  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "archivedAt": "2019-08-24T14:15:22Z",  "scheduledFor": "2019-08-24T14:15:22Z",  "totalDistanceMeters": 2387.2,  "totalItemQuantity": 50,  "totalItemGrams": "6000",  "optimized": true,  "dispatchedUntil": "2019-08-24T14:15:22Z",  "note": "Fragile items.",  "tags": [    "foo",    "bar"  ],  "defaultStopDuration": "300s",  "maxDuration": "28800s",  "maxStops": 50,  "maxItemCount": 200,  "maxKilograms": 500,  "avoidTolls": true,  "avoidUTurns": true,  "speedFactor": 0.8}
{  "code": 0,  "message": "string",  "details": [    {      "@type": "string"    }  ]}