Developers,developers,developers!
Alt i Makeplans finnes i API-et: REST og JSON, webhooks for hver endring, og en MCP-server for KI-assistenter.
- REST + JSON
- Webhooks
- MCP
- iCal
- CSV
$ curl https://youraccount.makeplans.com/api/v1/services/42/slots?from=2026-11-19 \ -H 'Authorization: Bearer $MAKEPLANS_API_KEY' \ -H 'User-Agent: MyApp' \ -H 'Accept: application/json' [ { "slot": { "timestamp": "2026-11-19T10:30:00+01:00", "timestamp_end": "2026-11-19T11:30:00+01:00", "free": 1, "available_resources": [1, 2], "maximum_capacity": 2 } }, { "slot": { "timestamp": "2026-11-19T13:00:00+01:00", "timestamp_end": "2026-11-19T14:00:00+01:00", "free": 2, "available_resources": [1, 2], "maximum_capacity": 2 } } ] $ curl https://youraccount.makeplans.com/api/v1/bookings -X POST \ -H 'Authorization: Bearer $MAKEPLANS_API_KEY' \ -H 'User-Agent: MyApp' \ -H 'Accept: application/json' \ -d 'booking[service_id]=42' \ -d 'booking[resource_id]=1' \ -d 'booking[booked_from]=2026-11-19T10:30:00+01:00' \ -d 'booking[booked_to]=2026-11-19T11:30:00+01:00' { "booking": { "id": 1337, "state": "confirmed", "service_id": 42, "resource_id": 1, "booked_from": "2026-11-19T10:30:00+01:00", "booked_to": "2026-11-19T11:30:00+01:00" } }
curl https://youraccount.makeplans.com/api/v1/services/42/slots?from=2026-11-19 \ -H 'Authorization: Bearer $MAKEPLANS_API_KEY' \ -H 'User-Agent: MyApp' \ -H 'Accept: application/json'
[
{
"slot": {
"timestamp": "2026-11-19T10:30:00+01:00",
"timestamp_end": "2026-11-19T11:30:00+01:00",
"free": 1,
"available_resources": [1, 2],
"maximum_capacity": 2
}
},
{
"slot": {
"timestamp": "2026-11-19T13:00:00+01:00",
"timestamp_end": "2026-11-19T14:00:00+01:00",
"free": 2,
"available_resources": [1, 2],
"maximum_capacity": 2
}
}
]
# 10:30 is free. Book it.
curl https://youraccount.makeplans.com/api/v1/bookings -X POST \ -H 'Authorization: Bearer $MAKEPLANS_API_KEY' \ -H 'User-Agent: MyApp' \ -H 'Accept: application/json' \ -d 'booking[service_id]=42' \ -d 'booking[resource_id]=1' \ -d 'booking[booked_from]=2026-11-19T10:30:00+01:00' \ -d 'booking[booked_to]=2026-11-19T11:30:00+01:00'
{
"booking": {
"id": 1337,
"state": "confirmed",
"service_id": 42,
"resource_id": 1,
"booked_from": "2026-11-19T10:30:00+01:00",
"booked_to": "2026-11-19T11:30:00+01:00"
}
}
const api = "https://youraccount.makeplans.com/api/v1";
const headers = {
Authorization: `Bearer ${process.env.MAKEPLANS_API_KEY}`,
"User-Agent": "MyApp",
Accept: "application/json",
};
// Find the first free slot
const slots = await fetch(`${api}/services/42/slots?from=2026-11-19`, { headers })
.then((res) => res.json());
const { slot } = slots.find(({ slot }) => slot.free > 0);
// Book it
const booking = await fetch(`${api}/bookings`, {
method: "POST",
headers,
body: new URLSearchParams({
"booking[service_id]": "42",
"booking[resource_id]": String(slot.available_resources[0]),
"booking[booked_from]": slot.timestamp,
"booking[booked_to]": slot.timestamp_end,
}),
}).then((res) => res.json());
console.log(booking);
{
"booking": {
"id": 1337,
"state": "confirmed",
"service_id": 42,
"resource_id": 1,
"booked_from": "2026-11-19T10:30:00+01:00",
"booked_to": "2026-11-19T11:30:00+01:00"
}
}
require "net/http"
require "json"
API = "https://youraccount.makeplans.com/api/v1"
def makeplans(request)
request["Authorization"] = "Bearer #{ENV.fetch('MAKEPLANS_API_KEY')}"
request["User-Agent"] = "MyApp"
request["Accept"] = "application/json"
uri = request.uri
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(request) }
JSON.parse(response.body)
end
# Find the first free slot
slots = makeplans(Net::HTTP::Get.new(URI("#{API}/services/42/slots?from=2026-11-19")))
slot = slots.map { |s| s["slot"] }.find { |s| s["free"] > 0 }
# Book it
post = Net::HTTP::Post.new(URI("#{API}/bookings"))
post.set_form_data(
"booking[service_id]" => 42,
"booking[resource_id]" => slot["available_resources"].first,
"booking[booked_from]" => slot["timestamp"],
"booking[booked_to]" => slot["timestamp_end"]
)
puts makeplans(post)
{
"booking": {
"id": 1337,
"state": "confirmed",
"service_id": 42,
"resource_id": 1,
"booked_from": "2026-11-19T10:30:00+01:00",
"booked_to": "2026-11-19T11:30:00+01:00"
}
}
import os
import requests
API = "https://youraccount.makeplans.com/api/v1"
session = requests.Session()
session.headers.update({
"Authorization": f"Bearer {os.environ['MAKEPLANS_API_KEY']}",
"User-Agent": "MyApp",
"Accept": "application/json",
})
# Find the first free slot
slots = session.get(f"{API}/services/42/slots", params={"from": "2026-11-19"}).json()
slot = next(s["slot"] for s in slots if s["slot"]["free"] > 0)
# Book it
booking = session.post(f"{API}/bookings", data={
"booking[service_id]": 42,
"booking[resource_id]": slot["available_resources"][0],
"booking[booked_from]": slot["timestamp"],
"booking[booked_to]": slot["timestamp_end"],
}).json()
print(booking)
{
"booking": {
"id": 1337,
"state": "confirmed",
"service_id": 42,
"resource_id": 1,
"booked_from": "2026-11-19T10:30:00+01:00",
"booked_to": "2026-11-19T11:30:00+01:00"
}
}
I gang på få minutter
Hent API-nøkkelen din
Slå på API-et under Oppsett → Integrasjoner → API og kopier nøkkelen.
Gjør din første forespørsel
Send nøkkelen som et Bearer-token. Hvert objekt har sitt eget endepunkt, alt i JSON.
Lytt etter endringer
Legg til en webhook, så sender vi en POST til serveren din når bookinger, arrangementer eller kunder endres.
To API-er
Offentlig API
Ingen nøkkel trengs. Vis tjenester og ledige tider og start en booking rett fra nettsiden din.
https://youraccount.makeplans.com/
Privat API
Full tilgang til kontoen din med en API-nøkkel, for backend og integrasjoner. Hold nøkkelen unna offentlig kode.
https://youraccount.makeplans.com/api/v1/
Integrer Makeplans med dine interne applikasjoner eller egen nettside
Alle funksjoner som er tilgjengelige i Makeplans, er tilgjengelige via API'et. Det er et REST-basert JSON API.
Koble til din AI-assistent (MCP)
Makeplans tilbyr en MCP-server slik at AI-assistenter som Claude og ChatGPT kan jobbe med dine reservasjoner. Be assistenten din om å sjekke ledige tider, slå opp en kunde eller opprette og avbestille reservasjoner — med dine egne Makeplans-påloggingsdetaljer.
MCP (Model Context Protocol) er en åpen standard. Enhver assistent eller agent som støtter MCP kan koble til — ingen proprietær plugin, ingen innlåsing, helt i tråd med hvordan vi bygger alt annet.
Verktøy assistenten din får
find_available_slotslist_serviceslist_eventslist_bookingsget_bookingfind_customercreate_bookingcancel_booking
Koble til Claude Code med én linje
claude mcp add --transport http makeplans \ https://youraccount.makeplans.com/api/mcp \ --header "Authorization: Bearer $MAKEPLANS_API_KEY"
Les mer om vår AI-bookingassistent.
Webhooks for hver endring
Når en booking opprettes, bekreftes, flyttes eller avlyses, sender vi en POST til serveren din, signert med HMAC SHA-256 så du vet at den kommer fra oss. Zapier og Make kan også fange den opp.
Tilpasning av standardbookingsiden
Det er mulig å tilpasse standardbookingsiden med egen CSS. I tillegg er det mulig å tilpasse skjema og alle utgående meldinger med Liquid template language.
// Klikk på en verdi for å endre den
Innebygde integrasjoner
Makeplans har allerede mange innebygde integrasjoner. Se vår integrasjonsside for mer info. I tillegg til våre direkte integrasjoner har vi også en integrasjon med integrasjonsplattformen Zapier som lar deg integrere med andre applikasjoner uten programmering.
Dataeksport
Vi tilbyr eksport av reservasjoner, kunder og arrangementer i CSV-format enkelt tilgjengelig for nedlasting.
iCalendar-strømmer
For å vise avtaler fra Makeplans i andre kalender-applikasjoner så tilbyr vi en iCalendar-feed som kan brukes i Google Calendar, Calendar for MacOS, Calendar for iOS, Android, Outlook, og andre kalender-applikasjoner.
Dykk ned i dokumentasjonen
Du kan finne vår API-dokumentasjon på developer.makeplans.com.