Changelog
Returns after load
A cancel that arrives after the order is loaded can now bring the order back to the store instead of being refused. Returns are enabled per site; ask your Autolane contact to switch them on.
What changed
PATCH /dd/v1/deliveries/{external_delivery_id}withstatus: CANCELLEDatLOADED,EN_ROUTE_TO_CUSTOMER, orARRIVED_AT_CUSTOMERanswers200withstatus: RETURN_IN_PROGRESSon sites with returns enabled, unless the trunk has already opened at the customer’s door, in which case the handoff wins instead. Sites without returns still get409. The body accepts an optionalcancellation_reason; any value is accepted, and an unrecognized or non-string value is recorded asOTHER.- Three new statuses,
RETURN_IN_PROGRESS,RETURN_ARRIVED,RETURNED, onpickup_status.changedand onGET. They always arrive in that order andRETURNEDis terminal. AfterRETURN_IN_PROGRESSa delivery never reportsEN_ROUTE_TO_CUSTOMER,ARRIVED_AT_CUSTOMER, orCOMPLETED. - New fields on the return statuses:
return_reason,return_stall_id(sites with stall reporting), andreturn_fee_centsonRETURNED.estimated_arrivalonRETURN_IN_PROGRESSis the arrival back at the store. 409 DELIVERY_ALREADY_COMPLETEDwhen a cancel lands after the handoff to the customer, or once the trunk has opened at the customer’s door.- A repeat cancel during or after a return answers
200with the current status and sends no new webhook. - Sandbox. The portal’s Advance button steps a returning delivery through
RETURN_ARRIVED(with an optional Return stall ID) andRETURNED.
Cancel accepts cleared instruction fields
A cancel through PATCH /dd/v1/deliveries/{external_delivery_id} no longer
fails when the body also carries an instruction field set to null or an
empty string.
What changed
PATCH /dd/v1/deliveries/{external_delivery_id}cancels the delivery whenstatusisCANCELLEDand anypickup_instructionsordropoff_instructionskey present isnullor an empty string. Those keys are ignored; a cancel never edits instructions.- An instruction field with any value other than
nullor an empty string next tostatusis still refused with400, andstatusstill accepts onlyCANCELLED.
Pickup and dropoff instructions
Deliveries now carry two notes: pickup_instructions for the store side and
dropoff_instructions for the customer side.
What changed
POST /dd/v1/deliveries/quoteacceptsdropoff_instructionsbesidepickup_instructions. Both are optional, nullable, and up to 2000 characters.PATCH /dd/v1/deliveries/{external_delivery_id}edits either note. Send one or both fields withoutstatus;nullor an empty string clears a field, and an absent field is left unchanged. Edits are accepted until the delivery reachesCOMPLETED,FAILED,CANCELLED, orEXPIRED. A cancel still sendsstatuson its own.POST /dd/v1/deliveries,GET /dd/v1/deliveries, andGET /dd/v1/deliveries/{external_delivery_id}return both fields on every delivery. ThePATCHresponse returns them after an instructions edit.pickup_instructionsis shown to the driver from assignment until the order is loaded.dropoff_instructionsis shown on the way to and at the customer.
Stall ID on store-arrival webhooks
Sites can now report the stall the vehicle is parked in at the store. Ask your Autolane contact to enable stall reporting for a site.
What changed
pickup_status.changedcarries a newdata.stall_idfield onARRIVED_AT_STORE,WAITING_FOR_LOAD, andLOADEDfor sites with stall reporting enabled. It isnullwhen no stall was recorded for the arrival and is omitted on every other status and for every other site.- Corrections. If the stall changes while the delivery is at
ARRIVED_AT_STOREorWAITING_FOR_LOAD, you receive anotherpickup_status.changedwithprevious_statusequal tostatusand the newstall_id. The newest event bytimestampwins. A delivery that is alreadyLOADEDgets no correction event. GET /dd/v1/deliveries/{external_delivery_id}returnsstall_idunder the same rule.- Sandbox. The portal’s Advance button offers an optional Stall ID when
stepping into
ARRIVED_AT_STORE, so you can exercise the populated shape.
Delivery status now reports the delivery lifecycle
The top-level status field on delivery responses now reports the
delivery lifecycle — the same vocabulary emitted by
pickup_status.changed webhooks — instead of the internal order state
machine. This resolves a long-standing inconsistency where the GET
endpoint could report PENDING while webhooks were progressing through
ASSIGNED, EN_ROUTE_TO_STORE, and beyond.
API endpoint paths moved to /dd/v1/*
The Direct Delivery API endpoints are now served under the /dd/v1/*
prefix instead of /api/retailer/*. This is purely a URL change.
Request bodies, response shapes, headers, and authentication are
unchanged.
What changed
The public API surface is now organized around versioned product
prefixes (/dd/v1/* for Direct Delivery v1). The old /api/retailer/*
paths are no longer reachable from api.goautolane.com.
v1.0.0 Direct Delivery API GA
The Direct Delivery API is generally available. Retailers can now request quotes, submit deliveries, and subscribe to real-time status updates.
Added
Deliveries
POST /api/retailer/deliveries/quote: request a delivery quote with pickup ETA, delivery ETA, and a locked cost. Quotes are valid for 5 minutes.POST /api/retailer/deliveries: consume a quote to create a delivery.GET /api/retailer/deliveries: list deliveries for your retailer.GET /api/retailer/deliveries/{external_delivery_id}: fetch a single delivery by your external ID.PATCH /api/retailer/deliveries/{external_delivery_id}: update a delivery (cancellation supported in v1).