Site

Services and free times

Reads a published site's bookable services and the free times for a given day.

GEThttps://app.getera.io/api/site/v1/{siteId}/services
None (public)
GEThttps://app.getera.io/api/site/v1/{siteId}/slots
None (public)

To show in your own interface what your site's booking page shows: which services can be booked, how long they take, what they cost and which times are free on a chosen day. Services and working hours come from the Bookings module.

Authentication, the site id, CORS and rate limits are the same as on Site catalogue.

Services

Query parameters

NameTypeRequiredDescription
limitnumberNo1–100, default 24.

Example

curl "https://app.getera.io/api/site/v1/SITE_ID/services"

Response

Each row is one option (variant) of a service. Use its variant_id when you ask for free times.

{
  "data": [
    {
      "id": "d4e5f6a7-0000-4000-8000-000000000050",
      "name": "Haircut",
      "slug": "haircut",
      "kind": "service",
      "summary": "Wash included, demo service.",
      "fulfilment": null,
      "variant_id": "d4e5f6a7-0000-4000-8000-000000000051",
      "variant_name": "Haircut",
      "duration_minutes": 45,
      "capacity": 1,
      "price_amount": 600,
      "price_currency": "TRY"
    }
  ]
}

Free times

Query parameters

NameTypeRequiredDescription
serviceIdstringYesA variant_id from the services list. To book several services back to back, separate them with commas.
datestringYesThe day, YYYY-MM-DD.
memberIdstringNoOnly one staff member's times.

Example

curl "https://app.getera.io/api/site/v1/SITE_ID/slots?serviceId=d4e5f6a7-0000-4000-8000-000000000051&date=2026-10-15"

Response

{
  "data": {
    "durationMinutes": 45,
    "slots": [
      { "startTime": "09:00:00", "endTime": "09:45:00", "available": true, "memberUserId": "c0ffee00-0000-4000-8000-000000000002" },
      { "startTime": "09:45:00", "endTime": "10:30:00", "available": false, "memberUserId": "c0ffee00-0000-4000-8000-000000000002" }
    ]
  }
}

Times are in the business's own time zone.

Errors

Error bodies look like {"error": {"code": "...", "message": "..."}}.

StatuscodeWhen
403origin_not_allowedA browser call does not come from the site's domains.
404site_not_foundNo such site, or not published.
429rate_limitedRate limit.

Creating a booking (POST /api/site/v1/{siteId}/bookings) needs the session of a customer signed in to the site and is not covered here. To let visitors book, use the booking page on your site.

© 2026 Era. Era documentation. Something missing or wrong? Write to us: [email protected]