API reference · Events and webhooks
Events
A record of everything that happened, readable by polling.
/eventsList events
What happened to your bookings and sales, newest first, with the same objects a webhook would carry. Works whether or not you have a webhook, so an integration that prefers polling can follow starting_after from the last event it saw. A live key sees live events; a test key sees sandbox events.
Query parameters
typestringOnly this event type.
booking.confirmedbooking.activebooking.completedbooking.cancelledbooking.expiredsale.reservedsale.paidsale.completedsale.cancelledsale.expiredreferencestringOnly events about this booking or order.
starting_afterstringAn event id: return events older than it.
limitintegerEvents per page (1–100). Default 20.
Response 200
A list in data. Each item:
idstringrequiredevt_… The same id a webhook for this event carries.
typeenumrequiredbooking.confirmedbooking.activebooking.completedbooking.cancelledbooking.expiredsale.reservedsale.paidsale.completedsale.cancelledsale.expiredwebhook.testcreatedintegerrequiredUnix seconds.
livemodebooleandataobjectrequiredShow 1 fields
objectBooking | SaleOrderThe booking or order, exactly as the API returns it.
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).
curl "https://engine-production-0004.up.railway.app/api/v1/events" \
-H "Authorization: Bearer wc_test_YOUR_KEY"{
"data": [
{
"id": "evt_3f1c9a2b7d4e5f6a8b0c1d2e",
"type": "booking.confirmed",
"created": 1767200000,
"livemode": true,
"data": {
"object": {
"reference": "WC-7KQ2M9XA",
"status": "pending_payment",
"test": false,
"from": "2026-11-20T09:00:00.000Z",
"to": "2026-11-23T09:00:00.000Z",
"vehicle": {
"id": 12,
"title": "2021 Toyota Camry",
"make": "Toyota",
"model": "Camry",
"year": 2021,
"class": "sedan",
"transmission": "automatic",
"fuel": "petrol",
"seats": 5,
"colour": "Silver",
"photos": [
"https://api.waca.com.ng/api/media/file/camry-1.jpg"
],
"dailyRate": 4500000,
"deposit": 8000000,
"location": {
"id": 1,
"code": "ABV",
"name": "Nnamdi Azikiwe International Airport, Abuja",
"city": "abuja"
}
},
"pickup": {
"code": "ABV",
"name": "Nnamdi Azikiwe International Airport, Abuja",
"instructions": "Meet our agent at the arrivals hall, next to the information desk."
},
"dropoff": {
"code": "ABV",
"name": "Nnamdi Azikiwe International Airport, Abuja"
},
"customer": {
"name": "Chidi Obi",
"email": "chidi@example.com",
"phone": "+2348031234567"
},
"price": {
"currency": "NGN",
"days": 3,
"lines": [
{
"code": "rental",
"label": "Car rental",
"quantity": 3,
"unitAmount": 4500000,
"amount": 13500000
},
{
"code": "gps",
"label": "GPS navigation",
"quantity": 3,
"unitAmount": 150000,
"amount": 450000
}
],
"listSubtotal": 13950000,
"discount": null,
"subtotal": 13950000,
"deposit": 8000000,
"total": 21950000,
"refunded": 0
},
"commission": 2092500,
"flightNumber": "W3123",
"checkedInAt": null,
"arrivalNote": null,
"metadata": {
"order_id": "A-1001"
},
"createdAt": "2026-11-01T12:00:00.000Z",
"holdExpiresAt": "2026-11-01T12:20:00.000Z",
"checkoutUrl": "https://checkout.paystack.com/abc123"
}
}
}
],
"hasMore": false
}Path parameters
idstringrequiredThe event id.
Example:
evt_3f1c9a2b7d4e5f6a8b0c1d2e
Response 200
In data:
idstringrequiredevt_… The same id a webhook for this event carries.
typeenumrequiredbooking.confirmedbooking.activebooking.completedbooking.cancelledbooking.expiredsale.reservedsale.paidsale.completedsale.cancelledsale.expiredwebhook.testcreatedintegerrequiredUnix seconds.
livemodebooleandataobjectrequiredShow 1 fields
objectBooking | SaleOrderThe booking or order, exactly as the API returns it.
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/events/evt_3f1c9a2b7d4e5f6a8b0c1d2e" \
-H "Authorization: Bearer wc_test_YOUR_KEY"