Skip to content

Get started with the Conciar API ​

Conciar has two APIs. Use them to build your own customer app, a website backend or an integration on top of your Conciar account.

APIWhat it's forKeyBase URL
Connect APILocations, the restaurant menu and takeaway orders, customer sign-in and loyalty, the webshop catalogue, cart, checkout and subscriptions.Yeshttps://api.conciar.com/connect/v1
Public booking APITable reservations: availability, booking (with a deposit or card guarantee), the guest's own reservation, ticketed events and gift cards.Nohttps://api.conciar.com/public/v1

The public booking API needs no key. You address a restaurant by its guid. If you only want reservations on a website, you don't have to build anything: embed the booking widget.

1. Create an API key ​

  1. Sign in to my.conciar.com as an admin or manager.
  2. Open Management → API Keys and click New API Key.
  3. Enter a Key Name, for example "Customer app", and click Create Key.
  4. Copy both parts of the key right away: the publishable key (pk_…) and the secret key (cnct_…). They are shown only once.

The difference between the two parts, and how to keep them safe, is on API keys and authentication.

2. Find your sales channel token ​

Each location or shop you sell through is a sales channel. Calls to /store/… and /app/init need the channel's token (cnct_ch_…) in the X-Sales-Channel header. The channel decides the menu or catalogue, prices, currency, language and payment methods.

You can find the token in two places:

  • in my.conciar.com under Settings → Sales channels, as Channel token;
  • in the response of GET /locations, as sales_channel_token.

3. Make your first request ​

List your locations with the publishable key:

bash
curl "https://api.conciar.com/connect/v1/locations" \
  -H "Accept: application/json" \
  -H "X-Api-Key: pk_your_publishable_key"

Response (shortened):

json
{
  "data": {
    "timezone": "Europe/Amsterdam",
    "locations": [
      {
        "sales_channel_token": "cnct_ch_your_channel_token",
        "name": "Bistro Example",
        "is_test": false,
        "address": "Example Street 1, 1000 AA Example City",
        "is_open_now": true
      }
    ]
  }
}

GET /locations lists your active sales channels. Delivery platform channels, such as Uber Eats, aren't in the list.

Request headers ​

HeaderWhenValue
X-Api-KeyEvery Connect callYour publishable (pk_…) or secret (cnct_…) key.
X-Sales-ChannelEvery /store/… call and /app/initThe channel token (cnct_ch_…).
Accept-LanguageOptionalFor example nl or zh-TW. Defaults to the channel's language.
X-CurrencyOptionalDefaults to the channel's currency. An unknown value is ignored.
AuthorizationCalls for a signed-in customerBearer <access_token> from /auth/otp/verify.
Idempotency-KeyOptional, when placing a restaurant order1–64 characters. A retry with the same key returns the first order.
X-Order-TokenA guest reading, paying or cancelling a restaurant orderThe order_token you got when placing it.

Signed-in customers ​

Customers sign in with a 6-digit code sent by email:

  1. POST /auth/otp/request sends the code.
  2. POST /auth/otp/verify checks it and returns an access_token. The token is valid for 6 months.

Send the token as Authorization: Bearer … next to the API key. The /store/customer/… endpoints require it. On restaurant orders it's optional: with it, the order belongs to the customer and earns loyalty stamps and points.

No code: the booking widget ​

To take table reservations on your website, paste this where the booking form should appear. Replace the guid with your restaurant's; you'll find the full snippet in my.conciar.com under Settings → Restaurant.

html
<div class="conciar-widget"
     data-widget-type="restaurant-reservation"
     data-guid="YOUR_RESTAURANT_GUID"
     data-lang="auto"></div>
<script src="https://widget.conciar.com/conciar-widget.iife.js" defer></script>

data-lang takes a language code such as en or nl, or auto for the visitor's browser language.

Next steps ​