Get started
Quickstart
Six calls from nothing to a confirmed booking, all in the sandbox. No real money moves and no real car is blocked.
1. Get a test key
Create a business account, then open API keys in your dashboard and create a test key. It starts with wc_test_ and works straight away, even before we have approved your business. Keep it on your server: it must never appear in a browser or a mobile app.
export WACA_KEY="wc_test_…"2. Check it works
Ask the API who you are. You get your business, your plan and what this key may do.
curl "https://engine-production-0004.up.railway.app/api/v1/me" \
-H "Authorization: Bearer wc_test_YOUR_KEY"3. Find a car
Search the cars that are free for your customer’s dates. Each car comes with an exact price quote. Times are Nigerian time (UTC+1): send the offset.
curl "https://engine-production-0004.up.railway.app/api/v1/rentals/vehicles?location=ABV&from=2026-11-20T10%3A00%3A00%2B01%3A00&to=2026-11-23T10%3A00%3A00%2B01%3A00&extras=gps%2Cchild_seat" \
-H "Authorization: Bearer wc_test_YOUR_KEY"Nothing came back?
include_unavailable=true to see why a car is not free.4. Create a booking
Book the car you picked. We hold it for about 20 minutes and return a checkoutUrl: send your customer there to pay. Add an Idempotency-Key so a retry can never create a second booking.
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/rentals/bookings" \
-H "Authorization: Bearer wc_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6b2f7c3e-6f0a-4a3e-9d1c-1c2b6f1a9e55" \
-d '{
"vehicleId": 12,
"from": "2026-11-20T10:00:00+01:00",
"to": "2026-11-23T10:00:00+01:00",
"pickupLocation": "ABV",
"dropoffLocation": "ABV",
"extras": [
"gps"
],
"customer": {
"name": "Chidi Obi",
"email": "chidi@example.com",
"phone": "+2348031234567",
"licenseNumber": "ABC12345",
"licenseExpiry": "2029-05-01T00:00:00+01:00"
},
"flightNumber": "W3123",
"metadata": {
"order_id": "A-1001"
},
"returnUrl": "https://shop.example/booking"
}'Note the reference in the answer (for example WC-7KQ2M9XA).
5. Pay in the sandbox
In real life the customer pays at the checkout link and the booking confirms by itself. In the sandbox you can play that part:
curl -X POST "https://engine-production-0004.up.railway.app/api/v1/sandbox/bookings/WC-7KQ2M9XA/pay" \
-H "Authorization: Bearer wc_test_YOUR_KEY"The booking is now confirmed. Call the same endpoint with activate (the customer collects the car) and complete (the car is back) to move it on.
6. Follow what happens
Every step raised an event. Read them, newest first, with no setup:
curl "https://engine-production-0004.up.railway.app/api/v1/events" \
-H "Authorization: Bearer wc_test_YOUR_KEY"Or have us push them to your server as signed webhooks, which is what you will want in production.
Where next
- Read Conventions: money is in kobo, lists are paged, and writes are idempotent.
- Follow the guide for what you are building: a marketplace, your own fleet or car sales.
- Set up webhooks and verify their signature.
- Work through the go-live checklist.