Trips
Taxi & Private Hire › Products › Trip › Trips
Generally available
A Trip is the top-level booking record on the platform. It carries pickup and dropoff details, customer reference, scheduled or ASAP timing, lifecycle status, derived dispatch metadata (pickup zone, H3 cell), pricing mode, and links to its segments. Operators create trips through the console; drivers receive offers based on dispatch scoring; customers see the trip in their app or via tracking links.
Example request
POST /client/{clientId}/trip
{
"pricingMode": "METERED",
"tripSegments": [
{
"customer": {
"phone": "<E.164 phone>"
},
"tripSegmentStops": [
{
"type": "PICKUP",
"pickupAddress": "<address>",
"pickupLatitude": "<lat>",
"pickupLongitude": "<lng>"
},
{
"type": "DROPOFF",
"pickupAddress": "<address>",
"pickupLatitude": "<lat>",
"pickupLongitude": "<lng>"
}
],
"requestedPickupDate": "<unix-seconds>"
}
],
"maxSeatCapacity": "<seats>"
} Endpoints
| Method | Path | |
|---|---|---|
POST | /client/{clientId}/trip · primary | |
GET | /client/{clientId}/trip | |
POST | /client/{clientId}/trip/{tripId}/assign/{transporterId} | |
POST | /client/{clientId}/trip/{tripId}/reclaim | |
POST | /client/{clientId}/trip/{tripId}/designate | |
DELETE | /client/{clientId}/trip/{tripId}/designate | |
POST | /client/{clientId}/trip/{tripId}/status | |
POST | /client/{clientId}/trip/{tripId}/health/resolve | |
GET | /client/{clientId}/rejected-trip | |
POST | /client/{clientId}/trip/{tripId}/copy | |
GET | /client/{clientId}/trip/{tripId} | |
GET | /client/{clientId}/trip/{tripId}/dispatch-audit/{transporterId} | |
GET | /client/{clientId}/trip/{tripId}/dispatch-log | |
POST | /client/{clientId}/trip/{tripId}/edit/release | |
POST | /client/{clientId}/trip/{tripId}/guard-override | |
GET | /client/{clientId}/trip/{tripId}/guard-status | |
GET | /client/{clientId}/trip/{tripId}/health | |
GET | /client/{clientId}/trip/{tripId}/logs | |
POST | /client/{clientId}/trip/merge | |
POST | /client/{clientId}/trip/merge/analyze | |
POST | /client/{clientId}/trip/{tripId}/merge/candidates | |
POST | /client/{clientId}/trip/{tripId} | |
GET | /client/{clientId}/trip/count | |
GET | /client/{clientId}/trip/optimizable | |
GET | /client/{clientId}/trip/optimizable-accounts | |
GET | /client/{clientId}/trip/sync |
Full request/response schemas and an interactive explorer will live in the API reference (coming soon).
Use cases
Operator flows that exercise this feature.
action risk: low
Take a new ASAP booking — optionally quote first, then create the trip.
POST/client/{clientId}/quote/tripPOST/client/{clientId}/trip
action risk: low
Create a trip billed to a corporate account rather than the individual rider.
POST/client/{clientId}/trip
action risk: medium
Immediately assign a trip to a chosen driver (force-now) — distinct from designate, which reserves through allocation.
POST/client/{clientId}/trip/{tripId}/assign/{transporterId}
action risk: low
Detect a trip whose assigned driver has gone stale (lost GPS / disconnected) and reclaim it back to allocation so it can be re-dispatched.
POST/client/{clientId}/trip/{tripId}/health/resolvePOST/client/{clientId}/trip/{tripId}/reclaim
action risk: low
Operator manually dispatches a trip by designating a chosen driver, who then holds the trip through allocation (the engine reserves/offers to them rather than dispatching openly). Industry "manual dispatch" lives on the designate endpoint.
POST/client/{clientId}/trip/{tripId}/designate
action risk: low
Remove a manual driver designation so the trip returns to open dispatch.
DELETE/client/{clientId}/trip/{tripId}/designate
action risk: low
Cancel a trip. Cancel is NOT its own endpoint — it is a status transition to CANCELLED (Finding 1). If you only have a passenger name / destination, resolve the tripId first with find-trip.
POST/client/{clientId}/trip/{tripId}/status
action risk: low
Duplicate an existing trip to quickly re-book a repeat journey.
POST/client/{clientId}/trip/{tripId}/copy
read_diagnose risk: low
Explain why a trip wasn't allocated: read the dispatch audit + decision log.
GET/client/{clientId}/trip/{tripId}/dispatch-audit/{transporterId}GET/client/{clientId}/trip/{tripId}/dispatch-log
action risk: low
Release a stuck operator edit lock on a trip so others can edit it.
POST/client/{clientId}/trip/{tripId}/edit/release
action risk: high approval required
Override a capacity/time/proximity guard to push a trip past a block. Audit-logged; operator/system only.
POST/client/{clientId}/trip/{tripId}/guard-override
action risk: medium
Combine compatible trips into one shared-ride vehicle: analyse compatibility, then execute the merge.
POST/client/{clientId}/trip/merge/analyzePOST/client/{clientId}/trip/merge
read_diagnose risk: low
Suggest nearby trips that could merge with a given trip.
POST/client/{clientId}/trip/{tripId}/merge/candidates
action risk: low
Modify an existing booking (pickup, time, passengers).
POST/client/{clientId}/trip/{tripId}
read_diagnose risk: low
Look up live / scheduled trips by free-text keyword (passenger name, pickup/drop-off address, reference) to resolve a tripId — e.g. before cancelling, amending or diagnosing a trip. Reads the dispatch grid via trips_sync. The keyword is passed as a QUERY param, not a body: search is a JSON-encoded string (see trip-search-query note).
GET/client/{clientId}/trip/sync