Ride status updates
Use the status endpoint to report progress on a ride — driver en route, passenger on board, journey complete. Status changes are visible in real time on the MoovLogic dispatch screen.
Status lifecycle
Pending → Allocated → DriverEnRoute → PassengerOnBoard → Completed
↘ NoShow
Pending / Allocated → Cancelled
| Code | Status name | Meaning |
|---|---|---|
| 0 | Pending | Booking created, awaiting driver assignment. |
| 1 | Allocated | Driver has been assigned to this booking. |
| 2 | DriverEnRoute | Driver is heading to the pickup location. |
| 3 | PassengerOnBoard | Passenger has been collected and the journey is underway. |
| 5 | Completed | Journey finished — passenger dropped off at destination. |
| 6 | NoShow | Driver arrived at pickup but passenger did not appear. |
4 is not used. The sequence jumps from 3 (PassengerOnBoard) to 5 (Completed).Update ride status
/api/v1/bookings/{tagName}/status
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | integer | Required | New status code (see table above). Valid values: 0, 1, 2, 3, 5, 6. |
| notes | string | Optional | Additional context for the status change (e.g. "Driver arrived 10 minutes early"). |
curl -X POST https://api.moovlogic.com/api/v1/bookings/MV-20260501-4821/status \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "status": 3 }'
import requests
response = requests.post(
f'https://api.moovlogic.com/api/v1/bookings/{tag_name}/status',
json={'status': 3},
headers={'Authorization': f'Bearer {token}'}
)
result = response.json()
print(f"{result['previousStatus']} → {result['currentStatus']}")
<?php
$ch = curl_init("https://api.moovlogic.com/api/v1/bookings/$tagName/status");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $token",
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => json_encode(['status' => 3])
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
const response = await fetch(`https://api.moovlogic.com/api/v1/bookings/${tagName}/status`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ status: 3 })
});
const { previousStatus, currentStatus } = await response.json();
console.log(`${previousStatus} → ${currentStatus}`);
Response — 200 OK
{
"tagName": "MV-20260501-4821",
"previousStatus": "DriverEnRoute",
"currentStatus": "PassengerOnBoard",
"updatedAt": "2026-05-01T14:07:00Z"
}
Valid status transitions
Status transitions are validated — you cannot move backwards or skip ahead.
Completed back to PassengerOnBoard, or jumping from Pending directly to Completed) returns 422 Unprocessable Entity with error code invalid_status_transition.Completing a ride
To mark a ride as complete, progress through the statuses in order:
import requests, time
def update_status(tag_name, status, token):
return requests.post(
f'https://api.moovlogic.com/api/v1/bookings/{tag_name}/status',
json={'status': status},
headers={'Authorization': f'Bearer {token}'}
).json()
# Driver heading to pickup
update_status(tag_name, 2, token) # DriverEnRoute
# Passenger collected
update_status(tag_name, 3, token) # PassengerOnBoard
# Journey complete
update_status(tag_name, 5, token) # Completed
async function updateStatus(tagName, status) {
const res = await fetch(`https://api.moovlogic.com/api/v1/bookings/${tagName}/status`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ status })
});
return res.json();
}
await updateStatus(tagName, 2); // DriverEnRoute
await updateStatus(tagName, 3); // PassengerOnBoard
await updateStatus(tagName, 5); // Completed
Recording a no-show
If the driver arrived at the pickup location but the passenger did not appear:
curl -X POST https://api.moovlogic.com/api/v1/bookings/MV-20260501-4821/status \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "status": 6, "notes": "Waited 15 minutes — no contact from passenger" }'