EasyRoutes API

Update route stop tasks

PUT
/routes/{routeId}/stops/{stopId}/tasks

Updates the tasks for an imported stop on a route. Allows you to set or replace the list of driver tasks for a stop that was previously imported via ImportStops. Only stops with an importedStopId can have their tasks updated through this endpoint. Stops created from Shopify orders, saved stops, or manually created stops cannot be updated via this RPC. This is a full replacement: the entire list of tasks on the stop is replaced with the task templates provided in the request body, so existing tasks not included in the request will be removed. Task and item IDs are always regenerated by the server, and any existing completion state, input, or timestamps are cleared, since only the driver (via the driver app) can mark a task or item complete or provide input. The response will include the updated stop with the new tasks.

Authorization

bearerAuth
AuthorizationBearer <token>

Access token from /authenticate

In: header

Path Parameters

routeId*string

The ID of the route to update stop tasks.

stopId*string

The ID of the stop to update tasks for.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

[index: integer]?

A template for creating tasks at a stop. Task templates may have one or more items for CHECKBOXES or RADIO_BUTTONS. Imported stops may have task templates that are used to create tasks when the stop is added to a route.

Response Body

application/json

application/json

curl -X PUT "https://example.com/routes/rte-123e4567-e89b-12d3-a456-426614174000/stops/rst-123e4567-e89b-12d3-a456-426614174000/tasks" \  -H "Content-Type: application/json" \  -d '[    {}  ]'
{  "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"    }  ]}
{  "code": 0,  "message": "string",  "details": [    {      "@type": "string"    }  ]}