Skip to main content

Delivery

Coordinate delivery quotes, job creation, live updates, and cancellation with your courier or logistics partner.

Overview​

Otter requests quotes and delivery jobs via webhooks. Your app responds through callback endpoints and streams status updates until the delivery completes or cancels.

Integration overview​

  1. Quote — Request delivery quotes (delivery.request_quote) in; POST /v1/delivery/{deliveryReferenceId}/quotes out with AVAILABLE plus estimates or UNAVAILABLE plus an optional reason.
  2. Create — Accept delivery (delivery.accept); acknowledge successful creation through POST /v1/delivery/{deliveryReferenceId}/accept.
  3. Updates — PUT /v1/delivery/{deliveryReferenceId}/status for status, address, courier, vehicle, notes.
  4. Update request — Update delivery request (delivery.update_request) in; POST /v1/delivery/{deliveryReferenceId}/update out — see Handle delivery update requests.
  5. Cancel — Cancel delivery (delivery.cancel) in; POST /v1/delivery/{deliveryReferenceId}/cancel out — see Cancel a delivery.
  6. Errors — POST /v1/delivery/callback/error — see Handle delivery errors.

A typical lifecycle is ALLOCATED → PICKED_UP → COMPLETED, or CANCELED. Otter accepts some updates with intermediate statuses omitted, so do not depend on synchronous validation of the complete sequence.

Quote, accept, and cancel callbacks return 204 after the correlated result is stored. A duplicate callback with the same event ID returns 409. Accept and cancel callbacks represent success only; report failures through the delivery error callback.

Next​

Implement Create a delivery before live traffic.