Разработчики,разработчики,разработчики!
В API есть все, что умеет Makeplans: REST и JSON, вебхуки на каждое изменение и MCP-сервер для ИИ-ассистентов.
- 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"
}
}
Запуск за несколько минут
Получите API-ключ
Включите API в разделе «Настройка → Интеграции → API» и скопируйте ключ.
Отправьте первый запрос
Передавайте ключ как Bearer-токен. У каждого объекта свой эндпоинт, все в формате JSON.
Следите за изменениями
Добавьте вебхук, и мы будем отправлять POST-запрос на ваш сервер при изменении бронирований, мероприятий или клиентов.
Два API
Публичный API
Ключ не нужен. Показывайте услуги и свободное время и начинайте бронирование прямо на своем сайте.
https://youraccount.makeplans.com/
Приватный API
Полный доступ к учетной записи по API-ключу — для вашего бэкенда и интеграций. Не размещайте ключ в общедоступном коде.
https://youraccount.makeplans.com/api/v1/
Интегрируйте Makeplans со своим внутренним приложением или сайтом
Все функции Makeplans доступны через API. Это REST API с JSON. Мы также можем отправлять вебхуки.
Подключите своего ИИ-ассистента (MCP)
У Makeplans есть MCP-сервер, чтобы ИИ-ассистенты, такие как Claude и ChatGPT, могли работать с вашими бронированиями. Попросите ассистента проверить свободное время, найти клиента, создать или отменить бронирование — под вашей учетной записью Makeplans.
MCP (Model Context Protocol) — открытый стандарт. Подключиться может любой ассистент или агент с поддержкой MCP — без закрытых плагинов и привязки к поставщику, как и во всем, что мы делаем.
Инструменты для вашего ассистента
find_available_slotslist_serviceslist_eventslist_bookingsget_bookingfind_customercreate_bookingcancel_booking
Подключите Claude Code одной строкой
claude mcp add --transport http makeplans \ https://youraccount.makeplans.com/api/mcp \ --header "Authorization: Bearer $MAKEPLANS_API_KEY"
Подробнее о нашем ИИ-ассистенте для бронирования.
Вебхуки на каждое изменение
Когда бронирование создано, подтверждено, перенесено или отменено, мы отправляем POST-запрос на ваш сервер с подписью HMAC SHA-256 — так вы знаете, что он пришел от нас. Его могут принимать и Zapier с Make.
Настройка стандартного сайта бронирования
Стандартный сайт бронирования можно настроить с помощью собственного CSS. Кроме того, можно настроить формы и все исходящие сообщения с помощью языка шаблонов Liquid.
// Нажмите на значение, чтобы изменить его
Встроенные интеграции
В Makeplans уже встроено множество интеграций. Подробности — на нашей странице интеграций. Помимо прямых интеграций мы работаем с платформами Zapier и Make, которые позволяют подключать другие приложения без программирования.
Экспорт данных
Бронирования, клиентов и мероприятия можно в любой момент скачать в формате CSV.
Ленты iCalendar
Чтобы показывать бронирования из Makeplans в других календарях, мы предлагаем ленту iCalendar. Она работает с Google Calendar, календарями в macOS и iOS, Android, Outlook и другими приложениями-календарями.
Изучите документацию
Нашу документацию по API вы найдете на developer.makeplans.com.