Designated Transporters
Taxi & Private Hire › Products › Dispatch › Designated Transporters
Generally available
Operators can manually assign a trip to a specific transporter, bypassing the normal dispatch flow. The designation creates a reserved offer with its own lifecycle; the dispatch engine skips designated trips from auto-allocation. Used as a manual intervention path when automated dispatch cannot resolve a trip, and as the substrate the auto-rescue feature builds on.
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