# Programuotojams,programuotojams,programuotojams!

Viskas, ką turi Makeplans, pasiekiama per API: REST ir JSON, webhook pranešimai apie kiekvieną pakeitimą ir MCP serveris DI asistentams.

[Skaityti API dokumentaciją](https://developer.makeplans.com)

- 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"
  }
}
```

## Pradėsite per kelias minutes

### Gaukite API raktą

Įjunkite API skiltyje Nustatymai → Integracijos → API ir nukopijuokite raktą.

### Išsiųskite pirmąją užklausą

Raktą siųskite kaip Bearer žetoną. Kiekvienas objektas turi savo galinį tašką, viskas – JSON formatu.

### Sekite pakeitimus

Pridėkite webhook, ir pasikeitus rezervacijoms, renginiams ar klientams išsiųsime POST užklausą į jūsų serverį.

## Dvi API

### Viešoji API

Rakto nereikia. Rodykite paslaugas ir laisvus laikus bei pradėkite rezervaciją tiesiai savo svetainėje.

`https://youraccount.makeplans.com/`

### Privačioji API

Visa prieiga prie paskyros su API raktu – jūsų serveriui ir integracijoms. Rakto nelaikykite viešame kode.

`https://youraccount.makeplans.com/api/v1/`

## Integruokite Makeplans su savo vidine sistema ar svetaine

Visos Makeplans funkcijos pasiekiamos per API. Tai REST pagrindu veikianti API su JSON. Taip pat galime siųsti webhook pranešimus.

- [Slots](https://developer.makeplans.com/endpoints/slots/)
- [Bookings](https://developer.makeplans.com/endpoints/bookings/)
- [People](https://developer.makeplans.com/endpoints/people/)
- [Services](https://developer.makeplans.com/endpoints/services/)
- [Events](https://developer.makeplans.com/endpoints/events/)
- [Resources](https://developer.makeplans.com/endpoints/resources/)
- [Resource Exception Dates](https://developer.makeplans.com/endpoints/resource-exception-dates/)
- [Providers](https://developer.makeplans.com/endpoints/providers/)
- [Categories](https://developer.makeplans.com/endpoints/categories/)
- [Coupons](https://developer.makeplans.com/endpoints/coupons/)
- [Orders](https://developer.makeplans.com/endpoints/orders/)
- [Gift Cards](https://developer.makeplans.com/endpoints/gift-cards/)
- [Message Templates](https://developer.makeplans.com/endpoints/message-templates/)
- [Webhooks](https://developer.makeplans.com/endpoints/webhooks/)
- [Account](https://developer.makeplans.com/endpoints/account/)
- [Passes](https://developer.makeplans.com/endpoints/passes/)
- [Subscriptions](https://developer.makeplans.com/endpoints/subscriptions/)
- [Visi galiniai taškai](https://developer.makeplans.com/endpoints/)

## Prijunkite savo DI asistentą (MCP)

Makeplans turi MCP serverį, todėl DI asistentai, pavyzdžiui, Claude ir ChatGPT, gali dirbti su jūsų rezervacijomis. Paprašykite asistento patikrinti laisvus laikus, surasti klientą, sukurti ar atšaukti rezervaciją – su jūsų pačių Makeplans prisijungimo duomenimis.

MCP (Model Context Protocol) yra atviras standartas. Prisijungti gali bet kuris asistentas ar agentas, palaikantis MCP – be uždarų papildinių ir be pririšimo. Taip kuriame ir visa kita.

### Įrankiai, kuriuos gauna jūsų asistentas

- `find_available_slots`
- `list_services`
- `list_events`
- `list_bookings`
- `get_booking`
- `find_customer`
- `create_booking`
- `cancel_booking`

### Prijunkite Claude Code viena eilute

```
claude mcp add --transport http makeplans \
  https://youraccount.makeplans.com/api/mcp \
  --header "Authorization: Bearer $MAKEPLANS_API_KEY"
```

Skaitykite daugiau apie mūsų [DI rezervacijų asistentą](/lt/sprendimai/di-rezervaciju-asistentas/).

Užrašyk Anną masažui penktadienį 14:00

Surasiu masažo paslaugą ir paieškosiu Annos.

M`list_services`

```
→{}←[{"id": 42, "title": "Massage", "interval": 60}]
```

M`find_customer`

```
→{"query": "Anna"}←[{"id": 7, "name": "Anna Nordmann"}]
```

M`find_available_slots`

```
→{"service_id": 42, "from": "2026-11-13"}←[{"timestamp": "2026-11-13T14:00:00+01:00", "free": 1}]
```

M`create_booking`

```
→{"service_id": 42, "person_id": 7, "booked_from": "2026-11-13T14:00:00+01:00"}←{"id": 1338, "state": "confirmed"}
```

Užrašyta: Anna Nordmann, masažas penktadienį 14:00. Ji gaus patvirtinimą ir priminimą.

## Webhook pranešimai apie kiekvieną pakeitimą

Kai rezervacija sukuriama, patvirtinama, perkeliama ar atšaukiama, išsiunčiame POST užklausą į jūsų serverį. Ji pasirašyta HMAC SHA-256, tad žinote, kad ją siuntėme mes. Ją gali priimti ir Zapier bei Make.

Mmakeplans

{ }your server

Zapier

Make

POST https://example.com/webhooks

```
X-MakePlans-Signature: sha256=5257a869e7ec…{
  "event": "booking.created",
  "idempotency_id": "evt_4810",
  "generated_at": "2026-11-12T02:37:29Z",
  "performed_by": "customer",
  "data": {
    "object": "booking",
    "id": 1337,
    "booking": { "id": 1337, "state": "confirmed" }
  }
}
```

tail -f webhooks.log

```
02:37:29 POST /webhooks **booking.created** _200 OK_signature ✓
```

## Standartinės rezervavimo svetainės pritaikymas

Standartinę rezervavimo svetainę galima pritaikyti naudojant savo CSS. Be to, pasitelkę Liquid šablonų kalbą galite [pritaikyti formas](https://github.com/makeplans/makeplans-custom-forms) ir visus [siunčiamus pranešimus](https://github.com/makeplans/makeplans-custom-messages).

custom.css

.booking-site {--accent: #2a8c8f;--background: #f1f8f8;--text: #173f44;--soft: #d9ecec;--radius: 14px;--font: "Avenir Next", sans-serif;}

// Spustelėkite reikšmę ir ją pakeiskite

 Jūsų įmonė Jūsų rezervavimo svetainė, jūsų stilius 

**12**** 13 ****14**** 15**

09:0010:3011:0013:0014:3016:00
Rezervuoti

### Paruoštos integracijos

Makeplans jau turi nemažai paruoštų integracijų. Daugiau informacijos rasite [integracijų puslapyje](/lt/integracijos/). Be tiesioginių integracijų, esame susieti ir su integracijų platformomis [Zapier](/lt/integracijos/zapier/) ir [Make](/lt/integracijos/make/), kurios leidžia sujungti Makeplans su kitomis programomis neprogramuojant.

### Duomenų eksportas

Rezervacijas, klientus ir renginius galite lengvai eksportuoti ir atsisiųsti CSV formatu.

### iCalendar sklaidos kanalai

Kad Makeplans rezervacijas matytumėte kitose kalendoriaus programose, siūlome iCalendar sklaidos kanalą. Jį galima naudoti Google Calendar, macOS ir iOS kalendoriuose, Android, Outlook ir kitose kalendoriaus programose.

## Pasinerkite į dokumentaciją

- [Vadovas](https://developer.makeplans.com/guide/getting-started/)
- [API galiniai taškai](https://developer.makeplans.com/endpoints/)
- [Pavyzdžiai](https://developer.makeplans.com/examples/overview/)
- [Pakeitimų žurnalas](https://developer.makeplans.com/changelog/)
- [Partnerių API](https://developer.makeplans.com/partner/)

Mūsų [API dokumentaciją rasite adresu developer.makeplans.com](https://developer.makeplans.com).
