API reference · Events and webhooks

Events

A record of everything that happened, readable by polling.

get/events

List events

Businesses only

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

  • typestring

    Only this event type.

    booking.confirmedbooking.activebooking.completedbooking.cancelledbooking.expiredsale.reservedsale.paidsale.completedsale.cancelledsale.expired

  • referencestring

    Only events about this booking or order.

  • starting_afterstring

    An event id: return events older than it.

  • limitinteger

    Events per page (1–100). Default 20.

Response 200

A list in data. Each item:

  • idstringrequired

    evt_… The same id a webhook for this event carries.

  • typeenumrequired

    booking.confirmedbooking.activebooking.completedbooking.cancelledbooking.expiredsale.reservedsale.paidsale.completedsale.cancelledsale.expiredwebhook.test

  • createdintegerrequired

    Unix seconds.

  • livemodeboolean
  • dataobjectrequired
    Show 1 fields
    • objectBooking | SaleOrder

      The 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"
Response · 200
{
  "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
}
get/events/{id}

Get an event

Businesses only

Path parameters

  • idstringrequired

    The event id.

    Example: evt_3f1c9a2b7d4e5f6a8b0c1d2e

Response 200

In data:

  • idstringrequired

    evt_… The same id a webhook for this event carries.

  • typeenumrequired

    booking.confirmedbooking.activebooking.completedbooking.cancelledbooking.expiredsale.reservedsale.paidsale.completedsale.cancelledsale.expiredwebhook.test

  • createdintegerrequired

    Unix seconds.

  • livemodeboolean
  • dataobjectrequired
    Show 1 fields
    • objectBooking | SaleOrder

      The 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"