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
La referencia de la API está en inglés.
List events
Ticketed events that are on sale or not on sale yet.
Límite de peticiones: 120/min per restaurant and IP
Parámetros de ruta
organization_guidstringobligatorioThe restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).
Parámetros de consulta
langstringen, nl, de, fr or es. Falls back to Accept-Language, then the restaurant's language, then en.
Códigos de estado
404NOT_FOUND — unknown restaurant, or not a restaurant.
Conviene saber
- 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"{
"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
Límite de peticiones: 120/min per restaurant and IP
Parámetros de ruta
organization_guidstringobligatorioThe restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).
eventintegerobligatorioEvent id.
Parámetros de consulta
langstringen, nl, de, fr or es. Falls back to Accept-Language, then the restaurant's language, then en.
Códigos de estado
404NOT_FOUND — unknown restaurant, or no published ticketed event with this id.
Conviene saber
- 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"{
"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
Límite de peticiones: 120/min per restaurant and IP
Parámetros de ruta
organization_guidstringobligatorioThe restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).
eventintegerobligatorioEvent id.
Parámetros de consulta
party_sizeintegerobligatorio1–20.
Códigos de estado
404NOT_FOUND.422INVALID.
Conviene saber
- 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"{
"status": true,
"dates": [
{
"date": "2026-10-30",
"status": "open"
}
]
}Event times and price
Límite de peticiones: 120/min per restaurant and IP
Parámetros de ruta
organization_guidstringobligatorioThe restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).
eventintegerobligatorioEvent id.
Parámetros de consulta
party_sizeintegerobligatorio1–20.
datestringobligatorioY-m-d.
Códigos de estado
404NOT_FOUND.422INVALID.
Conviene saber
- 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"{
"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.
Límite de peticiones: 10/min per restaurant and IP
Parámetros de ruta
organization_guidstringobligatorioThe restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).
eventintegerobligatorioEvent id.
Cuerpo
request_idstringobligatorioYour idempotency id, 8–64 letters, digits or dashes (a UUID works). Sending the same id again returns the first result with replayed: true.
party_sizeintegerobligatorioNumber of guests: 1 up to booking.max_party (table bookings) or 1–20 (tickets).
datestringobligatorioY-m-d.
timestringobligatorioH:i, one of the times returned by the times endpoint.
first_namestringobligatorioMax 80 characters.
last_namestringobligatorioMax 80 characters.
emailstringobligatorioAn email address, max 190 characters.
phone_country_idintegerobligatorioA country id from GET /countries.
phonestringobligatorio6–25 characters: digits, spaces and + ( ) . -
notestringMax 500 characters.
marketing_opt_inbooleanThe guest agrees to receive marketing.
sourcestringbooking_page (default) or widget.
langstringen, nl, de, fr or es — the language of the emails.
return_urlstringhttp(s) URL, max 2000. Where the guest lands after paying; without it they land on the reservation page in the Conciar guest app.
Códigos de estado
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"
}'{
"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
Límite de peticiones: 120/min per restaurant and IP
Parámetros de ruta
organization_guidstringobligatorioThe restaurant's guid or its handle (any case, a leading @ is ignored; former handles still resolve).
tokenstringobligatorioThe 40-character confirmation token from manage_url (letters and digits).
Códigos de estado
404NOT_FOUND.
Conviene saber
- 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"{
"status": true,
"tickets": {
"reference": "EXAMPLE-T-0001",
"quantity": 2,
"event": "Example wine dinner",
"total": "€ 130,00",
"status": "paid"
},
"payment_url": null
}