Add route stops
Adds stops to a route by route ID. The added stops are references to previously imported stops by ID (or client-provided ID). The resulting RouteStops inherit most attributes from the imported stop, while optionally inheriting some defaults from the route. Specifically, if the stop does not have a duration set, it will inherit the default duration from the route options. Additionally, tasks configured on the imported stops will be merged with the configured stop tasks on the route. The request body should include a list of stop IDs to add to the route. The response will include the updated route with the added stops. All new stops are appended to the end of the existing route. The route will not be optimized automatically after adding stops, so the caller should reoptimize the route if needed via ReoptimizeRoute.
Authorization
bearerAuth Access token from /authenticate
In: header
Path Parameters
The ID of the route to add stops to.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/routes/rte-123e4567-e89b-12d3-a456-426614174000/stops" \ -H "Content-Type: application/json" \ -d '[ { "importedStopId": "ist-123e4567-e89b-12d3-a456-426614174000" } ]'{ "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" } ]}