Naar de inhoud

Aan de slag met de Conciar API ​

Conciar heeft twee API's. Gebruik ze om je eigen klantenapp, een websitebackend of een integratie te bouwen bovenop je Conciar-account.

APIWaarvoorSleutelBase URL
Connect APILocaties, het restaurantmenu en afhaalbestellingen, inloggen en loyaliteit voor klanten, de webshopcatalogus, winkelwagen, afrekenen en abonnementen.Jahttps://api.conciar.com/connect/v1
Public booking APITafelreserveringen: beschikbaarheid, reserveren (met een aanbetaling of kaartgarantie), de eigen reservering van de gast, evenementen met tickets en cadeaukaarten.Neehttps://api.conciar.com/public/v1

De public booking API heeft geen sleutel nodig. Je spreekt een restaurant aan via de guid. Wil je alleen reserveringen op een website, dan hoef je niets te bouwen: embed de reserveringswidget.

1. Maak een API-sleutel aan ​

  1. Log in op my.conciar.com als admin of manager.
  2. Open Management → API Keys en klik op New API Key.
  3. Vul een Key Name in, bijvoorbeeld "Klantenapp", en klik op Create Key.
  4. Kopieer meteen beide delen van de sleutel: de publishable key (publieke sleutel, pk_…) en de geheime sleutel (cnct_…). Ze worden maar één keer getoond.

Het verschil tussen de twee delen, en hoe je ze veilig houdt, staat op API-sleutels en authenticatie.

2. Zoek het token van je verkoopkanaal op ​

Elke locatie of winkel waarlangs je verkoopt, is een verkoopkanaal. Calls naar /store/… en /app/init hebben het token van het kanaal (cnct_ch_…) nodig in de header X-Sales-Channel. Het kanaal bepaalt het menu of de catalogus, prijzen, valuta, taal en betaalmethoden.

Je vindt het token op twee plekken:

  • in my.conciar.com onder Settings → Sales channels, als Channel token;
  • in de response van GET /locations, als sales_channel_token.

3. Doe je eerste request ​

Vraag je locaties op met de publishable key:

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

Response (ingekort):

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 geeft je actieve verkoopkanalen. Kanalen van bezorgplatforms, zoals Uber Eats, staan niet in de lijst.

Request-headers ​

HeaderWanneerWaarde
X-Api-KeyElke Connect-callJe publishable key (pk_…) of geheime sleutel (cnct_…).
X-Sales-ChannelElke /store/…-call en /app/initHet kanaaltoken (cnct_ch_…).
Accept-LanguageOptioneelBijvoorbeeld nl of zh-TW. Standaard de taal van het kanaal.
X-CurrencyOptioneelStandaard de valuta van het kanaal. Een onbekende waarde wordt genegeerd.
AuthorizationCalls voor een ingelogde klantBearer <access_token> van /auth/otp/verify.
Idempotency-KeyOptioneel, bij het plaatsen van een restaurantbestelling1–64 tekens. Een nieuwe poging met dezelfde sleutel geeft de eerste bestelling terug.
X-Order-TokenEen gast die een restaurantbestelling bekijkt, betaalt of annuleertHet order_token dat je kreeg bij het plaatsen.

Ingelogde klanten ​

Klanten loggen in met een code van 6 cijfers die per e-mail wordt verstuurd:

  1. POST /auth/otp/request verstuurt de code.
  2. POST /auth/otp/verify controleert de code en geeft een access_token terug. Het token is 6 maanden geldig.

Stuur het token als Authorization: Bearer … mee naast de API-sleutel. De /store/customer/…-endpoints vereisen het. Bij restaurantbestellingen is het optioneel: met het token hoort de bestelling bij de klant en levert ze loyaliteitsstempels en punten op.

Zonder code: de reserveringswidget ​

Om tafelreserveringen op je website aan te nemen, plak je dit op de plek waar het reserveringsformulier moet verschijnen. Vervang de guid door die van je restaurant; het volledige fragment vind je in my.conciar.com onder 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 accepteert een taalcode zoals en of nl, of auto voor de browsertaal van de bezoeker.

Volgende stappen ​