跳至內容

Ticketed events ​

Public booking API · https://api.conciar.com/public/v1

Special events sold with tickets, paid in full when booked (held 30 minutes).

INFO

API 參考文件以英文撰寫。

List events ​

Ticketed events that are on sale or not on sale yet.

GET/public/v1/restaurants/{organization_guid}/events
不需金鑰

速率限制: 120/min per restaurant and IP

路徑參數

  • organization_guidstring必填

    The restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).

查詢參數

  • langstring

    en, nl, de, fr or es. Falls back to Accept-Language, then the restaurant's language, then en.

狀態碼

  • 404NOT_FOUND — unknown restaurant, or not a restaurant.

注意事項

  • seating is tables or seats; state is not_ticketed, not_started, open or ended; sale_opens is a date text or null; start_time and end_time are null (and start_iso a date) for all-day events.
curl "https://api.conciar.com/public/v1/restaurants/bistro-example/events" \
  -H "Accept: application/json"
回應範例 · 200
{
  "status": true,
  "events": [
    {
      "id": 7,
      "name": "Example wine dinner",
      "description": "Five courses with matching wines.",
      "url": "https://r.conciar.com/bistro-example/events/7-example-wine-dinner?lang=en",
      "slug": "example-wine-dinner",
      "when": "Friday 30 October 2026 · 19:00–23:00",
      "start_date": "2026-10-30",
      "end_date": "2026-10-30",
      "start_time": "19:00",
      "end_time": "23:00",
      "start_iso": "2026-10-30T19:00",
      "seating": "tables",
      "unit": {
        "amount": "65.00",
        "minor": 6500,
        "currency": "EUR"
      },
      "unit_label": "€65.00",
      "vat_rate": 9,
      "max_per_booking": 8,
      "state": "open",
      "remaining": 24,
      "sold_out": false,
      "sale_opens": null
    }
  ]
}

Get an event ​

GET/public/v1/restaurants/{organization_guid}/events/{event}
不需金鑰

速率限制: 120/min per restaurant and IP

路徑參數

  • organization_guidstring必填

    The restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).

  • eventinteger必填

    Event id.

查詢參數

  • langstring

    en, nl, de, fr or es. Falls back to Accept-Language, then the restaurant's language, then en.

狀態碼

  • 404NOT_FOUND — unknown restaurant, or no published ticketed event with this id.

注意事項

  • Ended events are still returned; on_sale is true only while the sale is open and tickets remain.
curl "https://api.conciar.com/public/v1/restaurants/bistro-example/events/7" \
  -H "Accept: application/json"
回應範例 · 200
{
  "status": true,
  "event": {
    "id": 7,
    "name": "Example wine dinner",
    "description": "Five courses with matching wines.",
    "url": "https://r.conciar.com/bistro-example/events/7-example-wine-dinner?lang=en",
    "slug": "example-wine-dinner",
    "when": "Friday 30 October 2026 · 19:00–23:00",
    "start_date": "2026-10-30",
    "end_date": "2026-10-30",
    "start_time": "19:00",
    "end_time": "23:00",
    "start_iso": "2026-10-30T19:00",
    "seating": "tables",
    "unit": {
      "amount": "65.00",
      "minor": 6500,
      "currency": "EUR"
    },
    "unit_label": "€65.00",
    "vat_rate": 9,
    "max_per_booking": 8,
    "state": "open",
    "remaining": 24,
    "sold_out": false,
    "sale_opens": null
  },
  "on_sale": true,
  "max_tickets": 8,
  "hold_minutes": 30,
  "t": {
    "…": "…"
  }
}

Event dates ​

GET/public/v1/restaurants/{organization_guid}/events/{event}/dates
不需金鑰

速率限制: 120/min per restaurant and IP

路徑參數

  • organization_guidstring必填

    The restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).

  • eventinteger必填

    Event id.

查詢參數

  • party_sizeinteger必填

    1–20.

狀態碼

  • 404NOT_FOUND.
  • 422INVALID.

注意事項

  • status is open or full.
curl "https://api.conciar.com/public/v1/restaurants/bistro-example/events/7/dates?party_size=2" \
  -H "Accept: application/json"
回應範例 · 200
{
  "status": true,
  "dates": [
    {
      "date": "2026-10-30",
      "status": "open"
    }
  ]
}

Event times and price ​

GET/public/v1/restaurants/{organization_guid}/events/{event}/times
不需金鑰

速率限制: 120/min per restaurant and IP

路徑參數

  • organization_guidstring必填

    The restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).

  • eventinteger必填

    Event id.

查詢參數

  • party_sizeinteger必填

    1–20.

  • datestring必填

    Y-m-d.

狀態碼

  • 404NOT_FOUND.
  • 422INVALID.

注意事項

  • times is [] when fewer tickets remain than party_size.
curl "https://api.conciar.com/public/v1/restaurants/bistro-example/events/7/times?party_size=2&date=2026-10-30" \
  -H "Accept: application/json"
回應範例 · 200
{
  "status": true,
  "date": "2026-10-30",
  "times": [
    "19:00"
  ],
  "total": {
    "amount": "130.00",
    "minor": 13000,
    "currency": "EUR"
  },
  "tax": {
    "amount": "10.73",
    "minor": 1073,
    "currency": "EUR"
  },
  "vat_rate": 9
}

Buy tickets ​

Books the tickets and returns the payment page; the booking is held for 30 minutes until paid. After paying, the guest lands on your return_url (through an API redirect), or without one on the reservation page.

POST/public/v1/restaurants/{organization_guid}/events/{event}/tickets
不需金鑰

速率限制: 10/min per restaurant and IP

路徑參數

  • organization_guidstring必填

    The restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).

  • eventinteger必填

    Event id.

請求內容

  • request_idstring必填

    Your idempotency id, 8–64 letters, digits or dashes (a UUID works). Sending the same id again returns the first result with replayed: true.

  • party_sizeinteger必填

    Number of guests: 1 up to booking.max_party (table bookings) or 1–20 (tickets).

  • datestring必填

    Y-m-d.

  • timestring必填

    H:i, one of the times returned by the times endpoint.

  • first_namestring必填

    Max 80 characters.

  • last_namestring必填

    Max 80 characters.

  • emailstring必填

    An email address, max 190 characters.

  • phone_country_idinteger必填

    A country id from GET /countries.

  • phonestring必填

    6–25 characters: digits, spaces and + ( ) . -

  • notestring

    Max 500 characters.

  • marketing_opt_inboolean

    The guest agrees to receive marketing.

  • sourcestring

    booking_page (default) or widget.

  • langstring

    en, nl, de, fr or es — the language of the emails.

  • return_urlstring

    http(s) URL, max 2000. Where the guest lands after paying; without it they land on the reservation page in the Conciar guest app.

狀態碼

  • 200Replay of an earlier request_id (replayed: true).
  • 404NOT_FOUND.
  • 409TICKETS_UNAVAILABLE, SALE_CLOSED or SOLD_OUT (with message).
  • 422INVALID, TOO_MANY (more than the event allows per booking) or SLOT_TAKEN.
  • 502PAYMENT_FAILED.
  • 503BUSY.
curl -X POST "https://api.conciar.com/public/v1/restaurants/bistro-example/events/7/tickets" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "request_id": "0b7d4c1e-0000-4000-8000-000000000000",
    "party_size": 2,
    "date": "2026-10-30",
    "time": "19:00",
    "first_name": "Alex",
    "last_name": "Example",
    "email": "alex@example.com",
    "phone_country_id": 150,
    "phone": "+31 6 00000000"
  }'
回應範例 · 201
{
  "status": true,
  "replayed": false,
  "payment_url": "https://payment-provider.example/checkout/…",
  "hold_minutes": 30,
  "manage_url": "https://r.conciar.com/bistro-example/reservation/0000000000000000000000000000000000000000",
  "token": "0000000000000000000000000000000000000000",
  "tickets": {
    "reference": "EXAMPLE-T-0001",
    "quantity": 2,
    "date": "2026-10-30",
    "time": "19:00",
    "status": "pending"
  }
}

A booking's tickets ​

GET/public/v1/restaurants/{organization_guid}/reservations/{token}/tickets
不需金鑰

速率限制: 120/min per restaurant and IP

路徑參數

  • organization_guidstring必填

    The restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).

  • tokenstring必填

    The 40-character confirmation token from manage_url (letters and digits).

狀態碼

  • 404NOT_FOUND.

注意事項

  • tickets.status is pending, paid, cancelled or refunded; payment_url is set only while pending. The token does not expire here.
curl "https://api.conciar.com/public/v1/restaurants/bistro-example/reservations/0000000000000000000000000000000000000000/tickets" \
  -H "Accept: application/json"
回應範例 · 200
{
  "status": true,
  "tickets": {
    "reference": "EXAMPLE-T-0001",
    "quantity": 2,
    "event": "Example wine dinner",
    "total": "€ 130,00",
    "status": "paid"
  },
  "payment_url": null
}