What has happened to a booked delivery.
const url = 'https://courierapi.itdlogisoft.co.uk/v1/jobs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {Authorization: 'Basic <credentials>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://courierapi.itdlogisoft.co.uk/v1/jobs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Basic <credentials>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”OK
A booked delivery, read back.
Everything JobResponse carries, plus what has happened since. A merchant who has booked a delivery and heard nothing has exactly one question — “where is it” — and until this existed the only way to answer it was to wait for a webhook, which is no use at all to somebody whose customer is on the phone right now.
What is deliberately absent is as considered as what is here. There is no courier name, no courier phone number and no history of who was offered the job and declined it. A merchant needs to know what is happening to their delivery; they do not need the identity of the person carrying it, and “four couriers turned this down” is an operational fact about the platform rather than anything they can act on. The tracking link is the surface built for following a courier, and it is customer-facing by design.
object
One end of a job, as the merchant sent it.
Their own data handed back, which is the point: it is what a reconciliation runs against when their order system and ours disagree about which address a delivery went to.
object
One end of a job, as the merchant sent it.
Their own data handed back, which is the point: it is what a reconciliation runs against when their order system and ours disagree about which address a delivery went to.
object
One line of the order, read back with what it comes to.
object
The policy as it stands.
object
What the courier brought back from the door.
The images are links that expire — a quarter of an hour, then a fresh read of the job for a fresh link — never bytes, and never a permanent address: a photograph of somebody’s front door is not a thing to leave lying in a browser history.
object
handed_to_recipient, left_in_safe_place, or not_delivered for a job that went back.
Who took it, if handed over and the courier asked.
Where it was left, or why it could not be delivered.
When the courier reported it.
A link to the photograph, valid for a short while. Absent when there is none.
A link to the signature, likewise.
Example generated
{ "id": "example", "reference": "example", "status": "example", "currency": "example", "price_amount_minor": 1, "tax_amount_minor": 1, "vehicle": "example", "tracking_url": "example", "pickup": { "latitude": 1, "longitude": 1, "address": "example", "postcode": "example", "contact_name": "example", "contact_phone": "example", "notes": "example" }, "dropoff": { "latitude": 1, "longitude": 1, "address": "example", "postcode": "example", "contact_name": "example", "contact_phone": "example", "notes": "example" }, "booked_at": "2026-04-15T12:00:00Z", "scheduled_for": "2026-04-15T12:00:00Z", "assigned_at": "2026-04-15T12:00:00Z", "completed_at": "2026-04-15T12:00:00Z", "cancellation_reason": "example", "items": [ { "name": "example", "unit_price_minor": 1, "quantity": 1, "line_total_minor": 1 } ], "items_subtotal_minor": 1, "discount_minor": 1, "items_total_minor": 1, "proof_requirement": { "photo_required": true, "signature_required": true }, "proof": { "outcome": "example", "recipient_name": "example", "note": "example", "recorded_at": "2026-04-15T12:00:00Z", "photo_url": "example", "signature_url": "example" }, "notify_customer": true, "customer_notified_at": "2026-04-15T12:00:00Z"}Unauthorized
Not Found