API reference · Your own cars
Your fleet
For businesses with their own cars (plan: fleet or both): add cars, photos and papers, open rental periods and list cars for sale.
- get/fleet/vehiclesList your cars
- post/fleet/vehiclesAdd a car
- get/fleet/vehicles/{id}Get one of your cars
- patch/fleet/vehicles/{id}Change a car
- delete/fleet/vehicles/{id}Delete a car
- post/fleet/vehicles/{id}/photosUpload a photo
- delete/fleet/vehicles/{id}/photos/{index}Remove a photo
- post/fleet/vehicles/{id}/documentsUpload a paper
- get/fleet/vehicles/{id}/availabilityList rental periods
- post/fleet/vehicles/{id}/availabilityOpen a rental period
- delete/fleet/vehicles/{id}/availability/{windowId}Close a rental period
- get/fleet/vehicles/{id}/listingGet the sale listing
- post/fleet/vehicles/{id}/listingOffer the car for sale
- patch/fleet/vehicles/{id}/listingChange the listing
- delete/fleet/vehicles/{id}/listingWithdraw the listing
/fleet/vehiclesList your cars
Your own cars, with their review status. Needs the fleet plan.
Query parameters
statusstringpending_review, approved, rejected or suspended.
purposestringrent or sell.
rentsellpageintegerPage number, from 1.
Example:
1limitintegerItems per page (1–100). Default 20.
Example:
20
Response 200
A page: { data: [ … ], page, totalPages, total }. Each item in data:
idintegerrequiredtitlestringrequirede.g. “2021 Toyota Camry”.
makestringmodelstringyearintegerclassenumrequiredeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegercolourstring · nullablephotosarray of stringdailyRateintegerrequiredPrice per 24 hours.
depositintegerRefundable deposit.
locationobjectrequiredShow 4 fields
idintegercodestringrequirednamestringcitystring
ratingobject · nullableShow 2 fields
averagenumberAverage of 1 to 5 stars, one decimal.
countintegerPublished reviews of this car.
platestringpurposeenumrentsellstatusenumpending_reviewapprovedrejectedsuspendedsoldremovedreviewNotestring · nullableWhy it was rejected or what is missing.
papersobjectShow 4 fields
insuranceExpirydate-time · nullableISO 8601 date-time.
roadworthinessExpirydate-time · nullableISO 8601 date-time.
hasInsurancebooleanhasRegistrationboolean
createdAtdate-timeISO 8601 date-time.
Errors
401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).
curl "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles?page=1&limit=20" \
-H "Authorization: Bearer wc_test_YOUR_KEY"/fleet/vehiclesAdd a car
The car starts pending_review: our team checks the papers before it can be booked or sold. Upload photos and papers next. Prices are whole naira, in kobo.
Request body · application/json
makestringrequiredmodelstringrequiredyearintegerrequiredplatestringrequiredUnique. Saved in capitals without spaces.
colourstringclassenumeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegerlocationstringrequiredAirport code, e.g. ABV.
dailyRateintegerAt least ₦1,000 (100000). Whole naira.
depositintegerWhole naira.
purposeenumDefault rent.
rentsellinsuranceExpirydate-timeISO 8601 date-time.
roadworthinessExpirydate-timeISO 8601 date-time.
Response 201
In data:
idintegerrequiredtitlestringrequirede.g. “2021 Toyota Camry”.
makestringmodelstringyearintegerclassenumrequiredeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegercolourstring · nullablephotosarray of stringdailyRateintegerrequiredPrice per 24 hours.
depositintegerRefundable deposit.
locationobjectrequiredShow 4 fields
idintegercodestringrequirednamestringcitystring
ratingobject · nullableShow 2 fields
averagenumberAverage of 1 to 5 stars, one decimal.
countintegerPublished reviews of this car.
platestringpurposeenumrentsellstatusenumpending_reviewapprovedrejectedsuspendedsoldremovedreviewNotestring · nullableWhy it was rejected or what is missing.
papersobjectShow 4 fields
insuranceExpirydate-time · nullableISO 8601 date-time.
roadworthinessExpirydate-time · nullableISO 8601 date-time.
hasInsurancebooleanhasRegistrationboolean
createdAtdate-timeISO 8601 date-time.
Errors
400invalid: something in the request is wrong. The message says what.401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles" \
-H "Authorization: Bearer wc_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"make": "Toyota",
"model": "Hilux",
"year": 2022,
"plate": "ABC123XY",
"colour": "White",
"class": "suv",
"transmission": "manual",
"fuel": "diesel",
"seats": 5,
"location": "ABV",
"dailyRate": 6500000,
"deposit": 20000000
}'Path parameters
idintegerrequiredThe car’s id.
Example:
12
Response 200
In data:
idintegerrequiredtitlestringrequirede.g. “2021 Toyota Camry”.
makestringmodelstringyearintegerclassenumrequiredeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegercolourstring · nullablephotosarray of stringdailyRateintegerrequiredPrice per 24 hours.
depositintegerRefundable deposit.
locationobjectrequiredShow 4 fields
idintegercodestringrequirednamestringcitystring
ratingobject · nullableShow 2 fields
averagenumberAverage of 1 to 5 stars, one decimal.
countintegerPublished reviews of this car.
platestringpurposeenumrentsellstatusenumpending_reviewapprovedrejectedsuspendedsoldremovedreviewNotestring · nullableWhy it was rejected or what is missing.
papersobjectShow 4 fields
insuranceExpirydate-time · nullableISO 8601 date-time.
roadworthinessExpirydate-time · nullableISO 8601 date-time.
hasInsurancebooleanhasRegistrationboolean
createdAtdate-timeISO 8601 date-time.
Errors
401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.
curl "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12" \
-H "Authorization: Bearer wc_test_YOUR_KEY"/fleet/vehicles/{id}Change a car
Prices, colour, location and so on. Changing what the car is (make, model, year, plate) sends it back to review; a price change does not. Switching to sell is refused while a rental is under way.
Path parameters
idintegerrequiredThe car’s id.
Example:
12
Request body · application/json
makestringrequiredmodelstringrequiredyearintegerrequiredplatestringrequiredUnique. Saved in capitals without spaces.
colourstringclassenumeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegerlocationstringrequiredAirport code, e.g. ABV.
dailyRateintegerAt least ₦1,000 (100000). Whole naira.
depositintegerWhole naira.
purposeenumDefault rent.
rentsellinsuranceExpirydate-timeISO 8601 date-time.
roadworthinessExpirydate-timeISO 8601 date-time.
Response 200
In data:
idintegerrequiredtitlestringrequirede.g. “2021 Toyota Camry”.
makestringmodelstringyearintegerclassenumrequiredeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegercolourstring · nullablephotosarray of stringdailyRateintegerrequiredPrice per 24 hours.
depositintegerRefundable deposit.
locationobjectrequiredShow 4 fields
idintegercodestringrequirednamestringcitystring
ratingobject · nullableShow 2 fields
averagenumberAverage of 1 to 5 stars, one decimal.
countintegerPublished reviews of this car.
platestringpurposeenumrentsellstatusenumpending_reviewapprovedrejectedsuspendedsoldremovedreviewNotestring · nullableWhy it was rejected or what is missing.
papersobjectShow 4 fields
insuranceExpirydate-time · nullableISO 8601 date-time.
roadworthinessExpirydate-time · nullableISO 8601 date-time.
hasInsurancebooleanhasRegistrationboolean
createdAtdate-timeISO 8601 date-time.
Errors
400invalid: something in the request is wrong. The message says what.401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.409conflict or unavailable: not possible in the current state, or the car was just taken.
curl -X PATCH "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12" \
-H "Authorization: Bearer wc_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"dailyRate": 7000000
}'/fleet/vehicles/{id}Delete a car
The same as "Delete this car" in your dashboard. Refused (409) while a rental is booked or under way, or a buyer has reserved the car. A car that never had a booking or a sale is erased. A car with history is taken off the road for good: its rental periods are cancelled, any listing is withdrawn, and it no longer appears in your list or on any site, but its record is kept because past bookings and earnings refer to it. deleted is true when it was erased.
Path parameters
idintegerrequiredThe car’s id.
Example:
12
Response 200
In data:
deletedbooleanremovedboolean
Errors
401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.409conflict or unavailable: not possible in the current state, or the car was just taken.
curl -X DELETE "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12" \
-H "Authorization: Bearer wc_test_YOUR_KEY"/fleet/vehicles/{id}/photosUpload a photo
multipart/form-data with a file field: JPEG, PNG or WebP up to 10 MB; up to 12 photos per car. The first is the main photo.
Path parameters
idintegerrequiredThe car’s id.
Example:
12
Request body · multipart/form-data
filestringrequired
Response 201
In data:
idintegerrequiredtitlestringrequirede.g. “2021 Toyota Camry”.
makestringmodelstringyearintegerclassenumrequiredeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegercolourstring · nullablephotosarray of stringdailyRateintegerrequiredPrice per 24 hours.
depositintegerRefundable deposit.
locationobjectrequiredShow 4 fields
idintegercodestringrequirednamestringcitystring
ratingobject · nullableShow 2 fields
averagenumberAverage of 1 to 5 stars, one decimal.
countintegerPublished reviews of this car.
platestringpurposeenumrentsellstatusenumpending_reviewapprovedrejectedsuspendedsoldremovedreviewNotestring · nullableWhy it was rejected or what is missing.
papersobjectShow 4 fields
insuranceExpirydate-time · nullableISO 8601 date-time.
roadworthinessExpirydate-time · nullableISO 8601 date-time.
hasInsurancebooleanhasRegistrationboolean
createdAtdate-timeISO 8601 date-time.
Errors
400invalid: something in the request is wrong. The message says what.401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.409conflict or unavailable: not possible in the current state, or the car was just taken.
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12/photos" \
-H "Authorization: Bearer wc_test_YOUR_KEY" \
-F "file=@./photo.jpg"Path parameters
idintegerrequiredThe car’s id.
Example:
12indexintegerrequiredPosition of the photo, from 0.
Example:
0
Response 200
In data:
idintegerrequiredtitlestringrequirede.g. “2021 Toyota Camry”.
makestringmodelstringyearintegerclassenumrequiredeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegercolourstring · nullablephotosarray of stringdailyRateintegerrequiredPrice per 24 hours.
depositintegerRefundable deposit.
locationobjectrequiredShow 4 fields
idintegercodestringrequirednamestringcitystring
ratingobject · nullableShow 2 fields
averagenumberAverage of 1 to 5 stars, one decimal.
countintegerPublished reviews of this car.
platestringpurposeenumrentsellstatusenumpending_reviewapprovedrejectedsuspendedsoldremovedreviewNotestring · nullableWhy it was rejected or what is missing.
papersobjectShow 4 fields
insuranceExpirydate-time · nullableISO 8601 date-time.
roadworthinessExpirydate-time · nullableISO 8601 date-time.
hasInsurancebooleanhasRegistrationboolean
createdAtdate-timeISO 8601 date-time.
Errors
401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.
curl -X DELETE "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12/photos/0" \
-H "Authorization: Bearer wc_test_YOUR_KEY"/fleet/vehicles/{id}/documentsUpload a paper
multipart/form-data: file (a photo or PDF up to 10 MB) and kind (insurance or registration). Private: only our team and you can see it.
Path parameters
idintegerrequiredThe car’s id.
Example:
12
Request body · multipart/form-data
filestringrequiredkindenumrequiredinsuranceregistration
Response 201
In data:
idintegerrequiredtitlestringrequirede.g. “2021 Toyota Camry”.
makestringmodelstringyearintegerclassenumrequiredeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegercolourstring · nullablephotosarray of stringdailyRateintegerrequiredPrice per 24 hours.
depositintegerRefundable deposit.
locationobjectrequiredShow 4 fields
idintegercodestringrequirednamestringcitystring
ratingobject · nullableShow 2 fields
averagenumberAverage of 1 to 5 stars, one decimal.
countintegerPublished reviews of this car.
platestringpurposeenumrentsellstatusenumpending_reviewapprovedrejectedsuspendedsoldremovedreviewNotestring · nullableWhy it was rejected or what is missing.
papersobjectShow 4 fields
insuranceExpirydate-time · nullableISO 8601 date-time.
roadworthinessExpirydate-time · nullableISO 8601 date-time.
hasInsurancebooleanhasRegistrationboolean
createdAtdate-timeISO 8601 date-time.
Errors
400invalid: something in the request is wrong. The message says what.401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12/documents" \
-H "Authorization: Bearer wc_test_YOUR_KEY" \
-F "file=@./photo.jpg" \
-F "kind=insurance"/fleet/vehicles/{id}/availabilityList rental periods
The periods your car is on offer. Customers can book it only inside these.
Path parameters
idintegerrequiredThe car’s id.
Example:
12
Query parameters
statusstringactive, ended or cancelled.
activeendedcancelled
Response 200
A list in data. Each item:
idintegerfromdate-timeISO 8601 date-time.
todate-timeISO 8601 date-time.
statusenumactiveendedcancelledcreatedAtdate-timeISO 8601 date-time.
Errors
401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.
curl "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12/availability" \
-H "Authorization: Bearer wc_test_YOUR_KEY"/fleet/vehicles/{id}/availabilityOpen a rental period
Periods of one car cannot overlap, and cannot be in the past.
Path parameters
idintegerrequiredThe car’s id.
Example:
12
Request body · application/json
fromdate-timerequiredISO 8601 date-time.
todate-timerequiredISO 8601 date-time.
Response 201
In data:
idintegerfromdate-timeISO 8601 date-time.
todate-timeISO 8601 date-time.
statusenumactiveendedcancelledcreatedAtdate-timeISO 8601 date-time.
Errors
400invalid: something in the request is wrong. The message says what.401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12/availability" \
-H "Authorization: Bearer wc_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "2026-11-05T00:00:00+01:00",
"to": "2026-11-30T23:59:00+01:00"
}'/fleet/vehicles/{id}/availability/{windowId}Close a rental period
Refused (409) while a customer has booked inside it.
Path parameters
idintegerrequiredThe car’s id.
Example:
12windowIdintegerrequiredThe period’s id.
Example:
7
Response 200
In data:
idintegerfromdate-timeISO 8601 date-time.
todate-timeISO 8601 date-time.
statusenumactiveendedcancelledcreatedAtdate-timeISO 8601 date-time.
Errors
401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.409conflict or unavailable: not possible in the current state, or the car was just taken.
curl -X DELETE "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12/availability/7" \
-H "Authorization: Bearer wc_test_YOUR_KEY"Path parameters
idintegerrequiredThe car’s id.
Example:
12
Response 200
In data:
idintegerrequiredPass as
listingIdto reserve.vehicleVehiclerequiredShow 15 fields
idintegerrequiredtitlestringrequirede.g. “2021 Toyota Camry”.
makestringmodelstringyearintegerclassenumrequiredeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegercolourstring · nullablephotosarray of stringdailyRateintegerrequiredPrice per 24 hours.
depositintegerRefundable deposit.
locationobjectrequiredShow 4 fields
idintegercodestringrequirednamestringcitystring
ratingobject · nullableShow 2 fields
averagenumberAverage of 1 to 5 stars, one decimal.
countintegerPublished reviews of this car.
priceintegerrequiredAmount in kobo (₦1 = 100 kobo).
reservationDepositintegerWhat the buyer pays now to hold the car.
mileageKmintegerconditionenumexcellentgoodfairneeds_workaccidentHistoryenumnoneminormajororiginenumnigerian_usedforeign_used_duty_paidnewvinstringChassis number.
descriptionstring · nullablestatusstringreviewNotestring · nullable
Errors
401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.
curl "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12/listing" \
-H "Authorization: Bearer wc_test_YOUR_KEY"/fleet/vehicles/{id}/listingOffer the car for sale
The car must be set to purpose: "sell" first. The listing starts in review. Buyers reserve it through POST /sales/orders, with your keys only.
Path parameters
idintegerrequiredThe car’s id.
Example:
12
Request body · application/json
askingPriceintegerrequiredAt least ₦100,000.
mileageKmintegerrequiredvinstringrequiredChassis number (11–17 characters).
conditionenumexcellentgoodfairneeds_workaccidentHistoryenumnoneminormajororiginenumnigerian_usedforeign_used_duty_paidnewdescriptionstring
Response 201
In data:
idintegerrequiredPass as
listingIdto reserve.vehicleVehiclerequiredShow 15 fields
idintegerrequiredtitlestringrequirede.g. “2021 Toyota Camry”.
makestringmodelstringyearintegerclassenumrequiredeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegercolourstring · nullablephotosarray of stringdailyRateintegerrequiredPrice per 24 hours.
depositintegerRefundable deposit.
locationobjectrequiredShow 4 fields
idintegercodestringrequirednamestringcitystring
ratingobject · nullableShow 2 fields
averagenumberAverage of 1 to 5 stars, one decimal.
countintegerPublished reviews of this car.
priceintegerrequiredAmount in kobo (₦1 = 100 kobo).
reservationDepositintegerWhat the buyer pays now to hold the car.
mileageKmintegerconditionenumexcellentgoodfairneeds_workaccidentHistoryenumnoneminormajororiginenumnigerian_usedforeign_used_duty_paidnewvinstringChassis number.
descriptionstring · nullablestatusstringreviewNotestring · nullable
Errors
400invalid: something in the request is wrong. The message says what.401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.409conflict or unavailable: not possible in the current state, or the car was just taken.
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12/listing" \
-H "Authorization: Bearer wc_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"askingPrice": 150000000,
"mileageKm": 42000,
"vin": "1HGCM82633A123456",
"condition": "good",
"description": "One careful owner"
}'/fleet/vehicles/{id}/listingChange the listing
A changed chassis number sends a live listing back to review; a price change does not.
Path parameters
idintegerrequiredThe car’s id.
Example:
12
Request body · application/json
askingPriceintegerrequiredAt least ₦100,000.
mileageKmintegerrequiredvinstringrequiredChassis number (11–17 characters).
conditionenumexcellentgoodfairneeds_workaccidentHistoryenumnoneminormajororiginenumnigerian_usedforeign_used_duty_paidnewdescriptionstring
Response 200
In data:
idintegerrequiredPass as
listingIdto reserve.vehicleVehiclerequiredShow 15 fields
idintegerrequiredtitlestringrequirede.g. “2021 Toyota Camry”.
makestringmodelstringyearintegerclassenumrequiredeconomysedansuvvanluxurytransmissionenumautomaticmanualfuelenumpetroldieselhybridelectricseatsintegercolourstring · nullablephotosarray of stringdailyRateintegerrequiredPrice per 24 hours.
depositintegerRefundable deposit.
locationobjectrequiredShow 4 fields
idintegercodestringrequirednamestringcitystring
ratingobject · nullableShow 2 fields
averagenumberAverage of 1 to 5 stars, one decimal.
countintegerPublished reviews of this car.
priceintegerrequiredAmount in kobo (₦1 = 100 kobo).
reservationDepositintegerWhat the buyer pays now to hold the car.
mileageKmintegerconditionenumexcellentgoodfairneeds_workaccidentHistoryenumnoneminormajororiginenumnigerian_usedforeign_used_duty_paidnewvinstringChassis number.
descriptionstring · nullablestatusstringreviewNotestring · nullable
Errors
400invalid: something in the request is wrong. The message says what.401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.
curl -X PATCH "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12/listing" \
-H "Authorization: Bearer wc_test_YOUR_KEY"/fleet/vehicles/{id}/listingWithdraw the listing
Not possible once a buyer has reserved the car (409).
Path parameters
idintegerrequiredThe car’s id.
Example:
12
Response 200
In data:
withdrawnboolean
Errors
401unauthorized: the API key is missing, wrong or revoked.403forbidden: this key may not do that (wrong plan, not a business, or the account is not approved).404not_found: no such thing, or it is not yours.409conflict or unavailable: not possible in the current state, or the car was just taken.
curl -X DELETE "https://engine-production-0004.up.railway.app/api/v1/fleet/vehicles/12/listing" \
-H "Authorization: Bearer wc_test_YOUR_KEY"