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. |
Status code
4 is not used. The sequence jumps from 3 (PassengerOnBoard) to 5 (Completed).Update ride status
POST
/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"). |
Request — passenger on board
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
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.
Attempting an invalid transition (e.g. moving from
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:
Complete ride sequence
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:
No-show
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" }'