# Zhvillues,zhvillues,zhvillues!

Gjithçka në Makeplans gjendet në API: REST dhe JSON, webhook-ë për çdo ndryshim dhe një server MCP për asistentët AI.

[Lexoni dokumentacionin e API-së](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"
  }
}
```

## Gati për punë brenda pak minutash

### Merrni çelësin e API-së

Aktivizoni API-në te Konfigurimi → Integrimet → API dhe kopjoni çelësin.

### Bëni kërkesën e parë

Dërgojeni çelësin si Bearer token. Çdo objekt ka endpoint-in e vet, të gjitha në JSON.

### Dëgjoni për ndryshime

Shtoni një webhook dhe ne bëjmë POST në serverin tuaj kur ndryshojnë rezervimet, ngjarjet ose klientët.

## Dy API

### API publike

Nuk nevojitet çelës. Shfaqni shërbimet dhe oraret e lira dhe nisni një rezervim drejt e nga faqja juaj e internetit.

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

### API private

Qasje e plotë në llogarinë tuaj me një çelës API, për backend-in dhe integrimet tuaja. Mos e vendosni çelësin në kod publik.

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

## Integroni Makeplans me aplikacionin tuaj të brendshëm ose me faqen tuaj të internetit

Të gjitha funksionet e Makeplans janë të disponueshme përmes API-së. Është një API e bazuar në REST me JSON. Mund të dërgojmë edhe webhook-ë.

- [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/)
- [Shihni të gjitha endpoint-et](https://developer.makeplans.com/endpoints/)

## Lidhni asistentin tuaj AI (MCP)

Makeplans ofron një server MCP, që asistentët AI si Claude dhe ChatGPT të punojnë me rezervimet tuaja. Kërkojini asistentit të kontrollojë disponueshmërinë, të gjejë një klient ose të krijojë dhe anulojë rezervime – me kredencialet tuaja të Makeplans.

MCP (Model Context Protocol) është një standard i hapur. Çdo asistent ose agjent që flet MCP mund të lidhet – pa shtojca të mbyllura, pa varësi nga një ofrues, njësoj si çdo gjë tjetër që ndërtojmë.

### Mjetet që merr asistenti juaj

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

### Lidhni Claude Code me një rresht

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

Lexoni më shumë për [asistentin tonë AI për rezervime](/sq/zgjidhje/asistent-ai-per-rezervime/).

Rezervo një masazh për Anën të premten në orën 14:00

Po gjej shërbimin e masazhit dhe po kërkoj Anën.

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 rezervua: Anna Nordmann, masazh të premten në orën 14:00. Ajo merr një konfirmim dhe një kujtesë.

## Webhook-ë për çdo ndryshim

Kur një rezervim krijohet, konfirmohet, zhvendoset ose anulohet, ne e dërgojmë me POST në serverin tuaj, të nënshkruar me HMAC SHA-256, që ta dini se vjen nga ne. Edhe Zapier dhe Make mund ta marrin.

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 ✓
```

## Personalizimi i faqes standarde të rezervimeve

Faqen standarde të rezervimeve mund ta personalizoni me CSS-në tuaj. Përveç kësaj, mund të [personalizoni formularët](https://github.com/makeplans/makeplans-custom-forms) dhe të gjitha [mesazhet dalëse](https://github.com/makeplans/makeplans-custom-messages) me gjuhën e shablloneve Liquid.

custom.css

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

// Klikoni një vlerë për ta ndryshuar

 Biznesi juaj Faqja juaj e rezervimeve, stili juaj 

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

09:0010:3011:0013:0014:3016:00
Rezervo tani

### Integrime të gatshme

Makeplans ka tashmë shumë integrime të gatshme. Për më shumë informacion shihni [faqen e integrimeve](/sq/integrime/). Përveç integrimeve të drejtpërdrejta, kemi edhe integrim me platformat e integrimit [Zapier](/sq/integrime/zapier/) dhe [Make](/sq/integrime/make/), që ju lejojnë të lidheni me aplikacione të tjera pa programim.

### Eksporti i të dhënave

Ofrojmë eksport të rezervimeve, klientëve dhe ngjarjeve në format CSV, lehtësisht të shkarkueshëm.

### Burime iCalendar

Për t'i shfaqur takimet nga Makeplans në aplikacione të tjera kalendari, ofrojmë një burim iCalendar që mund të përdoret në Google Calendar, Kalendarin e macOS dhe iOS, Android, Outlook dhe aplikacione të tjera kalendari.

## Thellohuni në dokumentacion

- [Udhëzues](https://developer.makeplans.com/guide/getting-started/)
- [Endpoint-et e API-së](https://developer.makeplans.com/endpoints/)
- [Shembuj](https://developer.makeplans.com/examples/overview/)
- [Regjistri i ndryshimeve](https://developer.makeplans.com/changelog/)
- [API për partnerë](https://developer.makeplans.com/partner/)

[Dokumentacionin e API-së e gjeni në developer.makeplans.com](https://developer.makeplans.com).
