https://api.[tenant].getomneo.com/api/v3.
Booking flow
Read the definition and its booking questions
Fetch availability for a location and date
requires_staff: true, pass staff_id, and first call available-staff to populate a staff picker. For a calendar view, use available-slots-range with start_date and end_date (capped at 31 days) instead of calling the single-day endpoint repeatedly.answers[], so you can confirm what was captured without a follow-up read.
Fetching a customer’s appointments
Use the profile-scoped endpoint to list appointments for a specific profile:| Filter | Example | Use |
|---|---|---|
profile_id | filter[profile_id]={profileId} | All appointments for one customer. |
status | filter[status]=confirmed | Only confirmed (or requested, arrived, completed, cancelled, no_show, rejected). |
appointment_definition_id | filter[appointment_definition_id]=1 | Appointments for one service. |
location_id | filter[location_id]=13 | Appointments at one location. |
assigned_staff_id | filter[assigned_staff_id]={staffId} | Appointments for one staff member. |
The list endpoint is paginated. Use
page[size] to control the page size and page through meta.pagination like every other Omneo list endpoint.Listing and filtering definitions
The Appointment Definition list supports these filters:| Filter | Notes |
|---|---|
id, handle, name | Exact match. |
is_published, is_archived | Publication state. |
booking_type | instant, approval_required, or walk_in_only. |
allow_customer_booking, allow_walk_in, requires_staff, customer_must_select_staff, allow_waitlist, allow_queue | Boolean capability flags. |
queue_code | Walk-in queue code. |
definitionLocations.location_id, definitionLocations.is_active | Definitions offered at a location. |
created_at, updated_at | Timestamps. |
Filtering appointments by type
The Appointment Definition is the type. To fetch every appointment of a given type, filter the appointments list by its definition rather than fetching everything and filtering on the front end:type field on a definition, and meta is not filterable, so the definition id is the way to group appointments by type.
Fetching visible definitions for a profile
When building a customer-facing booking flow, use the profile-scoped visibility endpoint to retrieve only the published, non-archived definitions that Omneo evaluates as visible for a specific Profile:read-appointment-definitions token scope. It applies each definition’s visibility_condition (a JsonLogic rule) against the Profile’s attributes and returns only those definitions where the rule evaluates to true. Definitions with a null visibility_condition are excluded.
For customer UIs where every profile should see the same published definitions, set visibility_condition to {"==": [1, 1]} on those definitions so they pass the check for all profiles.
See Visibility conditions in the Appointments concept for how the condition is evaluated.
Managing the lifecycle
Update an appointment withPUT /api/v3/appointments/{id}. Sending a status sets the matching timestamp automatically.
| Action | Body |
|---|---|
| Approve | { "status": "confirmed" } |
| Reject | { "status": "rejected" } |
| Cancel | { "status": "cancelled" } |
| Mark arrived, completed, or no-show | { "status": "arrived" } (or completed, no_show) |
| Reschedule | { "scheduled_start_at": "...", "scheduled_end_at": "...", "timezone": "..." } |
POST /api/v3/questionnaires/{id}/submissions.
Walk-in queues and waitlists
Forwalk_in_only definitions, check a customer in to the queue. Omit profile_id for an anonymous walk-in.
Related
- Appointments concept
- Working with visits
- Browse appointments API
- Add appointment API
- Browse profile appointments API
- Browse visible appointment definitions API
- Browse available appointment slots API
- Browse available appointment slots over a date range API
- Submit questionnaire API
- Profile Normal Hour API
- Profile Special Hour API