EasyRoutes API

Update route stop items

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

Updates the custom items for an imported stop or a Shopify order stop on a route. For a stop that was previously imported via ImportStops (i.e. a stop with an importedStopId), this sets or replaces the stop's list of items. For a SHOPIFY_ORDER stop, this sets or replaces only the stop's custom items (items with source = CUSTOM); the items taken from the Shopify order are kept. Saved stops and manually created stops cannot be updated via this RPC. The response will include the updated stop with the new items. The route will be marked as not optimized after updating items, so the caller should reoptimize the route if needed via ReoptimizeRoute. Items are validated to ensure they meet the following constraints: maximum 250 items per stop, item names up to 1500 characters, quantities up to 100,000, and weight up to 1,000,000,000 grams.

Authorization

bearerAuth
AuthorizationBearer <token>

Access token from /authenticate

In: header

Path Parameters

routeId*string

The ID of the route to update stop items.

stopId*string

The ID of the stop to update items for.

Header Parameters

Idempotency-Key?string

A unique key for safely retrying this operation. For more information read our guide.

Length1 <= length <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

[index: integer]?

An item to be delivered at a stop.

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/items" \  -H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \  -H "Content-Type: application/json" \  -d '[    {}  ]'
{  "id": "rst-123e4567-e89b-12d3-a456-426614174000",  "type": "DELIVERY",  "deliveryStatus": "ATTEMPTED_DELIVERY",  "breakStatus": "COMPLETED",  "updatedAt": "2026-03-30T13:15:00Z",  "duration": "300s",  "plannedArrival": "2026-03-30T13:00:00Z",  "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": 40.7128,    "longitude": -74.006  },  "items": [    {      "name": "Bananas",      "quantity": 5,      "grams": 500,      "sku": "BANANA-001",      "source": "SHOPIFY_ORDER",      "shopifyLineItemId": "14512345678901",      "shopifyFulfillmentId": "5812345678901",      "shopifyVariantId": "44512345678901",      "shopifyProductId": "8812345678901"    }  ],  "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": "2026-03-30T09:05:00Z",      "url": "https://example.com/stop-attachment/attachment-2025-06-03-1"    }  ],  "proofOfDeliverySignatures": [    {      "id": "att-123e4567-e89b-12d3-a456-426614174000",      "createdAt": "2026-03-30T09:05:00Z",      "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": "2026-03-30T13:00:00Z",        "inputMethod": "SCANNED"      },      "requiredToMarkStopAsDelivered": true,      "requiredToMarkStopAsAttempted": true    }  ],  "priority": 8,  "importedStopId": "ist-123e4567-e89b-12d3-a456-426614174000",  "orderName": "#1234",  "distanceMeters": 123.45,  "updatedArrival": "2026-03-30T13:05:00Z",  "timeWindows": [    {      "start": {        "hours": 9      },      "end": {        "hours": 17      }    }  ],  "deliveryDate": {    "year": 2025,    "month": 12,    "day": 16  },  "attributes": [    {      "key": "color",      "value": "blue"    }  ],  "clientStopId": "test-order-1234",  "tags": [    "foo",    "bar"  ],  "attemptedReason": "NOT_AVAILABLE",  "attemptedNote": "Customer did not answer the door.",  "customerRating": {    "rating": 5,    "comment": "Excellent delivery",    "createdAt": "2026-03-30T18:00:00Z"  },  "customSignatureDisclosure": "I acknowledge that I have received this delivery.",  "shopifyOrder": {    "orderNote": "Customer has paid.",    "customerNote": "Leave at door."  },  "proofOfDeliveryBarcodes": [    {      "value": "123456789012",      "createdAt": "2026-03-30T13:10:00Z"    }  ],  "proofOfDeliveryBarcodeIssues": [    {      "reason": "ITEM_MISSING",      "note": "Item was not packed.",      "createdAt": "2026-03-30T13:10:00Z"    }  ],  "orderReferenceUrl": "https://orders.example.com/orders/148977776"}
{  "code": 0,  "message": "string",  "details": [    {      "@type": "string"    }  ]}