Get a delivery
Returns one delivery.
Scope: deliveries:read · Plan: Pro and Enterprise in live mode; every plan in test mode.
AuthorizationBearer <token>Send Authorization: Bearer <token> on every request. The token is one of:
| Prefix | What it is | Where it may be used |
|---|---|---|
agoo_sk_live_ | Secret key, live mode | Your servers only |
agoo_sk_test_ | Secret key, test mode | Your servers only |
agoo_pk_live_ | Publishable key, live mode | Browsers and apps: create pre-registrations and bookings, read public booking types (with their intake questions) and their free slots, read the visit types open for pre-registration with their public forms. Never lists people. |
agoo_pk_test_ | Publishable key, test mode | As above, in test mode |
Admins create keys in Console → Developers → API keys and choose each key's scopes. A key is shown once. Never put a secret key in a URL, a browser or a mobile app.
Scope: deliveries:read
delivery_id*stringThe delivery's ID.
^delivery_[0-7][0-9a-hjkmnp-tv-z]{25}$"delivery_01m4x0bj50e43vcf8bz0ar7qhp"The delivery.
application/json- response
A parcel, envelope or food received at a site, for a person, a team or the front desk.
id*DeliveryIdA delivery ID (TypeID with the delivery prefix).
^delivery_[0-7][0-9a-hjkmnp-tv-z]{25}$"delivery_01m4x0bj50e43vcf8bz0ar7qhp"status*DeliveryStatusreceived and notified are waiting at reception (notified once the recipient was told); then collected, returned (sent back) or refused (turned away at the door).
"received""notified""collected""returned""refused"site_id*SiteIdA site ID (TypeID with the site prefix).
^site_[0-7][0-9a-hjkmnp-tv-z]{25}$"site_01kjpt3yw0fz0v414608h9x65s"recipient_type*DeliveryRecipientTypeWho a delivery is for: a person in your directory, a team, or the front_desk itself.
"person""team""front_desk"recipient_id*|The person it's for. null for a team or the front desk.
^person_[0-7][0-9a-hjkmnp-tv-z]{25}$team_id*|The team it's for. null otherwise.
^team_[0-7][0-9a-hjkmnp-tv-z]{25}$for*|Who the label or the courier said it's for, in words.
"Kwabena Adjei, Accounts"kind*DeliveryKind"parcel""envelope""food""other"size*|nulllocation*|Where reception keeps it.
"Shelf B"sender*|"Coastline Consult"carrier*|"Dispatch rider"tracking_number*string|nulldescription*|"Signed engagement letter"package_count*integer1 <= value1rider_name*|The courier or rider who brought it.
rider_phone*|The rider's phone number, E.164.
^\+[1-9][0-9]{6,14}$source*stringWhere it was logged: api, console, workspace (the app), kiosk, web_kiosk (a kiosk in a browser) or drop_off (a courier's own phone, from a poster).
"api""console""workspace""kiosk""web_kiosk""drop_off"received_at*stringdate-timereceived_by*|The person at reception who logged it. null when a courier logged it, or through the API.
^person_[0-7][0-9a-hjkmnp-tv-z]{25}$notified_at*|When the recipient was first told.
date-timereminders_sent*integer0 <= valuecollected_at*|date-timecollection_method*|How it was handed over: the recipient's code, a signature, staff confirmation, or through the api.
"code""signature""staff""api"nullcollected_by*|The person in your directory who collected it, if known.
^person_[0-7][0-9a-hjkmnp-tv-z]{25}$collected_by_name*|Who collected it, in words, if not someone in your directory.
handed_over_by*|The person at reception who handed it over, or sent it back.
^person_[0-7][0-9a-hjkmnp-tv-z]{25}$returned_at*|date-timereturn_reason*string|nulllabel_file_id*|The photo of its label.
^file_[0-7][0-9a-hjkmnp-tv-z]{25}$photo_file_ids*array<>Other photos of it.
created_at*stringdate-timeupdated_at*stringdate-timecurl -X GET 'https://api.agoo.ardent.africa/v1/deliveries/delivery_01m4x0bj50e43vcf8bz0ar7qhp'{ "id": "delivery_01m4x0bj50e43vcf8bz0ar7qhp", "status": "notified", "site_id": "site_01kjpt3yw0fz0v414608h9x65s", "recipient_type": "person", "recipient_id": "person_01kjsesxm0e4zbyvkr7bcfxbfg", "team_id": null, "for": "Kwabena Adjei, Accounts", "kind": "envelope", "size": "small", "location": "Shelf B", "sender": "Coastline Consult", "carrier": "Dispatch rider", "tracking_number": null, "description": "Signed engagement letter", "package_count": 1, "rider_name": "Yaw Boateng", "rider_phone": 233244000111, "source": "console", "received_at": "2026-10-14T10:47:00Z", "received_by": "person_01kjsevr70faybwar4k1wjj6x2", "notified_at": "2026-10-14T10:47:05Z", "reminders_sent": 0, "collected_at": null, "collection_method": null, "collected_by": null, "collected_by_name": null, "handed_over_by": null, "returned_at": null, "return_reason": null, "label_file_id": "file_01m4x0bh10e43vcf8bz0ar7qhn", "photo_file_ids": [], "created_at": "2026-10-14T10:47:00Z", "updated_at": "2026-10-14T10:47:05Z"}Mark a delivery as collected POST
Marks a waiting delivery as collected and fires `delivery.collected`. Through the API the method is `api`. Leave `collected_by_name` out when the recipient collected it themselves. A delivery that is already collected, returned or refused returns `invalid_state`. **Scope:** `deliveries:write` · **Plan:** Pro and Enterprise in live mode; every plan in test mode.
Correct a delivery PATCH
Changes a waiting delivery: who it's for, where it's kept, what it is. A new recipient gets a new collection code and is told, unless `notify_recipient` is `false`. Fires `delivery.updated`. A delivery that is no longer waiting returns `invalid_state`. **Scope:** `deliveries:write` · **Plan:** Pro and Enterprise in live mode; every plan in test mode.