Skip to content

What has happened to a booked delivery.

GET
/v1/jobs/{id}
curl --request GET \
--url https://courierapi.itdlogisoft.co.uk/v1/jobs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Authorization: Basic <credentials>'
id
required
string format: uuid

OK

Media typeapplication/json

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
id
required
string
reference
required
string
status
required
string
currency
required
string
price_amount_minor
required
integer | string format: int64
/^-?(?:0|[1-9]\d*)$/
tax_amount_minor
required
integer | string format: int64
/^-?(?:0|[1-9]\d*)$/
vehicle
required
string
tracking_url
required
string
pickup
required

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
latitude
required
number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
longitude
required
number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
address
required
string
postcode
required
null | string
contact_name
required
string
contact_phone
required
string
notes
required
null | string
dropoff
required

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
latitude
required
number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
longitude
required
number | string format: double
/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/
address
required
string
postcode
required
null | string
contact_name
required
string
contact_phone
required
string
notes
required
null | string
booked_at
required
string format: date-time
scheduled_for
required
null | string format: date-time
assigned_at
required
null | string format: date-time
completed_at
required
null | string format: date-time
cancellation_reason
required
null | string
items
required
Array<object>

One line of the order, read back with what it comes to.

object
name
required
string
unit_price_minor
required
integer | string format: int64
/^-?(?:0|[1-9]\d*)$/
quantity
required
integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
line_total_minor
required
integer | string format: int64
/^-?(?:0|[1-9]\d*)$/
items_subtotal_minor
required
integer | string format: int64
/^-?(?:0|[1-9]\d*)$/
discount_minor
required
integer | string format: int64
/^-?(?:0|[1-9]\d*)$/
items_total_minor
required
integer | string format: int64
/^-?(?:0|[1-9]\d*)$/
proof_requirement
required

The policy as it stands.

object
photo_required
required
boolean
signature_required
required
boolean
proof
required
One of:
null
notify_customer
required
boolean
customer_notified_at
required
null | string format: date-time

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