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