Rajapinta ja integraatiot
REST API v1, webhookit sekä Zapier ja Make.
Yleistä
Calendon julkinen REST-rajapinta on Pro-paketin ominaisuus. Sillä voit hakea varauksia, tapaamistyyppejä ja vapaita aikoja sekä luoda ja perua varauksia omasta järjestelmästäsi, Zapierista tai Makesta.
Kaikki vastaukset ovat JSONia ja ajat ISO 8601 -muodossa UTC-aikana (esim. 2026-10-05T11:00:00.000Z). Koneluettava kuvaus: /api/v1/openapi.json (OpenAPI 3.1).
Rajapinnan kautta tehty varaus noudattaa samoja sääntöjä kuin hallintapaneelista lisätty varaus: aika tarkistetaan saatavuudesta ja kalentereista, kapasiteetti ja pitäjä huomioidaan, kalenterimerkintä ja vahvistusviesti luodaan, ja webhookit lähtevät. Ennakkomaksua ei peritä (kuten hallintapaneelin omissa varauksissa).
Tunnistus ja API-avaimet
- Kirjaudu Calendoon ja avaa Asetukset → Integraatiot → Rajapinta (API) ja Zapier / Make.
- Anna avaimelle nimi (esim. "Zapier") ja valitse Luo API-avain.
- Kopioi avain heti. Se näytetään vain kerran; Calendo tallentaa siitä vain tiivisteen.
Lähetä avain jokaisessa pyynnössä otsakkeessa:
Authorization: Bearer cal_live_…Avain antaa pääsyn vain sen tilin tietoihin, jossa se luotiin. Poista avain samasta näkymästä, jos se on päätynyt vääriin käsiin: se lakkaa toimimasta heti. Jos tilin paketti vaihtuu pienempään kuin Pro, avaimet eivät toimi ennen kuin Pro on taas voimassa.
Pyyntörajat
Avainta kohden enintään 120 pyyntöä minuutissa ja 3000 tunnissa. Vastauksen otsakkeet X-RateLimit-Limit ja X-RateLimit-Remaining kertovat tilanteen. Rajan ylittyessä vastaus on 429 ja otsake Retry-After kertoo, montako sekuntia odottaa.
Päätepisteet
| Metodi | Polku | Kuvaus |
|---|---|---|
| GET | /api/v1/me | Avaimen tili |
| GET | /api/v1/event-types | Tapaamistyypit |
| GET | /api/v1/availability | Vapaat ajat |
| GET | /api/v1/bookings | Varaukset |
| POST | /api/v1/bookings | Luo varaus |
| GET | /api/v1/bookings/{id} | Yksittäinen varaus |
| POST | /api/v1/bookings/{id}/cancel | Peru varaus |
Esimerkit
Varaukset aikaväliltä
curl -H "Authorization: Bearer $CALENDO_KEY" \
"https://calendo.fi/api/v1/bookings?from=2026-10-01&to=2026-11-01&status=confirmed"Vapaat ajat seuraavalle viikolle
curl -H "Authorization: Bearer $CALENDO_KEY" \
"https://calendo.fi/api/v1/availability?eventType=konsultaatio&from=2026-10-05&days=7"Varauksen luonti
curl -X POST -H "Authorization: Bearer $CALENDO_KEY" -H "Content-Type: application/json" \
-d '{"eventType":"konsultaatio","startsAt":"2026-10-05T11:00:00Z","name":"Maija Meikäläinen","email":"maija@example.com","phone":"+358401234567","notes":"Tuli verkkokaupasta"}' \
https://calendo.fi/api/v1/bookingsAloitusaika on oltava jokin /availability-vastauksen vapaista ajoista; muuten vastaus on 409.
Varauksen peruutus
curl -X POST -H "Authorization: Bearer $CALENDO_KEY" https://calendo.fi/api/v1/bookings/123/cancelPeruutus palauttaa mahdollisen ennakkomaksun kokonaan, poistaa kalenterimerkinnän ja lähettää asiakkaalle peruutusviestin.
Virheet
Virhevastauksen muoto on aina sama:
{ "error": { "code": "conflict", "message": "Aika ei ole enää vapaana. Valitse toinen aika." } }400 invalid_request– puuttuva tai virheellinen kenttä401 unauthorized– avain puuttuu, on virheellinen tai poistettu403 plan_required– tili ei ole Pro-paketissa404 not_found– varausta tai tapaamistyyppiä ei ole tällä tilillä409 conflict– aika ei ole vapaana tai paikat ovat täynnä429 rate_limited– pyyntöraja ylittyi
Webhookit (tapahtumat)
Calendo voi lähettää tiedon uusista (booking.created), perutuista (booking.cancelled) ja siirretyistä (booking.rescheduled) varauksista antamaasi osoitteeseen. Webhookit lisätään kohdassa Asetukset → Integraatiot → Webhookit ja Zapier (Kasvu ja Pro).
Runko on JSON: { "event": "booking.created", "createdAt": "…", "data": { …varaus… } }, jossa varaus on samassa muodossa kuin rajapinnan Booking. Jokainen pyyntö on allekirjoitettu otsakkeella Calendo-Signature: t=<unix-aika>,v1=<HMAC-SHA256>, jossa HMAC lasketaan webhookin salaisuudella merkkijonosta <t>.<runko>. Epäonnistunut toimitus yritetään uudelleen 1, 5 ja 30 minuutin sekä 2 ja 12 tunnin kuluttua.
Zapier
Zapierin yhdistämiseen riittävät Zapierin omat "Webhooks by Zapier" -toiminnot; erillistä Calendo-sovellusta ei tarvita. Huom. Webhooks by Zapier on Zapierin premium-sovellus, joka vaatii maksullisen Zapier-paketin.
Käynnistin: uusi, peruttu tai siirretty varaus
- Luo Zapissa käynnistin Webhooks by Zapier → Catch Hook ja kopioi sen osoite.
- Calendossa: Asetukset → Integraatiot → Webhookit ja Zapier, liitä osoite ja valitse tapahtumat.
- Paina Calendossa Lähetä testi yhteyden tarkistamiseksi. Tee sitten yksi oikea varaus (testivaraukset eivät lähetä webhookeja) ja hae se näytteeksi Zapierissa.
- Varauksen tiedot (asiakas, aika, palvelu, hallintalinkki) näkyvät Zapierissa valittavina kenttinä seuraavissa vaiheissa.
Toiminto: luo tai peru varaus, hae varauksia
- Lisää toiminto Webhooks by Zapier → Custom Request.
- Method
POST, URLhttps://calendo.fi/api/v1/bookings, Data esim.{"eventType":"konsultaatio","startsAt":"…","name":"…","email":"…"}. - Headers:
Authorization=Bearer cal_live_…jaContent-Type=application/json. - Peruutus: Method
POST, URLhttps://calendo.fi/api/v1/bookings/ID/cancel.
Oma Calendo-sovellus Zapierin sovellushakemistoon (valmiit "Calendo"-käynnistimet ja -toiminnot ilman Webhooks by Zapieria) vaatii sovelluksen rakentamisen Zapierin kehittäjäalustalla ja Zapierin oman tarkastus- ja julkaisuprosessin. Sitä ei ole vielä tehty. Rajapinta ja OpenAPI-kuvaus riittävät sen pohjaksi.
Make (entinen Integromat)
- Käynnistin: lisää skenaarioon Webhooks → Custom webhook, kopioi osoite ja lisää se Calendoon kohdassa Asetukset → Integraatiot → Webhookit ja Zapier. Tee sen jälkeen yksi varaus (esim. itsellesi ja peru se), jotta Make tunnistaa varauksen tietorakenteen. Testivaraukset eivät lähetä webhookeja.
- Toiminto: lisää HTTP → Make a request. URL esim.
https://calendo.fi/api/v1/bookings, MethodPOST, HeadersAuthorization: Bearer cal_live_…, Body type Raw, Content type JSON, ja runko kuten yllä. Valitse Parse response. - Varausten haku: Method
GET, URLhttps://calendo.fi/api/v1/bookings?from=…&sort=-createdAt.
Makeen voi rakentaa myös oman Calendo-sovelluksen (Custom app). Julkiseksi Maken sovellushakemistoon se tulisi vasta Maken tarkastuksen jälkeen.