Pređi na glavni sadržaj

Dok. / API

API reference

Glanevo REST API. Base URL https://api.glanevo.com. You send JSON, you get JSON.

Authentication

Two methods are supported:

  • Bearer token — Create it from account settings, add it to the request header.
  • OAuth2 — PKCE flow for third-party applications.
curl https://api.glanevo.com/api/v1/customers \
  -H "Authorization: Bearer gln_live_..."

Endpoints

GET/api/v1/customers
POST/api/v1/customers
GET/api/v1/customers/{id}
PATCH/api/v1/customers/{id}
GET/api/v1/appointments
POST/api/v1/appointments
POST/api/v1/appointments/{id}/cancel
GET/api/v1/services
GET/api/v1/staff
POST/api/v1/transactions

Code examples

cURL

curl -X POST https://api.glanevo.com/api/v1/appointments \
  -H "Authorization: Bearer gln_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "cus_x9p2",
    "serviceId": "svc_haircut",
    "startsAt": "2026-05-12T14:00:00Z",
    "staffId": "stf_ali"
  }'

JavaScript (fetch)

const res = await fetch("https://api.glanevo.com/api/v1/appointments", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.GLANEVO_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    customerId: "cus_x9p2",
    serviceId: "svc_haircut",
    startsAt: "2026-05-12T14:00:00Z",
    staffId: "stf_ali",
  }),
});
const appt = await res.json();

Python (requests)

import requests, os

r = requests.post(
    "https://api.glanevo.com/api/v1/appointments",
    headers={"Authorization": f"Bearer {os.environ['GLANEVO_KEY']}"},
    json={
        "customerId": "cus_x9p2",
        "serviceId": "svc_haircut",
        "startsAt": "2026-05-12T14:00:00Z",
        "staffId": "stf_ali",
    },
)
appt = r.json()

Webhook events

Register your webhook URL from account settings. Verify incoming requests with the HMAC-SHA256 signature.

appointment.createdappointment.updatedappointment.cancelledappointment.completedcustomer.createdtransaction.completedtransaction.refundedstaff.checkinstaff.checkoutstock.low

Rate limit

Different limits per plan:

  • • Free: 100 requests/hour
  • • Pro: 5,000 requests/hour
  • • Enterprise: Negotiable — your limit is specified in your contract

Error codes

  • 400 — Invalid request (validation)
  • 401 — Not authenticated
  • 403 — Not authorized
  • 404 — Resource not found
  • 409 — Conflict (blocked by D-CCM)
  • 429 — Rate limit exceeded

SDKs

Today you use the API directly via REST and webhooks. Official SDKs are on our roadmap; we'll announce on this page when a language is ready.

  • • JavaScript / TypeScript
  • • Python
  • • PHP
  • • Ruby