Skip to main content

Update a dispatch last mile delivery order

PUT /v2/fulfillment/lastmile/orders/{order_id}

Updates a dispatch last mile delivery order.

To successfully perform this operation, the order's status value must be brand_new. In other words, once a shopper is assigned and status moves to acknowledged, you can no longer use this endpoint to update the order.

You can change the delivery window, order details, and the pre-delivery tip amount.

When changing your desired delivery window, use the start_at and end_at fields. Your desired window must be a minimum one hour window that starts and ends on the hour.

warning

This endpoint works only with dispatch last mile delivery orders.

Security​

NameInDescription
AuthorizationheaderThe Authorization header with the bearer token acquired during authentication.

Parameters​

NameInTypeRequiredDescription
order_idpathstringRequired

The ID of the order.

Request​

FieldTypeRequiredDescription
start_atstringOptional

The requested delivery window start time in ISO 8601 format.

end_atstringOptional

The requested delivery window end time in ISO 8601 format.

service_option_idintegerOptional

The ID of the service option for the order.

initial_tip_centsintegerOptional

The pre-delivery tip in cents.

items_countintegerOptional

The number of items in the order.

bags_countintegerOptional

The number of bags in the order.

items_weightnumberOptional

The weight of the items in lbs.

cart_totalnumberOptional

The gross merchandise value (gmv) of the cart.

alcoholicbooleanOptional

Indicates whether the order contains alcohol.

special_instructionsstringOptional

Special instructions about the order to pass on to the shopper.

info

When you update the delivery window, start_at and end_at are required fields.

Request examples​

curl --request PUT \
--url 'https://connect.instacart.com/v2/fulfillment/lastmile/orders/{order_id}' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"start_at": "string",
"end_at": "string",
"service_option_id": 1,
"initial_tip_cents": 1,
"items_count": 1,
"bags_count": 1,
"items_weight": 1,
"cart_total": 1,
"alcoholic": true,
"special_instructions": "string"
}'

Response​

FieldTypeRequiredDescription
idstringRequired

The retailer-generated order ID.

statusstringRequired

The current status of the order.

order_urlstringOptional

The URL of the Instacart-hosted order status page. If the retailer has opted not to use this feature, this field will be null or empty.

created_atstringOptional

The time of order creation in ISO 8601 format.

cancellation_reasonstringOptional

The reason the order was canceled. Only present in canceled orders. One of the following:

  • customer_driven: The customer triggered the cancellation

  • instacart_driven: Instacart triggered the cancellation

  • retailer_driven: The retailer triggered the cancellation

  • shopper_driven: The shopper triggered the cancellation

  • unbatchable: The Instacart batch system triggered the cancellation

  • other: The cancellation was triggered for another reason not listed above.

localestringOptional

Indicates how the order is localized.

is_expressbooleanOptional

Deprecated. Use is_instacartplus instead. Indicates whether the order received Instacart+ membership benefits. Defaults to false.

is_instacartplusbooleanOptional

Indicates whether the order received Instacart+ membership benefits. Defaults to false.

metadataHashOptional

The order-level metadata.

fulfillment_detailsOrderFulfillmentDetailsOptional

The order's fulfillment details.

OrderFulfillmentDetails Object​

FieldTypeRequiredDescription
store_locationstringOptional

The location code of the store where the order was fulfilled. This field's value is often the same as the location_code included in the create order request. However, orders can be fulfilled from a store that's different from the one specified by location_code.

window_starts_atstringRequired

The start of the fulfillment window in ISO 8601 format.

window_ends_atstringRequired

The end of the fulfillment window in ISO 8601 format.

delivered_atstringOptional

The time the order was delivered to the customer in ISO 8601 format. Only present for completed deliveries.

bag_countintegerOptional

The number of bags in the order, as reported by the shopper.

handoff_window_starts_atstringOptional

The start of the store-associate-to-Instacart-shopper handoff window in ISO 8601 format. This field is only populated for last mile delivery (i.e., delivery only) orders.

handoff_window_ends_atstringOptional

The end of the store-associate-to-Instacart-shopper handoff window in ISO 8601 format. This field is only populated for last mile delivery (i.e., delivery only) orders.

Response examples​

200 Success

{
"id": "12345676789012345678780",
"status": "created",
"order_url": "https://example.com/example-order",
"created_at": "2018-02-22T00:00:00Z",
"cancellation_reason": "shopper_driven",
"locale": "en_US",
"is_express": true,
"is_instacartplus": true,
"fulfillment_details": {
"window_starts_at": "2018-02-22T00:00:00Z",
"window_ends_at": "2018-02-22T00:30:00Z"
},
"is_fallback_window": false
}

4XX Errors

Error responses return either a single error or multiple errors.

HTTP CodeCauseError MessageError CodeError Meta
400User Not Found"User Not Found"1001{"key":"user_id"}
400Invalid order params"Invalid service option id."1001{"key":"order.service_option_id"}
400Fails alcohol compliance check"Alcoholic items can not be added to this order. Please remove and retry."2001Not applicable
400Order updated recently"Order has been recently updated, please try again in a little while."2003{"wait":1200,"retry":true}
400Service option is no longer available"The delivery time you selected is no longer available - please select another time"1001{"key":"service_option_id"}
400Request could not be processed at this time"The request could not be completed at this time, try again later."2003{"wait":"30"}
403User Not Active"User Not Active"nullNot applicable
404Resource not found"Resource not found"4000Not applicable