التوثيق / 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/customersPOST
/api/v1/customersGET
/api/v1/customers/{id}PATCH
/api/v1/customers/{id}GET
/api/v1/appointmentsPOST
/api/v1/appointmentsPOST
/api/v1/appointments/{id}/cancelGET
/api/v1/servicesGET
/api/v1/staffPOST
/api/v1/transactionsCode 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.lowRate 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 authenticated403— Not authorized404— Resource not found409— 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