Guides
Run your own fleet
Already have cars? Use our engine as your booking system: availability, pricing, payments, bookings and the airport hand-over, driven from your own software.
How it works
- Your cars are yours: only your API keys can rent or sell them. They are never offered to other businesses or on our own site.
- You keep almost everything: our software fee is small (see
ratesinGET /me; typically 3% of rentals and 1% of sales). - You manage cars yourself, in your dashboard or with the endpoints below. Our team checks the papers once, before a car can be booked.
Your plan
fleet or both plan (GET /me → capabilities.ownFleet). On any other plan they answer 403.1. Add a car
Prices are in kobo and must be whole naira. The plate is unique across the platform. The car starts pending_review.
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
}'2. Photos and papers
Upload clear photos (JPEG, PNG or WebP up to 10 MB; up to 12 per car; the first is the main one) and the car’s insurance and registration (a photo or PDF). Papers are private: only our team and you can see them.
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"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"3. Review
Our team checks every new car’s papers. Until it is approved, nobody can book it. Poll GET /fleet/vehicles/{id}, or read status and reviewNote (why a car was rejected and what is missing: fix it and it goes back to review).
| status | Meaning |
|---|---|
pending_review | Waiting for our team. |
approved | Can be booked or sold through your keys. |
rejected | Needs a fix: read reviewNote. |
suspended | Taken offline by our team. |
4. Open rental periods
A car can be booked only inside the periods you open. Open one for each stretch the car is on offer; close it again when you need the car back. Periods of one car cannot overlap, and one cannot be closed while a customer has booked inside it.
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"
}'5. Rent it out
Once approved and with an open period, your car appears in GET /rentals/vehicles for your keys only, next to the owners’ cars if you also have a marketplace plan. From here it is exactly the marketplace flow: quote, book, pay, hand over. Your own cars’ bookings arrive in the same lists, events and webhooks.
Changing and removing
- Price or colour:
PATCH /fleet/vehicles/{id}. The car stays live. - What the car is (make, model, year, plate): the car goes back to review, because the papers must match.
- Delete it:
DELETE /fleet/vehicles/{id}does what “Delete this car” does in your dashboard. It is refused (409) while a rental is booked or a buyer has reserved the car. A car that never had a booking is erased; a car with history is hidden everywhere but its record is kept, because past bookings and earnings refer to it. The answer says which:deletedis true when it was erased.
Selling a car
A car is either rented out or for sale, never both. Switch it with PATCH … { "purpose": "sell" } (refused while a rental is under way), then create its listing. The listing is reviewed; once live, buyers reserve it through the sales flow with your keys.
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"
}'