List bookings

GET/api/v1/bookings
Scope: bookings:read

Bookings in the organization, newest first. Requires the "bookings:read" scope.

Query parameters#

FieldTypeDescription
limit
integermin 1 · max 100 · default 25

How many results to return, 1-100. Defaults to 25.

order
stringdefault "desc"

Sort by creation time: "desc" (newest first, default) or "asc".

"asc""desc"
starting_after
string≥ 1 chars

The next_cursor from a previous page. Opaque — pass it back verbatim.

status
string

Only bookings with this status.

"pending""confirmed""cancelled"
experience_id
stringuuid

Only bookings on this experience (UUID).

departure_from
string

Only bookings whose departure is on or after this date (YYYY-MM-DD). The window to "departure_to" may not exceed 92 days; when "departure_to" is omitted it defaults to 92 days after this date.

departure_to
string

Only bookings whose departure is on or before this date (YYYY-MM-DD). When "departure_from" is omitted it defaults to 92 days before this date. The window may not exceed 92 days.

updated_since
string

Only bookings changed at or after this ISO 8601 timestamp.

Example request#

bash

curl -X GET "https://your-site.awrora.app/api/v1/bookings" \
  -H "Authorization: Bearer $AWRORA_API_KEY"

Responses#

  • 200A page of bookings.
  • 400Invalid request — codes "validation_failed" or, on an endpoint that requires one, "idempotency_key_required".
  • 401Missing, invalid, revoked or expired API key — codes "api_key_missing", "api_key_invalid", "api_key_revoked", "api_key_expired".
  • 403The API app is off, the plan does not include the API, or the key lacks the required scope — codes "app_not_enabled", "plan_upgrade_required", "insufficient_scope" (the last carries "required_scope").
  • 429Rate limit exceeded — code "rate_limited". See the x-ratelimit-* headers.
  • 500Something went wrong on our side — code "internal_error".

Response 200

FieldTypeDescription
datarequired
object[]

The page of results, in the requested order.

has_morerequired
boolean

True when more results exist after this page. Fetch them with next_cursor.

next_cursorrequired
string | null

Pass this back as ?starting_after= to fetch the next page. Null when has_more is false. Opaque — do not parse it.

200 response

{
  "data": [
    {
      "id": "res_8f2k3n",
      "booking_number": -9007199254740991,
      "status": "pending",
      "source": "string",
      "created_at": "string",
      "updated_at": "string",
      "experience": {
        "id": "res_8f2k3n",
        "title": "string",
        "slug": "string"
      },
      "departure": {
        "id": "res_8f2k3n",
        "starts_at": "string",
        "ends_at": "string"
      },
      "customer": {
        "name": "string",
        "email": "anna@example.com",
        "phone": "string"
      },
      "guests": [
        {
          "tier_id": "tier_8f2k3n",
          "tier_label": "string",
          "count": -9007199254740991,
          "unit_price": {
            "amount_minor": null,
            "currency": null
          }
        }
      ],
      "add_ons": [
        {
          "id": "res_8f2k3n",
          "label": "string",
          "count": -9007199254740991,
          "unit_price": {
            "amount_minor": null,
            "currency": null
          }
        }
      ],
      "totals": {
        "subtotal": {
          "amount_minor": -9007199254740991,
          "currency": "SEK"
        },
        "discount": {
          "amount_minor": -9007199254740991,
          "currency": "SEK"
        },
        "gift_card": {
          "amount_minor": -9007199254740991,
          "currency": "SEK"
        },
        "total": {
          "amount_minor": -9007199254740991,
          "currency": "SEK"
        }
      },
      "payment": {
        "method": "string",
        "source": "stripe",
        "status": "paid"
      },
      "note": "string",
      "manage_url": "https://example.com/webhooks/awrora"
    }
  ],
  "has_more": true,
  "next_cursor": "string"
}