Desenvolvedores,desenvolvedores,desenvolvedores!
Tudo o que existe no Makeplans está na API: REST e JSON, webhooks para cada alteração e um servidor MCP para assistentes de IA.
- 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"
}
}
Funcionando em poucos minutos
Pegue sua chave de API
Ative a API em Configuração → Integrações → API e copie sua chave.
Faça sua primeira requisição
Envie a chave como Bearer token. Cada objeto tem seu próprio endpoint, tudo em JSON.
Acompanhe as alterações
Adicione um webhook e enviamos um POST ao seu servidor quando agendamentos, eventos ou clientes mudarem.
Duas APIs
API pública
Não precisa de chave. Mostre serviços e horários disponíveis e inicie um agendamento direto no seu site.
https://youraccount.makeplans.com/
API privada
Acesso total à sua conta com uma chave de API, para o seu backend e suas integrações. Mantenha a chave fora de código público.
https://youraccount.makeplans.com/api/v1/
Integre o Makeplans ao seu sistema interno ou ao seu site
Todas as funcionalidades do Makeplans estão disponíveis pela API. É uma API REST com JSON. Também podemos enviar webhooks.
Conecte seu assistente de IA (MCP)
O Makeplans oferece um servidor MCP para que assistentes de IA como Claude e ChatGPT possam trabalhar com os seus agendamentos. Peça ao seu assistente para consultar a disponibilidade, procurar um cliente ou criar e cancelar agendamentos — usando suas próprias credenciais do Makeplans.
O MCP (Model Context Protocol) é um padrão aberto. Qualquer assistente ou agente compatível com MCP pode se conectar — sem plugin proprietário, sem ficar preso a um fornecedor, do mesmo jeito que construímos todo o resto.
Ferramentas que seu assistente recebe
find_available_slotslist_serviceslist_eventslist_bookingsget_bookingfind_customercreate_bookingcancel_booking
Conecte o Claude Code em uma linha
claude mcp add --transport http makeplans \ https://youraccount.makeplans.com/api/mcp \ --header "Authorization: Bearer $MAKEPLANS_API_KEY"
Saiba mais sobre nosso assistente de agendamento com IA.
Webhooks para cada alteração
Quando um agendamento é criado, confirmado, remarcado ou cancelado, enviamos um POST ao seu servidor, assinado com HMAC SHA-256, para você saber que veio de nós. Zapier e Make também podem receber esses eventos.
Personalização do site de agendamento padrão
É possível personalizar o site de agendamento padrão com um CSS próprio. Além disso, você pode personalizar os formulários e todas as mensagens enviadas usando a linguagem de templates Liquid.
// Clique em um valor para alterá-lo
Integrações nativas
O Makeplans já vem com várias integrações nativas. Veja nossa página de integrações para saber mais. Além das integrações diretas, também nos integramos às plataformas Zapier e Make, que permitem conectar outros aplicativos sem programar.
Exportação de dados
Oferecemos a exportação de agendamentos, clientes e eventos em formato CSV, fácil de baixar.
Feeds iCalendar
Para mostrar os agendamentos do Makeplans em outros aplicativos de calendário, oferecemos um feed iCalendar que pode ser usado no Google Calendar, no Calendário do macOS e do iOS, no Android, no Outlook e em outros aplicativos de calendário.
Mergulhe na documentação
Você encontra nossa documentação da API em developer.makeplans.com.