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 rates in GET /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

The fleet endpoints need a 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).

statusMeaning
pending_reviewWaiting for our team.
approvedCan be booked or sold through your keys.
rejectedNeeds a fix: read reviewNote.
suspendedTaken 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: deleted is 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"
}'