End-customer authentication methods. Get access tokens required for some API operations.
- Get Internationalization Options
Altegio REST API (1.0.1)
This is an official document describing the interaction with the Altegio business managment platform. API allows third-party developers to perform most operations with the Altegio data. When designing methods, we tried to adhere to the REST architecture.
- All interaction with protocol are transpire by TLS encryption (from 1.2 version)
- Limits are
200requests per minute or5requests per second per IP address - URL API:
https://api.alteg.io/apiIf you encounter difficulties when working with the API, please carefully review the documentation, including the required headers, parameters, and the structure of the request body in the JSON example.
If you're having trouble resolving the issue on your own, feel free to contact us at api@alteg.io. Please include the request URL, headers, request body, and the response you received in your message.
The API uses URL path versioning. Currently available versions:
- V1 (
/v1/...) - Stable, full-featured API - V2 (/v2/...) - New endpoints with improved design Both versions are production-ready. New features may be released in V2 only. V1 endpoints are maintained for backward compatibility. Base URL:https://api.alteg.io/apiExample requests: - V1:GET https://api.alteg.io/api/v1/companies- V2:GET https://api.alteg.io/api/v2/companies/{id}/tags
- Data exchange with automation, accounting or CRM software
- Integration of Online Booking into third-party websites and mobile applications. Allows embedding of Online Booking forms into external platforms, such as business catalogs, branded apps, and other partner services.
- Data collection and analysis for business intelligence systems / Development of custom reporting and analytics tools
- Chat bots and virtual assistants for appointment scheduling and client management
The Altegio integration API includes two groups of methods:
- Methods that require both user authorization and partner authorization
- Methods that require partner authorization only (no user authorization)
The most of dates in the API are represented as strings in ISO 8601 format. Exluding cases specified otherwise in outdated or deprecated methods.
"2026-09-21T23:00:00.000-05:00"Service durations and other time-related values are provided in seconds. For example, a 15-minute service should be represented as:
{ "length": 900 }The API allows to work with most of the platform's entities. However, please note that there are inconsistencies in the technical terminology: method and variable names, as well as terminology, may differ between the user interface and the documentation
A Location is an individual business unit that operates within the platform. Each Location belongs to a Chain. For single-location businesses, the platform still creates a single-location Chain.
Also known as: company, branch, filial, salon
A Chain is a group of multiple Locations managed as a single business network. Chain-level settings, promotions, service catalogs, and loyalty rules may be inherited by all child Locations while each Location can still override them where needed.
Also known as: groups, networks, salon_groups
A User is an account that provides authenticated access to one or more Locations. Access scope is defined by Roles, which are predefined sets of Access Rights. If a User does not have access to a module or method, the API returns HTTP 403. Users can also be linked to Chains, which provide a different set of access rights and are required for certain Chain-level requests. Each User is linked to one Team Member within a Location and may be linked to different Team Members across multiple Locations. Operational context (available Services, Schedule, permissions) depends on the current Location and Team Member binding. Most API methods require the User to be authorised (a valid token obtained) and to have explicit access to the target Location.
A Team Member is an individual within a Location who participates in operational processes: provides Services within Appointments, creates or manages reservations, or works with financial and analytical data (for example, a professional, cashier, administrator, or accountant). Team Members do not directly define access rights in the API, but they determine the business role and workload of a person inside a Location. Positions are logical groups of Team Members (similar to folders) that help structure staff by departments, functions, or specialisation. In some configurations, Positions are used to filter available reports.
Also known as: employee, staff, staff_member, master
Resources are limited items required to provide Services (rooms, chairs, devices, machines). A Resource cannot be used in parallel for multiple Appointments; it is reserved when a Service linked to that Resource is booked.
A Schedule is a set of time intervals during which a Team Member or Resource is available to provide Services. A Time Slot is a specific available interval within the Schedule that can be booked online for an Appointment with a Team Member.
An Appointment is a scheduled time interval during which a specific Team Member provides one or more Services or sells Products to a specific Client. A Visit is a group of one or more Appointments that take place during a single Client presence at a Location. Grouping rules depend on the Location settings.
Also known as: record, booking
An Event is a scheduled time slot for a group Service where multiple Clients can book simultaneously. Unlike individual Appointments, an Event has a capacity limit defining the maximum number of participants. Events are used for group classes, workshops, webinars, and any service that can serve multiple Clients at the same time with a single Team Member.
Also known as: activity, group event
A Client is an individual who books, receives, or has received Services or Products from a Location. Client data is used for scheduling, communication, and analytics.
A Service is a predefined type of work or procedure that can be provided to a Client by a Team Member within a Location. Each Service has key parameters such as duration, price (or price range), and applicable resources. Service Categories are logical groups used to organise Services for configuration, reporting, and client-facing catalogs.
A Product is a tangible or consumable item that can be sold to a Client or used as part of a Service. Product Categories are logical groups used to organise Products for inventory management, reporting, and sales operations.
Also known as: goods, items
Inventories represent physical or logical Warehouses used to store and track Products and consumables. Inventory operations (receipts, write-offs, transfers) ensure that product usage in Visits is reflected in stock levels and financial reports.
Also known as: storages, warehouses
Suppliers and Partners are counterparties used in Inventory and Finance modules to track product purchases, settlements, and mutual transactions with external companies.
Also known as: partners
Location Accounts are accounts (cash registers or bank accounts) attached to a specific Location. They are used to record payments for Visits, product sales, and other financial operations, and they define how money flows are grouped in financial reports.
Also known as: cashdesks, cash registers
Payment methods define how payments are recorded in the system (cash, card, bank transfer, online acquiring, loyalty instruments). Each method is linked to specific Accounts and can have its own commission and reporting logic.
Payroll rules define how staff compensation is calculated based on Visits, Products, Memberships, tips, and other metrics. They describe commission schemes, fixed payments, and deductions.
A Client Card is a unified profile that stores balances, active memberships, certificates, and participation in loyalty programs for a specific Client across one Location or an entire Chain.
A Membership is a prepaid product that gives a Client the right to receive a set number of services or discounts over a defined period. Membership Types define the rules: which services are included, how many visits are available, validity period, and usage restrictions. Also known as: abonements
A Certificate is a prepaid value or service voucher that can be used to pay for Services and Products. Certificate Types define how certificates are sold, accounted for, and redeemed, including validity period and usage restrictions.
Loyalty programs combine bonus accrual, cumulative discounts and referral promotions to increase repeat visits and average spend. Any loyalty instrument must be linked to a specific Client Card so that bonuses, discounts, and balances are applied consistently across Visits.
Client Accounts are internal balances (deposits) stored on the Client Card. They are used to prepay future Visits, store overpayments, or keep store credit that can be partially or fully redeemed in subsequent Visits and sales.
Also known as: deposits
Subdivisions are higher-level groups used to organise Services across a Chain (for example, "Hair", "Nails", "Spa"). They help structure large catalogs, simplify analytics, and control visibility of Services in online booking.
Custom fields are additional attributes configured by the Location to store extra data in Visits or other entities (for example, medical notes, internal IDs). They extend the standard schema without changing the core data model.
Also known as: additional fields
Integrations HUB is a catalog of external applications and services connected to Altegio (telephony, messaging, CRM, loyalty, etc.). It standardises how integrations are discovered, installed, configured, and monetised.
Request
Each Altegio client can create an unlimited number of Online Booking forms with different designs and booking scenarios.
Typically, the ID of a booking form is embedded in the subdomain. For example: https://b123.alteg.io, where 123 is the booking form ID. This ID can be used to retrieve all necessary parameters for implementing Online Booking and to determine whether the booking applies to a specific location or a location chain.
For chain widgets, you will also need to call the [GET] /locations method with the company_id filter to retrieve the list of locations available for booking.
The object containing the Online Booking form settings includes the following fields:
| Field | Type | Description |
|---|---|---|
| steps | Array of objects | Booking form steps with custom settings |
| style | object | Booking form design settings |
| group_id | number | Location chain ID (0 - if the booking form is for a non-chain location) |
| company_id | number | Location ID (always returned, used to get additional settings) |
| phone_confirmation | boolean | Do I need to confirm the phone by SMS (if groupid = 0 (not a group form), otherwise look in the settings of each location separately) |
| language | string | Booking form language (code from langs array) |
| langs | array of object | List of widget languages |
| comment_required | boolean | Whether the field with a comment within booking is required |
| google_analytics_id | string | Google Analytics ID |
| facebook_pixel_id | string | Facebook Pixel ID |
| sms_enabled | boolean | Is sending SMS available? |
| comment_input_name | string (optional) | Title for the field with a comment to the booking (if not set, the default value is used) |
| booking_notify_text | string (optional) | The text of the notification that is displayed (if set) at the step of entering contact data |
| is_show_privacy_policy | boolean | Whether it is necessary to display the text of the agreement on the personal data processing policy to the user |
| specialization_display_mode | number | Display the specialization or position of the team member. 0 - Specialization, 1 - Position |
The steps array consists of objects that have the following fields:
| Field | Type | Description | For what steps is specified |
|---|---|---|---|
| step | string | Step city/company/service/team member/datetime/contact/confirm | |
| title | string | Name of the step to display in the interface | For everyone |
| number | number | What number should this step be displayed on (starting from 1) | For everyone |
| default | string or number | The default value for this step, if set | For all but datetime |
| hidden | boolean | Hide this step when booking or not | For everyone |
| date_hidden | boolean | Hide this step when booking or not | For datetime |
| time_hidden | boolean | Hide this step when booking or not | For datetime |
| date_default | string | The default value for this step, if set | For datetime |
| time_default | number | The default value for this step, if set | For datetime |
The style object has the following fields:
| Field | Type | Description |
|---|---|---|
| show header | boolean | Show header and menu or not |
| logo | string | Path to logo image |
| header_background | string | Path to subtitle background image |
| menu_background | string | Path to menu background image |
| primaryPalette | string | The main color of the form (all colors from the list: red, pink, purple, deep-purple, indigo, blue, light-blue, cyan, teal, green, light-green, lime, yellow, amber, orange, deep-orange, brown , grey, blue-grey, white, black) |
| accentPalette | string | Form secondary color (subtitle semi-transparent cover) |
| warnPalette | string | Booking form buttons color |
| backgroundPalette | string | Booking form background color |
- Mock serverhttps://developer.alteg.io/_mock/en/v1/bookform/{id}
- https://api.alteg.io/api/v1/bookform/{id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://developer.alteg.io/_mock/en/v1/bookform/1 \
-H 'Accept: application/vnd.api.v2+json' \
-H 'Authorization: YOUR_API_KEY_HERE' \
-H 'Content-Type: string'OK
Object with data
{ "success": true, "data": { "steps": [ … ], "style": { … }, "group_id": 1, "company_id": 1, "phone_confirmation": false, "lang": "en-US", "langs": [ … ], "comment_required": false, "metrika_counter_id": 50217133, "google_analytics_id": "UA-125358345-1", "facebook_pixel_id": "2218788388343154", "app_metrika_id": "46ab3b93-1bc6-457d-82f0-c1b51f39b01e", "sms_enabled": true }, "meta": [] }
- Mock serverhttps://developer.alteg.io/_mock/en/v1/i18n/{lang_code}
- https://api.alteg.io/api/v1/i18n/{lang_code}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://developer.alteg.io/_mock/en/v1/i18n/en-US \
-H 'Accept: application/vnd.api.v2+json' \
-H 'Authorization: YOUR_API_KEY_HERE' \
-H 'Content-Type: string'{ "404": { "not-found": "It seems that this page does not exist.", "not-found-record": "Such an appointment does not exist.", "go-home": "To main" }, "action": { "send": "send" }, "tips": { "terms": { … }, "review-sent": "Review sent", "your-mark": "your mark", "leave-a-review": "Leave a review", "leave-a-tip-to-a-specialist": "Leave a tip for a specialist", "credited": "Tip credited", "visit-amount": "Visit amount", "will-be-written-off": "Will be written off", "at-time": "v", "rate-specialist-to-sent-feedback": "Rate a specialist to send feedback", "title": "Tips", "tips-required": "Please select a tip amount", "review-or-tips-required": "It seems that there is nothing to send to a specialist yet", "enter-sum": "Enter amount", "custom-sum": "Own amount", "cancel-tips": "Cancel tip", "bad-sum": "Tipping must be indicated by the amount" }, "payment-status": { "payment-error": "Payment error. Try again", "payment-redirect": "You should be directed to the payment system.", "payment-config-error": "Error in setting up the payment system", "contact-us-for-questions": "Contact us if you have any questions.", "contacts": "Contacts", "order-registered": "Application completed", "order-paid": "Order has been paid", "retry": "Repeat", "order-created-successfully": "The order has been successfully created. Our representative will contact you to clarify the details.", "order-is-being-processed": "Operation is being processed", "get-payment-data": "Receiving payment data", "transaction-number": "Transaction number", "payment-transaction-info-1": "If you received a check, then the purchase was successfully completed. Check the email address you provided when purchasing.", "payment-transaction-info-2": " If the receipt did not arrive, please try again or contact us using the contacts below.", "order-number-info": "Provide this number at the time of your visit to redeem your certificate or pass." }, "user-data-form": { "loyalty-phone-tip": "Provide this number at the time of your visit to redeem your certificate or pass.", "name-required": "Name required", "email-required": "Email required", "loyalty-email": "E-mail for receipt and purchase", "agreement-link": "with the terms of the agreement", "data-processing-link": "data processing", "terms-prefix": "By clicking on the button you agree", "proceed": "Checkout", "pay": "Pay", "phone-code": "The code", "phone": "Telephone", "invalid-phone": "Invalid number" }, "and": "and", "terms-of-agreement": "Terms of agreement", "data-processing": "Data processing", "license-agreement": "License agreement", "personal-data": "Your data", "buy-for": "Buy for", "group_booking": { "personal_booking": "Individual services", "group_booking": "Group events", "choose_group_event": "Choose an event", "group_events_available": "Registration available for group events", "places": "Places", "group_events_is_not_available": "There are no group events for the selected day", "group_events_is_not_available_filial": "Group events are not configured in this location yet", "repeat": "Sign up again", "duration": "Duration", "no_space": "No places", "not_found": "There are no events for the selected filters. Try changing your filter options" }, "geo": { "geo_timeout_error": "Unable to determine your location. You may be out of GPS coverage", "geo_timeout_error_android": "Unable to determine your location. You may be out of GPS coverage. If you have geolocation disabled, you need to enable it and restart the application.", "geo_access_error": "No access to your location. The application cannot show locations near you. If you have geolocation disabled, you need to enable it and restart the application." }, "tooltips": { "change_filial": "Now you will always start recording from this branch. You can change the location through the menu item", "change_filial_back_button": "You can also use the back button to change location" }, "prepaid": { "required": "prepayment required", "allowed": "prepayment is optional", "prepaid_sum": "To pay online:", "postpaid_sum": "Payment on the spot:" }, "back": "Back", "backCity": "Cities", "backFilials": "Locations", "backRecordType": "Record Type", "filials": "Locations", "my_profile": "Cabinet", "about_us": "About Us", "record": { "show_details": "View details", "is_canceled": "Recording canceled", "is_canceled_success": "Recording canceled successfully", "record": "Recording", "place": "Place", "master": "Team Member", "service": "Service", "services": "Services", "date": "date", "past": "Passed", "through": "Across", "time": "Time", "clients_count": "Number of seats:", "book_visit": "Make a visit", "add_service": "+ Add service", "add_master": "+ Add Team Member", "add_datetime": "+ Add date and time", "cancel_record": "Cancel appointment", "cancel_record_warning": "Once canceled, the recording will not be recoverable.", "confirm_cancel_record": "Are you sure you want to cancel the recording?", "error_cancel_record": "You cannot unsubscribe", "error_cancel_record_new1": "It is not possible to cancel an appointment online. Please contact the administrator.", "error_cancel_record_new2_1": "Unable to cancel online booking", "error_cancel_record_new2_2": "before visiting. Please contact the administrator.", "add_to_google_calendar": "Add to google calendar", "booking_success": "You have successfully signed up!", "create_new_record": "Sign up more", "future_records": "Upcoming sessions", "past_records": "Past", "change_record_time": "Transfer appointment", "error_change_record_time": "Unable to reschedule online. Please contact the administrator.", "error_change_record_time2_1": "Unable to reschedule online appointment", "error_change_record_time2_2": "before visiting. Please contact the administrator.", "selected_services": "Selected services", "calculate_services": "Services available...", "change_record_fail": "Error transferring recording, please try another time", "continue_booking": "Continue recording", "go_to_registration": "Go to Altegio website", "repeat": "Repeat recording", "is_deleted": "Your appointment has been deleted." }, "at": "v", "on": "on the", "h": "h.", "m": "min.", "from": "from", "dist_m": "m", "dist_km": "km", "yesterday": "yesterday", "today": "today", "tomorrow": "tomorrow", "Close": "close", "Yes": "Yes", "No": "Not", "refresh": "Refresh", "online_record_disabled": "Online registration is disabled. <br> We apologize for the inconvenience caused.", "online_record_disabled_long_text": "Online registration is temporarily unavailable. You can still manage your online records in your account, transfer them and delete them.", "address": { "about": "About location", "address": "The address", "phone": "Telephone", "phones": "Phones", "schedule": "Working hours", "site": "Site", "date_and_time": "date and time", "photos": "Photos", "details": "More about the location" }, "common": { "information": "information", "reviews": "reviews", "contacts": "contacts" }, "notification": { "your_city": "What is your city <%- city_name %>?", "yes_my_city": "Yes, this is my city", "no_my_city": "No, choose a city", "read_all": "Read", "delete_all": "Delete", "deleted_record": "Deleting an appointment", "record": "Recording", "news": "news", "review": "Feedback about the team member", "notify": "Notification", "sent": "Sent" }, "header": { "loyalty_cards": "Loyalty Cards", "widget_settings": "Widget settings", "settings": "Settings", "select_town": "Choose city", "select_company": "Choose location", "select_date": "Date picker", "select_master": "Team Member selection", "select_time": "Timing", "select_service": "Service selection", "input_personal": "Entering contact details", "online_record": "Online appointment", "selection_of": "Choice", "contacts_form": "Registration", "record_created": "Post created!", "login": "entrance", "profile": "Personal Area", "my_records": "My notes", "record_create_disabled": "Online registration is temporarily unavailable.", "master-info": "About Team Member", "notification": "Notifications", "my_notifications": "My notifications", "none_notifications": "No notifications", "cart": "Proof of payment", "change_record": "Record transfer", "you_booking": "Your order", "you_data": "Your data", "record": "Recording", "actions": "Actions", "cancel-record": "Cancel recording", "booking_again": "Sign up again", "choose_time": "Pick a time", "choose_staff": "Choose a team member", "about_service": "About the service", "records": "Entries", "confirmation": "Confirmation" }, "loyalty": { "empty-list": "There is nothing here yet", "points": { … }, "no_cards": "You don't have any cards.", "no_certificate": "You do not have any certificate.", "no_subscription": "You don't have any subscription.", "discount": "discount", "cashback": "cashback", "paid_amount": "Paid", "sold_amount": "Sales", "visit_count": "Visits", "balance": "Accumulated (cashback)", "certificate": { … }, "subscription": { … }, "subscriptions": { … }, "programs": { … } }, "save": "Save", "proceed": "Continue", "profile": { "name": { … }, "noFutureRecords": "You have no upcoming sessions", "noPastRecords": "You have no past sessions", "phone": { … }, "email": { … }, "password": { … }, "error": "An error occurred while saving data", "saved": "Changes to your personal data are saved", "contactsDetails": "Contact details", "your_records": "Your appointments at the location." }, "registration": { "registration": "registration", "form": { … } }, "menu": { "account": "Personal data", "change_filial": "Change Location", "change_city": "Change city", "online_record": "Online booking", "about": "About location", "change_lang": "Change the language", "hide_menu": "Hide menu", "login": "To come in", "myRecords": "My notes", "on-line": "Online appointment", "logout": "Log off", "my": "Personal Area", "favorite": "Favorites", "change_password": "password change", "header": "Menu", "profile": "Profile", "loyalty": "My cards", "loyalty_subscriptions": "Subscriptions", "loyalty_certificates": "Certificates" }, "footer": { "worked_on": "Works for", "worked_on_company_name": "Altegio" }, "city": { "town_abbreviation": "G.", "service_count": "Number of locations:", "select_filial": "Location selection", "not_found_cities": "No cities found for your request", "search_cities": "Find cities", "affiliate": { … } }, "company": { "list": "List", "on_map": "On the map", "no_companies_text_1": "You do not have any active location. To set up locations, go to", "lk": "Personal account Altegio", "no_companies_text_2": "After setting, press the button", "no_companies": "No companies", "near_session": "The closest available recording session is:", "active_master": "Active team members:", "at_o_clock": "v", "find_companies": "Find locations", "not_found_companies": "No locations found for your search", "look_at_the_map": "View on the map" }, "steps": { "date_and_time": "date and time", "staff": { … }, "service": "Service", "time": "Time" }, "master": { "master": "Team Member", "skip_select_master": "Skip team member selection", "skip_select": "Skip selection", "near_session": "Upcoming sessions", "nearest_time": "Next time to sign up", "no_record": "There are no free sessions for the selected day", "no_record_new": "There is no free time for this date. Choose another date or another team member", "no_master": "The team member was fired or no longer works at this location", "any_master": "Irrelevant", "record_is_available": "You can sign up", "reviews": { … }, "prepaid": { … } }, "cart": { "title": "Services selected for payment", "confirm": "Confirm Appointment", "go-to-pay": "Proceed to checkout", "confirmed": "Appointment Paid", "pay-success": "Payment was successful!" }, "reviews": { "cancelAddReview": "Cancel", "later": "Rate later", "addReview": "Leave feedback", "yourReviewMark": "your mark", "reviewFieldLabelText": "your feedback", "reviewTitle": "Please rate the quality of the application", "reviewMessage": "Write suggestions for improvements", "reviewRequestStoreTitle": "Would you like to rate the store?", "reviewButton": "Estimate", "thanksForReview": "Thanks for the feedback" }, "date": { "day_of": "Day off", "no_record": "Working, no record", "have_record": "Working, there is a record", "by_month_num": { … }, "by_month_short": { … } }, "time": { "hourCased": { … }, "weekCased": { … }, "monthCased": { … }, "yearCased": { … }, "dayCased": { … }, "minuteCased": { … }, "secondCased": { … }, "at_o_clock": "v", "noTimes": "There are no free sessions for the selected day", "the_part_of_day": { … }, "by_week_day": { … }, "by_full_week_day": { … } }, "service": { "selected": "Selected", "selected_service_count": "Selected services:", "noServicesAndEvents": "No promotions or services found for your search", "noMoreServices": "There are no services that can be booked together with the selected services", "noMoreService": "There are no services that can be booked together with the selected service", "search": "Search...", "sale": "Stock", "services": "Services", "add": "Add a service", "add_short": "Add", "currency_short": "R.", "services_pref": { … }, "order_on": "Order for", "price": "price", "price_not_available": "Price not specified", "price_from": "from", "price_to": "before", "unavailable_service": "no longer available for online registration. Would you like to choose another?", "unavailable_services": "are no longer available for online booking. Would you like to choose others?" }, "confirm": { "confirm": "Sign up", "show_order_details": "View order details", "order_details": "Order Details", "smsNotify": "Reminder", "dontSend": "Do not send", "order_on": "Service order", "service_sale": "Promotion Services", "license_text": "Duis placerat lectus et justo mollis, nec sodales orci congue. Vestibulum semper non urna ac suscipit. Vestibulum tempor, ligula id laoreet hendrerit, massa augue iaculis magna, sit amet dapibus tortor ligula non nibh.", "accept": "By clicking the \"Register\" button, you agree to", "i_accept": "I accept", "i_agree": "I agree", "accept_inline": "By clicking the \"Register\" button, you agree", "accept_personal_data_inline": "processing of personal data", "and_accept": "and accept", "terms_of_agreement": "terms of the user agreement", "terms_of_agreement_inline": "user agreement terms", "how_my_personal_data_will_be_processed": "how my personal data will be processed", "first_name": "Name", "phone": "Telephone", "will_be_used_to_confirm": "Will be used for confirmation", "comment": "A comment", "email": "Email", "recording": "Sign up", "code_and_phone_num": "Code and phone number", "phone_confirm_short": "Confirm number", "phone_already_exists": "The specified number is already in use.", "phone_confirm": "Verify phone number", "phone_confirm_button": "Confirm", "defaultError": "System error:", "you_want_to_book": "Do you want to enroll", "your_master": "your team member", "waiting_for_you_at_the_address": "We are waiting for you at", "untilVisit": { … }, "orderErrorsActions": { … }, "orderErrors": { … }, "errors": { … } }, "login": { "login": "entrance", "sms_auth": "SMS authorization", "input_code_confirm": "Enter the code received by SMS to the number", "input_phone_num": "Enter your phone number, we will send an SMS to it with an access code to your personal account", "input_login_and_password": "If you already have a username and password, enter them below", "code_confirm": "confirmation code", "come_in": "To come in", "sms_not_send_with_colon": "If the SMS did not arrive, you can request a second code via:", "sms_not_send": "If the SMS did not arrive, you can request a second code via", "sms_not_send_next_try": "If the SMS did not arrive, you can", "request_new_sms_code": "Request code again", "change_phone_num": "Change phone number", "get_code": "to get the code", "or": "or", "authorized_as": "You are logged in as", "come_in_with_login_and_pass": "Log in with username and password", "phone_or_email": "Phone or email", "pass": "Password", "come_in_with_sms_authorise": "Log in via SMS authorization", "errors": { … } }, "Jan": "January", "Feb": "February", "March": "Martha", "Mar": "Martha", "Apr": "April", "May": "May", "Jun": "June", "Jul": "July", "Aug": "august", "Sep": "September", "Oct": "October", "Nov": "november", "Dec": "December", "activity": { "places_left": "Remaining places", "filters": { … } }, "button": { "select": "Select", "select_time": "Choose time", "all_right": "That's right", "get_sms": "Receive SMS", "back": "Return", "add_more": "Add more", "remove-from-record": "Remove from order", "continue": "Continue", "confirm": "Confirm", "canceling": "Cancel", "more_reviews": "More reviews" }, "landscape": "It will be more convenient if you turn the device vertically" }
Request
The object of services available for booking has the following fields:
| Field | Type | Description |
|---|---|---|
| categories | array of objects | Array of service categories (you can't book a category) |
| services | array of objects | Services available for booking by category |
An object from the categories array, has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | Category ID |
| title | string | Category name |
| gender | number | Category belonging to gender (1 - male, 2 - female, 0 - not specified) |
| weight | number | Category weight. Categories are sorted by weight, heavier ones first |
| api_id | string | External Category ID |
An object from the services array, has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | Service ID |
| title | string | Service name |
| category_id | number | Identifier of the category to which the service belongs |
| weight | number | Category weight. Services are sorted by weight, heavier ones first |
| price_min | number | The minimum cost of the service |
| price_max | number | Maximum cost of the service |
| discount | number | Service discount |
| comment | string | Comment on the service |
| active | number | Is the service active |
| prepaid | string | Online payment status |
| gender | number | Gender for which the service is provided |
| session_length | number | Service duration in seconds (only if filter by team member is set) |
| image | string | Image services |
If you need to get the services provided by a specific team member, then you need to use the filter by team member. The following filters are available:
- staff_id: team member ID. If you need services that only the selected team member provides
- datetime: date (in iso8601 format). Specifies the desired appointment date. Use this parameter to retrieve services that can be booked with the selected team member on that specific date.
- service_ids: An array of service IDs. If a team member is already selected and the time and service(s) are part of an existing appointment, this parameter should be used to select an additional service.
- Mock serverhttps://developer.alteg.io/_mock/en/v1/book_services/{location_id}
- https://api.alteg.io/api/v1/book_services/{location_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developer.alteg.io/_mock/en/v1/book_services/4564?staff_id=0&datetime=2026-09-09T18%3A30&service_ids%5B%5D=0' \
-H 'Accept: application/vnd.api.v2+json' \
-H 'Authorization: YOUR_API_KEY_HERE' \
-H 'Content-Type: string'OK
Object with data
{ "success": true, "data": { "events": [], "services": [ … ], "category": [ … ] }, "meta": [] }
Locations
Locations in the product knowledge base
Location management. Create, read, update locations and their settings.
Services
Services in the product knowledge base
Service and service category management. Define services offered by your locations.
Team Members
Team members in the product knowledge base · Positions in the product knowledge base
Team member management, including positions, service assignments, and team member profiles.
Clients
Clients in the product knowledge base
Client management including search, bulk operations, files, comments, and visit history.
Users & Permissions
Users in the product knowledge base
User account management, roles, permissions, and invitations. Control access to location features.
Appointments
Visits in the product knowledge base
Appointment and visit management.
Key concepts:
- Appointment (record) — A single scheduled service for a client with a specific team member at a specific time
- Visit — A container that groups multiple appointments when a client books several services in one session
Example: Client books haircut + coloring → 1 visit containing 2 appointments
This section covers creating, modifying, and managing both individual appointments and visit containers.
Events
Events in the product knowledge base
Manage Events — scheduled time slots for group Services where multiple Clients can book simultaneously. Create, update, search, and duplicate Events with customizable capacity, duplication strategies, and Team Member assignments.
Schedule & Resources
Schedule in the product knowledge base · Resources in the product knowledge base
Work schedules, available time slots, resources, and timetable management for team members and facilities.
Products
Products in the product knowledge base
Product catalog management. Define products available for sale and organize them into categories.
Inventory
Inventory in the product knowledge base
Stock management including storage locations, inventory documents, stock movements, and consumables tracking.
Payments
Payment methods in the product knowledge base · Accounts in the product knowledge base
Financial operations including location accounts, payment transactions, and all monetary movements.
Deposits
Client accounts in the product knowledge base
Client deposit account management and operations.
Loyalty Cards
Client cards in the product knowledge base
Loyalty card management including card types, manual transactions, and card assignments.
Subscriptions & Certificates
Memberships in the product knowledge base · Certificates in the product knowledge base
Membership and certificate management including creation, freezing, and balance operations.
Loyalty Programs
Loyalty programs in the product knowledge base
Loyalty programs and loyalty transaction management.
Salary
Payroll in the product knowledge base
Salary calculations, payroll management, and compensation tracking for team members.
Custom Fields
Custom fields in the product knowledge base
Additional custom field definitions for extending entity data structures.
Chain Management
Chains in the product knowledge base
Chain-level operations for managing multiple locations within a business chain.
Chain Loyalty Programs
Loyalty programs in the product knowledge base
Chain-level loyalty program management including programs, transactions, and message templates.
Marketplace
Integrations in the product knowledge base
Application marketplace integration for third-party applications.
Integration workflow:
- Partner provides domain name, registration URL, and callback URL
- User authorizes and is redirected to partner registration page
- Partner redirects back to Altegio after successful registration
- Partner confirms service activation via payment callback