Download OpenAPI specification:
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.
200 requests per minute or 5 requests per second per IP addresshttps://api.alteg.io/api/v1
If 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 Altegio integration API includes two groups of methods:
Accessing both the first and second groups of methods requires partner authorization. I.e. passing the partner's unique hash key. API requests are authorized in accordance with RFC 6749 "Resource Owner Password Credentials Grant". When making API requests the HTTP authorization header must include the access key in the following format:
Authorization: Bearer <partner token>
To obtain this key, you need to register in the marketplace – it will be located in the 'Developer account' "Account settings" under "Account details" tab.
To get the user API key, use the auth method, or, if you are creating an integration application, use the key located in an application's settings under the "API Access" section. The key itself must also be sent in the request header (after the partner key, separated by a comma):
Authorization: Bearer <partner token>, User <user token>
Whether user authorization is required to work with specific entities is indicated in the data format descriptions and sample queries. Please note that not all users have access to all methods and data, depending on their assigned access rights.
The most of dates in the API are represented as strings in ISO 8601 format. Exluding cases specified otherwise in outdated or deprecated methods.
"2025-09-21T23:00:00.000+03: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. aka: company, branch, filial, salon
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. 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. aka: employee, staff, staff_member, master
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. aka: record, booking
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. aka: goods, items
End-customer authentication methods. Get access tokens required for some API operations.
James) - Client name| location_id required | number Example: 4564 location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
| phone | string Customer phone number |
| fulname | string Client name |
{- "phone": "+1-315-555-0175",
- "fulname": "James Smith"
}{- "success": true,
- "meta": {
- "message": "Created"
}
}To access both online and offline (e.g., phone-made) appointments, the user must log in by verifying their phone number. This is done by requesting a confirmation code to be sent via SMS using the "SMS phone number verification code" endpoint.
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
| login required | string Phone number or Email |
| password required | string Password |
{- "password": "testpass"
}{- "user_token": "wec23fh8cDfFV4432fc352456"
}Public online booking APIs and widgets. Allow clients to book appointments through external platforms.
The dates available for booking object has the following fields:
| Field | Type | Description |
|---|---|---|
| working_days | array of working days grouped by month | Working days of a team member/organization |
| working_dates | array of dates | An array of dates when the team member/organization works |
| booking_days | array of days when there are free sessions | Array of days that are available for booking for the specified services |
| booking_dates | array of dates | An array of dates when there are free sessions for the service to the selected team member/organization |
working days and booking_days have the same format: month:[array of days in this month]
For example, this booking_days: "9": [ "4", "5"] "10": [ "14", "25"] Means that on September 4 and 5, and on October 14 and 25 there are free sessions for booking
The following filters are available:
| location_id required | number location ID |
| service_ids[] | string Service ID. Filter by the list of service identifiers |
| staff_id | number team member ID. Filter by team member ID Default: 0 |
| date | string Example: date=2015-09-01 date in iso8601 format. Filter by month of booking. |
| date_from | string Example: date_from=2015-09-01 date in iso8601 format. Start of dates to search. Must be used together with the "date_to" param and overrides the "date" param. |
| date_to | string Example: date_to=2015-09-30 date in iso8601 format. End of dates to search. Must be used together with the "date_from" param and overrides the "date" param. |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": {
- "booking_days": {
- "1": [
- 3,
- 10
], - "12": [
- 6,
- 13,
- 20,
- 27
]
}, - "booking_dates": [
- "2025-12-06",
- "2025-12-13",
- "2025-12-20",
- "2025-12-27",
- "2026-01-03",
- "2026-01-10"
], - "working_days": {
- "1": [
- 1,
- 3,
- 8,
- 10
], - "12": [
- 4,
- 6,
- 11,
- 13,
- 18,
- 20,
- 25,
- 27
]
}, - "working_dates": [
- "2025-12-04",
- "2025-12-06",
- "2025-12-11",
- "2025-12-13",
- "2025-12-18",
- "2025-12-20",
- "2025-12-25",
- "2025-12-27",
- "2026-01-01",
- "2026-01-03",
- "2026-01-08",
- "2026-01-10"
]
}, - "meta": [ ]
}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 |
| sex | 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 |
| sex | 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:
| location_id required | number Example: 4564 location ID |
| staff_id | number team member ID. Filter by team member ID Default: 0 |
| datetime | string Example: datetime=2025-09-09T18:30 date (in iso8601 format). Filter by service booking date (for example '2005-09-09T18:30') Default: '' |
| service_ids[] | Array of numbers Service ID. Filter by the list of identifiers of already selected (within one appointment) services. It makes sense if a filter by team member and date is set. |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": {
- "events": [ ],
- "services": [
- {
- "id": 1896208,
- "title": "hair wash",
- "category_id": 1895571,
- "price_min": 0,
- "price_max": 0,
- "discount": 0,
- "comment": "",
- "weight": 0,
- "active": 0,
- "sex": 0,
- "image": "",
- "prepaid": "forbidden",
- "seance_length": 3600
}, - {
- "id": 1896303,
- "title": "Coloring",
- "category_id": 1895574,
- "price_min": 0,
- "price_max": 0,
- "discount": 0,
- "comment": "",
- "weight": 0,
- "active": 0,
- "sex": 0,
- "image": "",
- "prepaid": "forbidden",
- "seance_length": 3600
}
], - "category": [
- {
- "id": 1895571,
- "title": "Hair care",
- "sex": 0,
- "api_id": 0,
- "weight": 60
}, - {
- "id": 1895574,
- "title": "Hair coloring",
- "sex": 0,
- "api_id": 0,
- "weight": 7
}
]
}, - "meta": [ ]
}Each object from the array of team members available for booking has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | team member ID |
| name | string | team member name |
| specialization | string | team member specialization |
| position | object | team member position |
| bookable | boolean | Does the team member have sessions available for booking |
| weight | number | team member weight. When withdrawing, team members are sorted by weight, heavier first |
| show_rating | number | Whether to show team member's rating (1 - show, 0 - don't show) |
| rating | number | team member rating |
| votes_count | number | Number of votes rated team member |
| comments_count | number | Number of comments to a team member |
| avatar | string | Path to team member avatar file |
| information | string | Additional information about the team member (HTML format) |
| session_date | string | Date of the next day that there are available sessions (only for bookable = true) |
The following filters are available:
| location_id required | number Example: 4564 location ID |
| service_ids[] | Array of numbers Service ID. Filter by the list of service identifiers |
| datetime | number date in iso8601 format. Filter by service booking date (for example '2005-09-09T18:30') |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": [
- {
- "id": 16,
- "name": "James",
- "bookable": true,
- "specialization": "Paramedic",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "show_rating": true,
- "rating": 3,
- "votes_count": 1,
- "comments_count": 0,
- "weight": 11,
- "information": "<span></span>",
- "seance_date": "2025-09-21",
- "seances": [ ]
}, - {
- "id": 32,
- "name": "Peter",
- "bookable": false,
- "specialization": "Therapist",
- "position": [ ],
- "show_rating": true,
- "rating": 4,
- "votes_count": 1,
- "comments_count": 0,
- "weight": 8,
- "information": "<span></span>"
}
], - "meta": [ ]
}the team member's nearest sessions object has the following fields:
| Field | Type | Description |
|---|---|---|
| session_date | string | Next date with available sessions |
| sessions | array | List of available sessions |
The following filters are available:
| location_id required | number location ID |
| team_member_id required | number team member ID |
| service_ids[] | Array of numbers Service ID. Filter by the list of service identifiers |
| datetime | number date in iso8601 format. Filter by date |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
{- "success": true,
- "data": {
- "seance_date": "2025-09-21",
- "seances": [
- {
- "time": "10:00",
- "seance_length": 3600,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}, - {
- "time": "10:15",
- "seance_length": 3600,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}, - {
- "time": "10:30",
- "seance_length": 3600,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}, - {
- "time": "10:45",
- "seance_length": 3600,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}, - {
- "time": "11:00",
- "seance_length": 3600,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}
]
}, - "meta": [ ]
}The sessions available for booking object has the following fields:
| Field | Type | Description |
|---|---|---|
| time | string | Session time (17:30 for example) |
| session_length | number | Session duration in seconds |
| datetime | datetime | Date and time of the session in ISO8601 format (must be passed when creating the appointment) |
The following filters are available:
| location_id required | number location ID |
| date required | string date in iso8601 format. Filter by booking date (eg '2015-09-30') |
| team_member_id required | number team member ID. Filter by team member ID Default: 0 |
| service_ids[] | string Service ID. Filter by the list of service identifiers |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": [
- {
- "time": "12:00",
- "seance_length": 3600,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}, - {
- "time": "13:00",
- "seance_length": 3600,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}, - {
- "time": "14:00",
- "seance_length": 3600,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}, - {
- "time": "15:00",
- "seance_length": 3600,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}, - {
- "time": "16:00",
- "seance_length": 3600,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}
], - "meta": [ ]
}After generating the appointment parameters, you can validate them to ensure the appointment can be successfully created.
The JSON object containing the Online Booking parameters includes the following fields:
| Field | Type | Mandatory | Description |
|---|---|---|---|
| appointments | Array of objects | YES | Booking options (services, team members...) |
The appointments array consists of objects that have the following fields:
| Field | Type | Mandatory | Description |
|---|---|---|---|
| id | number | Yes | Booking ID for post-save feedback (see response to request). |
| services | array of numbers | NO | Array of IDs of the services the client wants to sign up for |
| staff_id | number | YES | ID of the team member the client wants to book with (0 if any team member is selected) |
| datetime | datetime | YES | Session date and time in ISO8601 format (passed for each session in the book_times resource) |
In response to the parameter check request, an empty response with the code 201 will be returned if the booking parameters are in order and bookings can be created:
If the response is JSON with an HTTP code other than 201, then the booking parameters are out of order, and bookings cannot be created.
The server may return the following errors during appointment creation:
Selected time slot is already taken. Returned with HTTP status code 422 and error code 433.
No team members available for booking. Occurs if a default team member was selected but none are available. Returned with HTTP status code 422 and error code 436.
Booking time conflict within the same request. One of the selected booking times overlaps with another booking created in the same request. Returned with HTTP status code 422 and error code 437, including the conflicting booking’s id in the appointments array.
Service not available for booking The selected service is no longer available (e.g. removed by the location). Returned with HTTP status code 422 and error code 438.
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
| appointments required | Array of objects appointment options (services, team members...) |
{- "appointments": [
- {
- "id": 1,
- "services": [
- 331
], - "staff_id": 6544,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}, - {
- "id": 2,
- "services": [
- 99055
], - "staff_id": 6544,
- "datetime": "2025-09-21T23:00:00.000+03:00"
}
]
}{- "success": true,
- "meta": {
- "message": "Created"
}
}To create a session appointment, provide a JSON object containing the online booking parameters. The object includes the following fields:
| Field | Type | Mandatory | Description |
|---|---|---|---|
| phone | string | YES | Client's phone number (eg 79161502239) |
| full name | string | YES | Client name |
| string | NO | Postal address of the client | |
| appointments | Array of objects | YES | Booking options (services, team members...) |
| code | string | NO | Phone number confirmation code sent via SMS (only needed if you need to confirm the number) |
| notify_by_sms | number | NO | Number of hours in advance to send an SMS reminder for the appointment (set to 0 to disable reminders). |
| notify_by_email | number | NO | Number of hours in advance to send an email reminder for the appointment (set to 0 to disable the reminder). |
| comment | string | NO | Appointment Comment |
| api_id | string | NO | External Appointment ID |
The appointments array consists of objects that have the following fields:
| Field | Type | Mandatory | Description |
|---|---|---|---|
| id | number | Yes | Booking ID for post-save feedback (see response to request). |
| services | array of numbers | NO | Array of IDs of the services the client wants to sign up for |
| staff_id | number | YES | ID of the team member the client wants to book with (0 if any team member is selected) |
| datetime | datetime | YES | Session date and time in ISO8601 format (passed for each session in the book_times resource) |
| custom_fields | key-value object | NO | Additional field values that are returned with the appointment |
Additional fields in the appointments array
When additional appointment fields are created (see the "Additional Fields" section), you can pass custom values for them during appointment creation. These fields are unique to each location. Once the additional fields are set up, their values can be included in the optional custom_fields parameter. This should be passed as a key–value object, where each key corresponds to the code of the additional field. Example:
In response to the request to create an appointment, an array of objects will come (the number of objects is equal to the number of objects in the appointments array) with the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | The appointment ID as passed in the original appointments array |
| record_id | number | The unique identifier of the appointment created in the system |
| record_hash | string | A temporary ID used for deleting the appointment immediately after creation |
Errors to be handled:
Incorrect SMS verification code. Returned with HTTP status 422 and error code 432. The SMS verification code entered by the user is invalid.
Selected time slot is already taken. Returned with HTTP status 422 and error code 433. The selected appointment time is unavailable. The response includes the id of the conflicting appointment from the appointments array.
User is blacklisted. Returned with HTTP status 403 and error code 434. The user with the specified phone number is blacklisted and cannot book an appointment.
Invalid phone number format. Returned with HTTP status 422 and error code 431. The user's phone number is not in a valid format.
Missing client name. Returned with HTTP status 422 and error code 435. The client's name was not provided.
No available team members. Returned with HTTP status 422 and error code 436. No team members are available at the selected time (commonly occurs when using a default team member setting).
Overlapping appointments in request. Returned with HTTP status 422 and error code 437. One of the selected times overlaps with another appointment in the same request. The response includes the id of the conflicting appointment from the appointments array.
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
| phone required | string Customer phone |
| fullname required | string Client name |
string Postal address of the client | |
| code | number SMS confirmation code for verifying the phone number. This field is required if the location has phone_confirmation = true |
| comment | string Commentary on the post |
| type | string Appointment source |
| notify_by_sms | number Specifies how many hours before the visit an SMS reminder should be sent to the client. Set to 0 if no reminder is needed. |
| notify_by_email | number Specifies how many hours before the visit an email reminder should be sent to the client. Set to 0 if no reminder is needed. |
| api_id | number Appointment ID from external system |
Array of objects Appointment options (session, services, team member) |
{- "phone": "+1-315-555-0175",
- "fullname": "James Smith",
- "code": 38829,
- "comment": "test appointment!",
- "type": "mobile",
- "notify_by_sms": 6,
- "notify_by_email": 24,
- "api_id": 777,
- "appointments": [
- {
- "id": 1,
- "services": [
- 331
], - "staff_id": 6544,
- "datetime": "2025-09-21T23:00:00.000+03:00",
- "custom_fields": {
- "my_custom_field": 123,
- "some_another_field": [
- "first value",
- "next value"
]
}
}, - {
- "id": 2,
- "services": [
- 99055
], - "staff_id": 6544,
- "datetime": "2025-09-21T23:00:00.000+03:00",
- "custom_fields": {
- "my_custom_field": 456,
- "some_another_field": [
- "next value",
- "last value"
]
}
}
]
}{- "success": true,
- "data": [
- {
- "id": 1,
- "record_id": 2820023,
- "record_hash": "567df655304da9b98487769426d4e76e"
}, - {
- "id": 2,
- "record_id": 2820024,
- "record_hash": "34a45ddabdd446d5d33bdd27fbf855b2"
}
], - "meta": [ ]
}| location_id required | number location ID |
| record_id required | number ID of the appointment to be migrated |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
| datetime | string <date-time> Date and time to which we want to move the appointment |
| comment | string Appointment Comment |
{- "datetime": "2025-09-21T23:00:00.000+03:00",
- "comment": "DODO!"
}{- "success": true,
- "data": {
- "id": 30358,
- "services": [
- {
- "id": 2838,
- "title": "Foot massage",
- "cost": 0,
- "discount": 0
}
], - "company": {
- "id": 4564,
- "title": "Business Example",
- "country_id": 0,
- "country": "United States",
- "city_id": 0,
- "city": "New York",
- "phone": "+1-315-555-0175",
- "timezone": "0",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242
}, - "staff": {
- "id": 924,
- "name": "Alice",
- "spec": "about eu",
- "show_rating": true,
- "rating": 5,
- "votes_count": 1,
- "comments_count": 0
}, - "date": "2025-09-21T23:00:00.000+03:00",
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "comment": "",
- "deleted": true,
- "length": 3600,
- "notify_by_sms": 0,
- "notify_by_email": 0,
- "master_requested": false,
- "online": true,
- "api_id": 0
}
}| location_id required | number location ID |
| record_id required | number Example: 22123 Post ID (enough to view the post if the user is logged in) |
| record_hash required | string Example: 'dawd4fs09rhf0s9fafef0' HASH appointments (required to view the appointment if the user is not authorized) |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "id": 13132699,
- "services": [
- {
- "id": 389043,
- "title": "Correction of extended nails",
- "cost": 2300,
- "price_min": 2300,
- "price_max": 2300,
- "discount": 0,
- "amount": 1,
- "seance_length": 1800
}
], - "company": {
- "id": 4564,
- "title": "Nail studio",
- "country_id": 1,
- "country": "United States",
- "city_id": 2,
- "city": "New York",
- "phone": "+1-315-555-0175",
- "phones": [ ],
- "timezone": "12",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "allow_delete_record": true,
- "allow_change_record": true,
- "site": "www.example.com",
- "currency_short_title": "USD",
- "allow_change_record_delay_step": 0,
- "allow_delete_record_delay_step": 0
}, - "staff": {
- "id": 55436,
- "name": "Natalia",
- "specialization": "Team Member in manicure and pedicure",
- "position": {
- "id": 446,
- "title": "Manicurist"
}, - "show_rating": 1,
- "rating": 4.84,
- "votes_count": 0,
- "comments_count": 37
}, - "clients_count": 1,
- "date": "2025-09-21T23:00:00.000+03:00",
- "datetime": "2017-10-24T17:30:00+0000",
- "create_date": "2017-10-20T21:40:24+0000",
- "comment": "",
- "deleted": true,
- "attendance": 0,
- "length": 1800,
- "notify_by_sms": 0,
- "notify_by_email": 0,
- "master_requested": false,
- "online": true,
- "api_id": "",
- "last_change_date": "2017-10-24T23:54:02+0000",
- "prepaid": false,
- "prepaid_confirmed": false,
- "activity_id": 0
}| location_id required | number location ID |
| activity_id required | integer Group Event ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| fullname required | string Client name |
| phone required | string Customer phone (for example 79161502239) |
string Postal address of the client | |
| code | number SMS confirmation code for verifying the phone number. This field is required if the location has phone_confirmation = true |
| comment | string Appointment Comment |
| notify_by_sms | integer <int32> Specifies how many hours in advance an SMS reminder should be sent before the appointment. Set to 0 to disable SMS reminders. |
| notify_by_email | integer <int32> Specifies how many hours in advance an email reminder should be sent before the appointment. Set to 0 to disable email reminders |
| type | string Appointment source |
| api_id | number Appointment ID from external system |
| clients_count | number number of seats |
{- "success": true,
- "data": {
- "id": 28417878,
- "hash": "9e6a54a1a9b118b65cc39ab6f3c3b5b4"
}, - "meta": [ ]
}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 company or a company 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 | Company chain ID (0 - if the booking form is for a non-chain company) |
| company_id | number | Company 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 company 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 |
| id required | number Example: 1 ID of thebooking form |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": {
- "steps": [
- {
- "step": "master",
- "title": "Choose a team member",
- "num": 2,
- "hidden": false,
- "default": -1
}, - {
- "step": "service",
- "title": "Choose a service",
- "num": 1,
- "hidden": true,
- "default": 196
}, - {
- "step": "datetime",
- "title": "Select session date and time",
- "num": 3,
- "hidden": false,
- "date_hidden": 0,
- "time_hidden": 0,
- "date_default": "2025-09-21T23:00:00.000+03:00",
- "time_default": 27900
}, - {
- "step": "contact",
- "title": "Business Example",
- "num": 3,
- "hidden": false,
- "default": 0
}, - {
- "step": "comfirm",
- "title": "Business Example",
- "num": 4,
- "hidden": false,
- "default": 0
}
], - "style": {
- "show_header": true,
- "main_color": 666,
- "secondary_color": 999,
- "buttons_color": "FFF"
}, - "group_id": 1,
- "company_id": 1,
- "phone_confirmation": false,
- "lang": "en-US",
- "langs": [
- {
- "id": 2,
- "code": "en-US",
- "title": "English"
}, - {
- "id": 4,
- "code": "lv-LV",
- "title": "Latviešu valoda"
}, - {
- "id": 5,
- "code": "et-EE",
- "title": "Eesti keel"
}, - {
- "id": 6,
- "code": "lt-LT",
- "title": "Lietuva"
}, - {
- "id": 7,
- "code": "uk-UK",
- "title": "Ukrainian"
}, - {
- "id": 8,
- "code": "fr-FR",
- "title": "Français"
}, - {
- "id": 9,
- "code": "it-IT",
- "title": "Italiano"
}, - {
- "id": 10,
- "code": "es-ES",
- "title": "Español"
}, - {
- "id": 13,
- "code": "ka-KA",
- "title": "ქართული"
}, - {
- "id": 14,
- "code": "hy-AM",
- "title": "Հայերեն"
}, - {
- "id": 15,
- "code": "kk-KK",
- "title": "Kazakh tili"
}, - {
- "id": 16,
- "code": "hr-HR",
- "title": "Hrvatski jezik"
}, - {
- "id": 17,
- "code": "cs-CS",
- "title": "český jazyk"
}, - {
- "id": 18,
- "code": "ro-RO",
- "title": "Limba Română"
}, - {
- "id": 19,
- "code": "cn-CN",
- "title": "中文"
}, - {
- "id": 20,
- "code": "ar-AR",
- "title": "العَرَبِيَّة"
}, - {
- "id": 21,
- "code": "bg-BG",
- "title": "Bulgarian"
}, - {
- "id": 22,
- "code": "he-IL",
- "title": "עברית"
}, - {
- "id": 23,
- "code": "hu-HU",
- "title": "Magyar nyelv"
}, - {
- "id": 24,
- "code": "Lt-sr-SP",
- "title": "Srpski jezik"
}, - {
- "id": 25,
- "code": "sk-SK",
- "title": "Slovenský jazyk"
}, - {
- "id": 26,
- "code": "mn-MN",
- "title": "Mongol hal"
}, - {
- "id": 27,
- "code": "az-AZ",
- "title": "Azərbaycan dili"
}, - {
- "id": 28,
- "code": "pl-PL",
- "title": "Polszczyzna"
}, - {
- "id": 30,
- "code": "sl-SL",
- "title": "Slòvēnskī"
}
], - "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": [ ]
}Translation is available in one of the languages:
| lang_code required | string Example: en-US Language code. One of the set 'lv-LV', 'en-US', 'ee-EE', 'lt-LT', 'de-DE', 'uk-UK' |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "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": {
- "prefix": "By clicking \"Submit\", you accept",
- "of-use": "Terms of Use",
- "personal-policy": "Privacy Policy"
}, - "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": "Employee",
- "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 company",
- "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": {
- "nominative": "score",
- "genitive": "points",
- "plural-genitive": "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": {
- "services-includes": "What's included",
- "no-restrictions": "No limits",
- "restrictions-only-services": "All services except goods",
- "any-goods": "Any goods",
- "without-goods": "Items not included",
- "without-services": "Services not included",
- "validity": "Validity",
- "validity-without-restrictions": "No expiration date",
- "validity-till": "Before",
- "validity-after-purchase": "since purchase",
- "use-type": "Usage",
- "use-type-multiple": "many times",
- "use-type-single": "once",
- "where-to-use": "Where to use?",
- "where-to-use-show-more": "Show more",
- "where-to-use-all-group": "All over the chain",
- "allow-to-freeze": "Freezing option",
- "title": "Certificate",
- "one-off-use": "Disposable",
- "multi-use": "reusable",
- "denomination": "Denomination",
- "balance": "Remainder"
}, - "subscription": {
- "validity-without-restrictions": "no limit on the number of days",
- "title": "Subscription"
}, - "subscriptions": {
- "all-services": "(all services)",
- "from": "from",
- "valid_until": "Valid until",
- "valid_unlimited": "Validity is not limited",
- "unused": "Subscription has not yet been used",
- "online_sale_button_text": "Buy a certificate or subscription"
}, - "programs": {
- "item_type_id": {
- "any_services_any_goods": "To all services and goods",
- "any_service_no_goods": "For any service",
- "no_services_any_goods": "For any goods",
- "custom_services_no_goods": "For some services",
- "custom_services_any_goods": "For some services and any goods",
- "no_services_custom_goods": "For some products",
- "any_services_custom_goods": "For all services and some products",
- "custom_services_custom_goods": "For some services and products",
- "no_services_no_goods": "Not for services; not for goods"
}, - "determined_action_settings": "Determined by promotion settings"
}
}, - "save": "Save",
- "proceed": "Continue",
- "profile": {
- "name": {
- "saved": "Username changed to",
- "not_known": "Name unknown"
}, - "noFutureRecords": "You have no upcoming sessions",
- "noPastRecords": "You have no past sessions",
- "phone": {
- "confirm": "Verify phone"
}, - "email": {
- "info": "A confirmation email has been sent to you at"
}, - "password": {
- "info": "Password must contain at least eight characters",
- "badPassword": "Wrong password specified",
- "current": "Current Password",
- "new": "New password",
- "invalidTooShort": "",
- "invalidNoDigit": "",
- "invalidNoCapital": "",
- "invalidNoSymbol": ""
}, - "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": {
- "name": "Your name",
- "company_title": "Company name",
- "i_know_promo": "I know promo code",
- "confirm_oferta_1": "I accept the terms",
- "confirm_oferta_2": "contract-offers",
- "submit": "Register",
- "promo": "promo code",
- "unknownError": "A system error has occurred, please try again later"
}
}, - "menu": {
- "account": "Personal data",
- "change_filial": "Change Location",
- "change_city": "Change city",
- "online_record": "Online booking",
- "about": "About company",
- "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": {
- "1": "location",
- "2": "location",
- "3": "locations"
}
}, - "company": {
- "list": "List",
- "on_map": "On the map",
- "no_companies_text_1": "You do not have any active company. To set up companies, 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": {
- "nominative": "Team Member",
- "genitive": "employee"
}, - "service": "Service",
- "time": "Time"
}, - "master": {
- "master": "Team Member",
- "skip_select_master": "Skip employee 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 employee was fired or no longer works at this location",
- "any_master": "Irrelevant",
- "record_is_available": "You can sign up",
- "reviews": {
- "nominative": "review",
- "genitive": "recall",
- "plural-genitive": "reviews"
}, - "prepaid": {
- "forbidden": "No prepayment required",
- "allowed": "Prepayment possible",
- "required": "Prepayment required"
}
}, - "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": {
- "1": "January",
- "2": "February",
- "3": "March",
- "4": "April",
- "5": "May",
- "6": "June",
- "7": "July",
- "10": "October",
- "11": "November",
- "12": "December",
- "08": "August",
- "09": "September"
}, - "by_month_short": {
- "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"
}
}, - "time": {
- "hourCased": {
- "nominative": "hour",
- "genitive": "hours",
- "plural-genitive": "hours"
}, - "weekCased": {
- "nominative": "a week",
- "genitive": "weeks",
- "plural-genitive": "weeks"
}, - "monthCased": {
- "nominative": "month",
- "genitive": "months",
- "plural-genitive": "months"
}, - "yearCased": {
- "nominative": "year",
- "genitive": "of the year",
- "plural-genitive": "years"
}, - "dayCased": {
- "nominative": "day",
- "genitive": "days",
- "plural-genitive": "days"
}, - "minuteCased": {
- "nominative": "minute",
- "genitive": "minutes",
- "accusative": "minute",
- "plural-genitive": "minutes"
}, - "secondCased": {
- "nominative": "second",
- "genitive": "seconds",
- "accusative": "give me a sec",
- "plural-genitive": "seconds"
}, - "at_o_clock": "v",
- "noTimes": "There are no free sessions for the selected day",
- "the_part_of_day": {
- "morning": "Morning",
- "day": "Day",
- "evening": "Evening"
}, - "by_week_day": {
- "Mon": "Mon",
- "Tue": "Tue",
- "Wed": "Wed",
- "Thu": "Thu",
- "Fri": "Fri",
- "Sat": "Sat",
- "Sun": "Sun"
}, - "by_full_week_day": {
- "Monday": "Monday",
- "Tuesday": "Tuesday",
- "Wednesday": "Wednesday",
- "Thursday": "Thursday",
- "Friday": "Friday",
- "Saturday": "Saturday",
- "Sunday": "Sunday"
}
}, - "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": {
- "1": "service",
- "2": "services",
- "3": "services"
}, - "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": {
- "postfix": "before the visit",
- "prefix": "Per"
}, - "orderErrorsActions": {
- "changeService": "Select other services",
- "changeTime": "Choose another time",
- "changeRecord": "Edit Appointment",
- "deleteRecord": "Delete Appointment"
}, - "orderErrors": {
- "unknown": "incorrect recording parameters",
- "server": "something went wrong, please try again later",
- "code_400": "invalid email",
- "code_404": "incorrect recording parameters",
- "code_422": "incorrect recording parameters",
- "code_437": "time overlap with another visit",
- "code_433": "it is not possible to make an appointment at the selected time",
- "code_436": "no employees available for appointment",
- "code_438": "Unable to sign up for selected services",
- "code_501": "Unknown error",
- "bigLetter": {
- "unknown": "Incorrect recording parameters",
- "server": "Something went wrong, please try again later",
- "code_400": "Incorrect email",
- "code_404": "Incorrect recording parameters",
- "code_422": "Incorrect recording parameters",
- "code_437": "Time overlap with another visit",
- "code_433": "Unable to book at the selected time",
- "code_436": "No employees available for recording",
- "code_438": "Unable to sign up for selected services",
- "code_501": "Unknown error"
}
}, - "errors": {
- "name": {
- "required": "Enter your name"
}, - "company": {
- "required": "Enter company name"
}, - "phone": {
- "required": "Enter phone",
- "incorrect": "Wrong number"
}, - "email": {
- "required": "Enter email",
- "invalid": "Incorrect email format"
}, - "agreement": {
- "required": "You must accept the user agreement"
}, - "agreement_privacy_and_terms_of_use": {
- "required": "To continue, you must accept the user agreement, as well as agree to the processing of personal data"
}, - "comment_default": {
- "required": "Enter a comment"
}, - "comment": {
- "required": "Fill in the field"
}, - "code": {
- "incorrect": "Invalid code from SMS"
}
}
}, - "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": {
- "incorrect_login_password": "There is no user with this username or password",
- "undefined_error": "A system error has occurred, please try logging in later"
}
}, - "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": {
- "select": "Select filters",
- "reset": "Reset",
- "apply": "Apply"
}
}, - "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"
}End-customer account. Manage user profile, appointments, and other operations.
Updating a team member’s data in online booking.
When updating a phone number, the confirmation_code field must be included in the request. This code should be obtained using the SMS confirmation code of the phone number to change data
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| name | string Name |
string | |
| phone | string Phone number |
| confirmation_code | string SMS confirmation code (when changing phone number) |
{- "name": "James Smith",
- "phone": "+1-315-555-0175",
- "confirmation_code": "1234"
}{- "success": true,
- "meta": {
- "message": "Accepted"
}
}Retrieve online booking user data.
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "0": "152afb01134237bc844d7e",
- "id": 32132133,
- "user_token": "152afb01134237bc844d7e",
- "name": "James",
- "phone": "+1-315-555-0175",
- "login": "j.smith",
}Updating the password of an online booking user.
The response comes with a new user token.
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| old_password | string Current Password |
| new_password | string New password |
{- "old_password": "qwerty123",
- "new_password": "example!"
}{- "success": true,
- "data": {
- "user_token": "4de9d8cc108c0"
}, - "meta": [ ]
}The request must contain one of two parameters: company_id or group_id
| company_id required | integer location ID |
| group_id required | integer Chain ID |
| phone required | string Phone number |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "meta": {
- "message": "Accepted"
}
}The JSON Object containing the user appointment parameters has the following fields:
| Field | Type | Mandatory | Description |
|---|---|---|---|
| id | number | YES | Appointment ID |
| services | array of numbers | YES | List of ID service appointments |
| location | object | YES | location parameters |
| staff | object | YES | Parameters of the team member who was booked |
| clients_count | int | YES | Number of clients |
| date | string | YES | Session date |
| datetime | string | YES | Session date in ISO |
| create_date | string | YES | Appointment creation date |
| length | number | YES | Session duration |
| deleted | boolean | YES | Has the appointment been created ? (true if deleted) |
| notify_by_sms | number | NO | Number of hours in advance to send an SMS reminder for the appointment. Set to 0 to disable SMS reminders |
| notify_by_email | number | NO | Number of hours in advance to send an email reminder for the appointment. Set to 0 to disable email reminders |
| comment | string | YES | Appointment Comment |
| master_requested | boolean | YES | Whether a specific team member was specified when appointment (false if "any team member" was specified) |
| online | boolean | YES | Indicates whether the appointment was created online by the client (true) or manually by an administrator (false) |
| visit_attendance | number | YES | 2 - The user confirmed the appointment, 1 - The user came, the services were provided, 0 - the user was waiting, -1 - the user did not come to visit |
| api_id | string | NO | External Appointment ID |
| last_change_date | string | NO | Date of the last edit of the appointment |
| prepaid | boolean | NO | Is online payment available for appointment |
| prepaid_confirmed | boolean | NO | Online payment status |
| last_change_date | string | NO | Date of the last edit of the appointment |
| activity_id | int | NO | ID bringing group event |
Each object in the services array has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | Service ID |
| title | string | Service name |
| cost | float | Service cost |
| price_min | float | Minimum price of the service |
| price_max | float | Maximum service price |
| discount | float | Discount |
| amount | int | Number of ordered services |
| session_length | int | Service duration in seconds (only if filter by team member is set) |
The location object has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | location ID |
| title | string | location name |
| country_id | number | Identifier of the country in which the location is located |
| country | string | location name |
| city_id | number | Identifier of the city where the location is located) |
| city | string | location city name |
| time zone | string | timezone locations |
| address | string | Address where the location is located |
| phone | string | location's main phone number |
| phones | array of strings | All phone numbers of the location |
| coordinate_lat | float | Latitude where the location is located |
| coordinate lng | float | Longitude |
| allow_delete_record | boolean | Is it possible to delete an appointment |
| allow_change_record | boolean | Is it possible to reschedule the appointment |
| site | string | location website |
| currency_short_title | string | Currency symbol |
| allow_change_record_delay_step | int | Time after which you can reschedule the appointment |
| allow_delete_record_delay_step | int | Time after which you can delete an appointment |
The staff object has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | team member ID |
| name | string | team member name |
| specialization | string | team member specialization |
| position | object | team member position |
| show_rating | number | Whether to show team member's rating (1 - show, 0 - don't show) |
| rating | number | team member rating |
| votes_count | number | Number of votes rated team member |
| comments_count | number | Number of comments to a team member |
| avatar | string | Path to team member avatar file |
| record_id required | number Example: 22123 Appointment ID |
| record_hash required | string Example: 'dawd4fs09rhf0s9fafef0' HASH of the appointment |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 13132699,
- "services": [
- {
- "id": 389043,
- "title": "Correction of extended nails",
- "cost": 2300,
- "price_min": 2300,
- "price_max": 2300,
- "discount": 0,
- "amount": 1,
- "seance_length": 1800
}
], - "company": {
- "id": 4564,
- "title": "Nail studio",
- "country_id": 1,
- "country": "United States",
- "city_id": 2,
- "city": "New York",
- "phone": "+1-315-555-0175",
- "phones": [ ],
- "timezone": "12",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "allow_delete_record": true,
- "allow_change_record": true,
- "site": "www.example.com",
- "currency_short_title": "USD",
- "allow_change_record_delay_step": 0,
- "allow_delete_record_delay_step": 0
}, - "staff": {
- "id": 55436,
- "name": "Natalia",
- "specialization": "Manicure and pedicure",
- "position": {
- "id": 446,
- "title": "Manicurist"
}, - "show_rating": true,
- "rating": 4.84,
- "votes_count": 0,
- "comments_count": 37
}, - "clients_count": 1,
- "date": "2025-09-21T23:00:00.000+03:00",
- "datetime": "2017-10-24T17:30:00+0000",
- "create_date": "2017-10-20T21:40:24+0000",
- "comment": "",
- "deleted": true,
- "attendance": 0,
- "length": 1800,
- "notify_by_sms": 0,
- "notify_by_email": 0,
- "master_requested": false,
- "online": true,
- "api_id": "",
- "last_change_date": "2017-10-24T23:54:02+0000",
- "prepaid": false,
- "prepaid_confirmed": false,
- "activity_id": 0
}, - {
- "id": 13133413,
- "services": [
- {
- "id": 389045,
- "title": "Hand massage (10 min)",
- "cost": 300,
- "price_min": 300,
- "price_max": 400,
- "discount": 0,
- "amount": 1,
- "seance_length": 1800
}
], - "company": {
- "id": 4564,
- "title": "Nail studio",
- "country_id": 1,
- "country": "United States",
- "city_id": 2,
- "city": "New York",
- "phone": "+1-315-555-0175",
- "phones": [ ],
- "timezone": "12",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "allow_delete_record": true,
- "allow_change_record": true,
- "site": "www.example.com",
- "currency_short_title": "USD",
- "allow_change_record_delay_step": 0,
- "allow_delete_record_delay_step": 0
}, - "staff": {
- "id": 55436,
- "name": "Natalia",
- "specialization": "Manicure and pedicure",
- "position": {
- "id": 446,
- "title": "Manicurist"
}, - "show_rating": true,
- "rating": 4.84,
- "votes_count": 0,
- "comments_count": 37
}, - "clients_count": 1,
- "date": "2025-09-21T23:00:00.000+03:00",
- "datetime": "2017-10-24T17:30:00+0000",
- "create_date": "2017-10-20T21:40:24+0000",
- "comment": "",
- "deleted": true,
- "attendance": 0,
- "length": 1800,
- "notify_by_sms": 0,
- "notify_by_email": 0,
- "master_requested": false,
- "online": true,
- "api_id": "",
- "last_change_date": "2017-10-24T23:54:02+0000",
- "prepaid": false,
- "prepaid_confirmed": false,
- "activity_id": 0
}
], - "meta": [ ]
}| record_id required | number Example: 22123 Appointment ID (enough to delete the appointment if the user is authorized) |
| record_hash required | string Example: 'dawd4fs09rhf0s9fafef0' HASH appointments (required to delete the record if the user is not authorized) |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}SaaS users authentication methods. Get access tokens required for all API operations.
Get a list of locations with data
| id | number Example: id=4564 Filter by location ID |
| group_id | number Example: group_id=83 Filter by location chain ID Default: 83 |
| my | number Example: my=1 For authorized user only. If you need locations that the user has rights to manage |
| active | number Example: active=1 If you need to get only locations with an active license and an available appointment |
| moderated | number Example: moderated=1 If you need to get only moderated locations, whose content is checked for publication |
| forBooking | number Example: forBooking=1 Include date and time of the next free session in the location (ISO8601) |
| show_groups | number Example: show_groups=1 Include in the location object a list of chains that this location belongs to |
| city_id | |
| showBookforms | number Example: showBookforms=1 Include in the location object a list of location online booking forms |
| min_id | number Example: min_id=1000 Filter by minimum location ID |
| show_deleted | number Example: show_deleted=1 Include deleted locations |
| hide_record_type_single | number Example: hide_record_type_single=1 Hide locations with individual appointment |
| hide_record_type_activity | number Example: hide_record_type_activity=1 Hide locations with group appointment |
| hide_record_type_mixed | number Example: hide_record_type_mixed=1 Hide locations with mixed appointment |
| business_group_id | number Example: business_group_id=1 Filter by business group ID |
| business_type_id | number Example: business_type_id=1 Filter by business type ID |
| include | Array of strings Items Enum: "staff" "positions" "accounts" "storages" "expenses" Example: include=staff&include=positions Include additional data in the location object |
| count | number Number of locations per page |
| page | number Page number |
| Accept required | string Must be |
| Content-Type required | string Must be |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": [
- {
- "id": 1050,
- "title": "La Visage",
- "public_title": "La Visage Beauty",
- "short_descr": "Beauty saloon",
- "active": 1,
- "phone": "+1-315-555-0175",
- "phones": [
- "+1-315-555-0175"
], - "country_id": 7,
- "schedule": "",
- "country": "United States",
- "city_id": 181,
- "city": "New York",
- "timezone": -5,
- "timezone_name": "America/New_York",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "phone_confirmation": true,
- "active_staff_count": 2,
- "next_slot": "2023-03-23T10:10:00+0300",
- "app_ios": "",
- "app_android": "",
- "currency_short_title": "$",
- "reminds_sms_disabled": false,
- "reminds_sms_default": 1,
- "group_priority": 900,
- "bookform_group_priority": 0,
- "description": "<p>Welcome to La Visage</p>",
- "photos": [ ],
- "booking_widget_promo": null
}
], - "meta": [ ]
}Create new location
| Accept required | string Must be |
| Content-Type required | string Must be |
| Authorization required | string Bearer partner_token, User user_token |
| title | string location name |
| country_id | number ID of the country in which the location is located (method to get a list of countries) |
| city_id | number Identifier of the city in which the location is located (method to get a list of cities) |
| address | string location address |
| site | string location website |
| coordinate_lat | number <float> Latitude |
| coordinate_lot | number <float> Longitude |
| business_type_id | number Business type |
| short_descr | string location category |
{- "title": "James Smith LLC",
- "country_id": 1,
- "city_id": 2,
- "address": "New York, 787 Jackson Drive",
- "site": "james-smith-company.com",
- "coordinate_lat": 40.73061,
- "coordinate_lot": "-73.935242",
- "business_type_id": 1,
- "short_descr": "Beauty studio"
}{- "success": true,
- "data": {
- "id": 1050,
- "title": "James Smith LLC",
- "short_descr": "Beauty studio",
- "active": 1,
- "phone": "+1-315-555-0175",
- "country_id": 7,
- "schedule": "",
- "country": "United States",
- "city_id": 181,
- "city": "New York",
- "timezone_name": "America/New_York",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "phone_confirmation": true,
- "active_staff_count": 2,
- "app_ios": "",
- "app_android": "",
- "currency_short_title": "R"
}, - "meta": [ ]
}Getting information about the location.
| location_id required | number Example: 37532 The ID of the location to get information about. |
| my | number Example: my=1 For authorized user only. If you need additional data for the location that the user has rights to manage |
| forBooking | number Example: forBooking=1 Date and time of the next free session in the location (ISO8601). |
| show_groups | number Example: show_groups=1 Include in the location object a list of chains that this location belongs to |
| showBookforms | number Example: showBookforms=1 Show location online booking forms (widgets) |
| bookform_id | number Example: bookform_id=19203 Show url of online booking form with specified ID |
| Accept required | string Must be |
| Content-Type required | string Must be |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "id": 37532,
- "title": "James Smith LLC",
- "country_id": 7,
- "country": "United States",
- "city_id": 181,
- "city": "New York",
- "timezone_name": "America/New_York",
- "address": "New York, 787 Jackson Drive",
- "zip": "11435",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "short_descr": "Beauty studio",
- "social": {
- "facebook": "",
- "instagram": "instagram.com/james_smith_company/",
- "telegram": "",
- "whatsapp": "",
- "viber": ""
}, - "site": "james-smith-company.com",
- "business_type_id": 1,
- "description": "The <strong>James Smith</strong> location",
- "phone_confirmation": true,
- "active_staff_count": 2,
- "next_slot": "2023-03-23T10:10:00+0300",
- "group_priority": 900,
- "push_notification_phone_confirm": 1,
- "main_group_id": 9206,
- "main_group": {
- "id": 9206,
- "title": "James Smith LLC main location chain"
}, - "groups": {
- "9206": {
- "id": 9206,
- "title": "James Smith LLC main location chain"
}, - "9207": {
- "id": 9207,
- "title": "James Smith LLC extra location chain"
}
}, - "bookforms": [
- {
- "id": 19203,
- "title": "James Smith LLC location appointment form",
- "is_default": 0,
}
], - "access": { }
}, - "meta": [ ]
}Change location data
| location_id required | number Example: 37532 location ID |
| Accept required | string Must be |
| Content-Type required | string Must be |
| Authorization required | string Bearer partner_token, User user_token |
| title | string location name |
| country_id | number Country ID (has higher priority then country) |
| country | string Country |
| city_id | number City ID (has higher priority then city) |
| city | string City |
| address | string location address |
| zip | string Zip code |
| phones | Array of strings location phone numbers |
object location social media | |
| site | string location website |
| coordinate_lat | number <float> Latitude |
| coordinate_lon | number <float> Longitude |
| description | string <html> Description |
| business_type_id | number <int32> Business type |
| short_descr | string Business category |
{- "title": "James Smith LLC",
- "country": "United States",
- "city": "New York",
- "address": "New York, 787 Jackson Drive",
- "zip": "11435",
- "phones": [
- "12125357710",
- "12125357711"
], - "social": {
- "instagram": "instagram.com/james_smith_company/"
}, - "site": "james-smith-company.com",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "description": "The <strong>James Smith</strong> location",
- "business_type_id": 1,
- "short_descr": "Beauty studio"
}{- "success": true,
- "data": {
- "id": 37532,
- "title": "James Smith LLC",
- "country_id": 7,
- "country": "United States",
- "city_id": 181,
- "city": "New York",
- "timezone_name": "Europe/Moscow",
- "address": "New York, 787 Jackson Drive",
- "zip": "11435",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "short_descr": "Beauty studio",
- "social": {
- "facebook": "",
- "instagram": "instagram.com/james_smith_company/",
- "telegram": "",
- "whatsapp": "",
- "viber": ""
}, - "site": "james-smith-company.com",
- "business_type_id": 1,
- "description": "The <strong>James Smith</strong> location",
- "phone_confirmation": true,
- "group_priority": 900,
- "push_notification_phone_confirm": 1,
- "access": { }
}, - "meta": [ ]
}Delete a location.
| location_id required | number Example: 37532 location ID |
| Accept required | string Must be |
| Content-Type required | string Must be |
| Authorization required | string Bearer partner_token, User user_token |
{- "errors": {
- "code": 401,
- "message": "Authentication needed"
}, - "meta": {
- "message": "Authentication needed."
}
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title | string Service category name |
| api_id | string External Category ID |
| weight | number Category weight (used to sort categories when displayed) |
| staff | Array of numbers List of IDs of team members providing services from the category |
{- "title": "Haircut very feminine",
- "api_id": "adw322",
- "weight": 111,
- "staff": [
- 5006,
- 8901
]
}{- "success": true,
- "data": {
- "id": 3,
- "title": "Haircut very feminine",
- "api_id": "adw322",
- "weight": 111,
- "staff": [
- 5006,
- 8901
]
}, - "meta": [ ]
}Returns a list of all services for the specified location
| location_id required | number location ID |
| staff_id | number Team member ID, if you want to filter by team member |
| category_id | number Category ID, if you want to filter by category |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 10279685,
- "salon_service_id": 11486182,
- "title": "Service name",
- "booking_title": "Service name",
- "category_id": 10279684,
- "price_min": 0,
- "price_max": 0,
- "duration": 3600,
- "discount": 0,
- "comment": "",
- "weight": 1,
- "active": 1
}
], - "meta": [ ]
}Method to create a service
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorizarion required | string Bearer partner_token, User user_token |
| title | string Service name |
| category_id | number Service Category ID |
| price_min | number <float> The minimum cost of the service |
| price_max | number <float> Maximum cost of the service |
| duration | number <float> Service duration, default is 3600 seconds |
| discount | number <float> Service discount |
| comment | string Comment on the service |
| weight | number Service weight (used to sort services when displayed) |
| active | number Is the service available for online booking? 1 - available, 0 not available. |
| api_id | string External Service ID |
Array of objects team members who provide the service, along with the duration of the service for each team member |
{- "title": "Men's haircut",
- "category_id": 83167,
- "price_min": 1300,
- "price_max": 1300,
- "duration": 3600,
- "discount": 0,
- "comment": "",
- "weight": 6,
- "active": 1,
- "api_id": "00000000042",
- "staff": [
- {
- "id": 5905,
- "seance_length": 2700
}, - {
- "id": 5907,
- "seance_length": 3600
}, - {
- "id": 8973,
- "seance_length": 3600
}, - {
- "id": 13616,
- "seance_length": 3600
}, - {
- "id": 16681,
- "seance_length": 3600
}, - {
- "id": 1796,
- "seance_length": 3600
}, - {
- "id": 34006,
- "seance_length": 3600
}
]
}{- "success": true,
- "data": {
- "id": 83169,
- "title": "Men's haircut",
- "category_id": 83167,
- "price_min": 1300,
- "price_max": 1300,
- "duration": 3600,
- "discount": 0,
- "comment": "",
- "weight": 6,
- "active": 1,
- "api_id": 42,
- "staff": [
- {
- "id": 5905,
- "seance_length": 2700
}, - {
- "id": 5907,
- "seance_length": 3600
}, - {
- "id": 8973,
- "seance_length": 3600
}, - {
- "id": 13616,
- "seance_length": 3600
}, - {
- "id": 16681,
- "seance_length": 3600
}, - {
- "id": 1796,
- "seance_length": 3600
}, - {
- "id": 34006,
- "seance_length": 3600
}
]
}, - "meta": [ ]
}Get a list of service categories
| location_id required | number location ID |
| id required | number Service category identifier |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": [
- {
- "id": 345,
- "title": "Haircuts for men",
- "api_id": "adw322",
- "weight": 10,
- "staff": [
- 5006,
- 8901,
- 26514,
- 26516,
- 26519,
- 26520
]
}, - {
- "id": 3456,
- "title": "Haircuts for women",
- "api_id": "adw323",
- "weight": 9,
- "staff": [
- 5006,
- 8901
]
}
], - "meta": [ ]
}| location_id required | number location ID |
| service_id required | number Service ID, if you need to work with a specific service. |
| staff_id | number team member ID, if you want to filter by team member |
| category_id | number Category ID, if you want to filter by category |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": [
- {
- "id": 79067,
- "title": "shaving head",
- "category_id": 4,
- "price_min": 1000,
- "price_max": 1000,
- "duration": 3600,
- "discount": 0,
- "comment": "",
- "weight": 2,
- "active": 1,
- "api_id": "",
- "staff": [ ]
}, - {
- "id": 83169,
- "title": "Men's haircut",
- "category_id": 83167,
- "price_min": 1300,
- "price_max": 1300,
- "duration": 3600,
- "discount": 0,
- "comment": "",
- "weight": 6,
- "active": 1,
- "api_id": 42,
- "staff": [
- {
- "id": 5905,
- "seance_length": 2700
}, - {
- "id": 5907,
- "seance_length": 3600
}, - {
- "id": 8973,
- "seance_length": 3600
}, - {
- "id": 13616,
- "seance_length": 3600
}, - {
- "id": 16681,
- "seance_length": 3600
}, - {
- "id": 17969,
- "seance_length": 3600
}, - {
- "id": 34006,
- "seance_length": 3600
}
], - "image_group": {
- "id": 72234,
- "entity": "settings_service",
- "entity_id": 389927,
- "images": {
- "basic": {
- "id": 186791,
- "width": "372",
- "height": "280",
- "type": "jpeg",
- "image_group_id": 72234,
- "version": "basic"
}
}
}
}
], - "meta": [ ]
}Deprecated. Method to change the service
| location_id required | number location ID |
| service_id required | number Service ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title | string Service name |
| category_id | number Service Category ID |
| price_min | number <float> The minimum cost of the service |
| price_max | number <float> Maximum cost of the service |
| duration | number <float> Service duration, default is 3600 seconds |
| discount | number <float> Service discount |
| comment | string Comment on the service |
| weight | number Service weight (used to sort services when displayed) |
| active | number Is the service available for online booking? 1 - available, 0 not available. |
| api_id | string External Service ID |
Array of objects team members who provide the service, along with the duration of the service for each team member |
{- "title": "Men's haircut",
- "category_id": 83167,
- "price_min": 1300,
- "price_max": 1300,
- "duration": 3600,
- "discount": 0,
- "comment": "",
- "weight": 6,
- "active": 1,
- "api_id": "00000000042",
- "staff": [
- {
- "id": 5905,
- "seance_length": 2700
}, - {
- "id": 5907,
- "seance_length": 3600
}, - {
- "id": 8973,
- "seance_length": 3600
}, - {
- "id": 13616,
- "seance_length": 3600
}, - {
- "id": 16681,
- "seance_length": 3600
}, - {
- "id": 1796,
- "seance_length": 3600
}, - {
- "id": 34006,
- "seance_length": 3600
}
]
}{- "success": true,
- "data": {
- "id": 83169,
- "title": "Men's haircut",
- "category_id": 83167,
- "price_min": 1300,
- "price_max": 1300,
- "duration": 3600,
- "discount": 0,
- "comment": "",
- "weight": 6,
- "active": 1,
- "api_id": 42,
- "staff": [
- {
- "id": 5905,
- "seance_length": 2700
}, - {
- "id": 5907,
- "seance_length": 3600
}, - {
- "id": 8973,
- "seance_length": 3600
}, - {
- "id": 13616,
- "seance_length": 3600
}, - {
- "id": 16681,
- "seance_length": 3600
}, - {
- "id": 1796,
- "seance_length": 3600
}, - {
- "id": 34006,
- "seance_length": 3600
}
]
}, - "meta": [ ]
}Method to change the service
| location_id required | number location ID |
| service_id required | number Service ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title required | string Service name |
| booking_title required | string Service name for appointment |
| category_id required | number ID service category |
| price_min required | number <float> Minimum cost of the service |
| price_max required | number <float> Maximum cost of the service |
| duration required | number Service duration, default value is 3600 |
| discount | number <float> Service discount |
| comment | string Comment on the service |
| is_multi required | boolean false - Appointment, true - Event |
| tax_variant required | number Bill ID |
| vat_id required | number VAT ID |
| is_need_limit_date required | boolean The service is available for a limited time |
| seance_search_start required | number Start of period is the appointment available, in seconds |
| seance_search_finish required | number End of period is the appointment available, in seconds |
| step required | number Display interval of slots, in seconds |
| seance_search_step required | number Search interval of slots, in seconds |
| weight | number Service weight (used to sort services when displayed) |
| active | number 1 - available for online recording, 0 - not available |
| api_id | string External Service ID |
Array of objects List of team members providing the service and session duration |
{- "title": "Men's haircut",
- "booking_title": "Men's haircut",
- "category_id": 83167,
- "price_min": 1300,
- "price_max": 1300,
- "duration": 3600,
- "discount": 0,
- "tax_variant": 1,
- "vat_id": 3,
- "is_multi": false,
- "is_need_limit_date": true,
- "date_from": "2022-09-19",
- "date_to": "2022-09-30",
- "seance_search_start": 36000,
- "seance_search_finish": 84600,
- "step": 300,
- "seance_search_step": 900,
- "comment": "",
- "weight": 6,
- "active": 1,
- "api_id": "00000000042",
- "staff": [
- {
- "id": 5905,
- "seance_length": 2700
}, - {
- "id": 5907,
- "seance_length": 3600
}, - {
- "id": 8973,
- "seance_length": 3600
}, - {
- "id": 13616,
- "seance_length": 3600
}, - {
- "id": 16681,
- "seance_length": 3600
}, - {
- "id": 1796,
- "seance_length": 3600
}, - {
- "id": 34006,
- "seance_length": 3600
}
]
}{- "success": true,
- "data": {
- "booking_title": "Men's haircut",
- "tax_variant": 0,
- "vat_id": 2,
- "print_title": "Men's haircut",
- "service_type": 1,
- "api_service_id": 0,
- "repeat_visit_days_step": "null",
- "seance_search_start": 1800,
- "seance_search_finish": 84600,
- "seance_search_step": 900,
- "step": 300,
- "is_need_limit_date": true,
- "date_from": "2022-09-19",
- "date_to": "2022-09-30",
- "schedule_template_type": 2,
- "online_invoicing_status": 0,
- "is_abonement_autopayment_enabled": 0,
- "autopayment_before_visit_time": 0,
- "abonement_restriction_value": 0,
- "is_chain": false,
- "is_price_managed_only_in_chain": false,
- "is_comment_managed_only_in_chain": false,
- "price_prepaid_amount": 0,
- "price_prepaid_percent": 100,
- "id": 10832934,
- "salon_service_id": 12192004,
- "title": "Men's haircut",
- "category_id": 10832928,
- "price_min": 250,
- "price_max": 1200,
- "discount": 0,
- "comment": "",
- "weight": 0,
- "active": 1,
- "api_id": 0,
- "prepaid": "forbidden",
- "is_multi": false,
- "capacity": 0,
- "image_group": [ ],
- "staff": [
- {
- "id": 5905,
- "seance_length": 2700,
- "technological_card_id": 0
}, - {
- "id": 5907,
- "seance_length": 3600,
- "technological_card_id": 0
}
], - "dates": [
- "2022-09-19",
- "2022-09-20",
- "2022-09-21",
- "2022-09-22",
- "2022-09-23",
- "2022-09-24",
- "2022-09-25",
- "2022-09-26",
- "2022-09-27",
- "2022-09-28",
- "2022-09-29",
- "2022-09-30"
], - "duration": 3600,
- "resources": [ ],
- "is_online": true
}, - "meta": [ ]
}Method to remove a service
| location_id required | number location ID |
| service_id required | number Service ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| location_id required | number location ID |
| id required | number Service Category ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": {
- "id": 3,
- "salon_service_id": 15,
- "title": "Haircuts for women",
- "weight": 12,
- "staff": [
- 5006,
- 8901
]
}, - "meta": [ ]
}| location_id required | number location ID |
| id required | number Service Category ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title | string Service category name |
| api_id | string External Category ID |
| weight | number Category weight (used to sort categories when displayed) |
| staff | Array of numbers List of IDs of team members providing services from the category |
{- "title": "Haircut very feminine",
- "api_id": "adw322",
- "weight": 111,
- "staff": [
- 5006,
- 8901
]
}{- "success": true,
- "data": {
- "id": 3,
- "salon_service_id": 15,
- "title": "Haircuts for women",
- "weight": 15,
- "staff": [
- 5006,
- 8901
]
}, - "meta": [ ]
}| location_id required | number location ID |
| id required | number Service Category ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Conetnt-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| location_id required | number location ID |
| id required | number Service Category ID |
| staff_id | number team member ID (to get categories associated with a team member) |
| Accept required | string e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 345,
- "salon_service_id": 353,
- "title": "Haircuts for men",
- "api_id": "adw322",
- "weight": 10,
- "staff": [
- 5006,
- 8901,
- 26514,
- 26516,
- 26519,
- 26520
]
}, - {
- "id": 3456,
- "salon_service_id": 3252,
- "title": "Haircuts for women",
- "api_id": "adw323",
- "weight": 9,
- "staff": [
- 5006,
- 8901
]
}
], - "meta": {
- "total_count": 2
}
}1) - company ID1) - service ID| location_id required | number location ID |
| service_id required | number Service ID, if you need to work with a specific service. |
| staff_id | number team member ID, if you want to filter by team member |
| category_id | number Category ID, if you want to filter by category |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 79067,
- "title": "shaving head",
- "category_id": 4,
- "price_min": 1000,
- "price_max": 1000,
- "discount": 0,
- "comment": "",
- "weight": 2,
- "active": 1,
- "api_id": "",
- "staff": [ ]
}, - {
- "id": 83169,
- "title": "Men's haircut",
- "category_id": 83167,
- "price_min": 1300,
- "price_max": 1300,
- "discount": 0,
- "comment": "",
- "weight": 6,
- "active": 1,
- "api_id": 42,
- "staff": [
- {
- "id": 5905,
- "seance_length": 2700
}, - {
- "id": 5907,
- "seance_length": 3600
}, - {
- "id": 8973,
- "seance_length": 3600
}, - {
- "id": 13616,
- "seance_length": 3600
}, - {
- "id": 16681,
- "seance_length": 3600
}, - {
- "id": 17969,
- "seance_length": 3600
}, - {
- "id": 34006,
- "seance_length": 3600
}
], - "image_group": {
- "id": 72234,
- "entity": "settings_service",
- "entity_id": 389927,
- "images": {
- "basic": {
- "id": 186791,
- "width": "372",
- "height": "280",
- "type": "jpeg",
- "image_group_id": 72234,
- "version": "basic"
}
}
}
}
], - "meta": {
- "total_count": 2
}
}Creates an employee service link with provided duration and bill of materials.
| location_id required | number Example: 123 ID of a location. |
| service_id required | number Example: 123 ID of service. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| master_id required | number ID of a team member who provides the service. |
| seance_length required | number Duration of service provision by the specified employee in seconds, |
| technological_card_id required | number or null ID of bill of materials used while providing the service. |
{- "master_id": 123,
- "seance_length": 3600,
- "technological_card_id": 123
}{- "success": true,
- "data": {
- "service_id": 123,
- "master_id": 123,
- "length": 3600,
- "technological_card_id": 123
}, - "meta": { }
}Updates an employee service link with provided duration and bill of materials.
| location_id required | number Example: 123 ID of a location. |
| service_id required | number Example: 123 ID of service. |
| team_member_id required | number Example: 123 ID of staff. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| seance_length required | number Duration of service provision by the specified employee in seconds, |
| technological_card_id required | number or null ID of bill of materials used while providing the service. |
{- "seance_length": 3600,
- "technological_card_id": 123
}{- "success": true,
- "data": {
- "service_id": 123,
- "master_id": 123,
- "length": 3600,
- "technological_card_id": 123
}, - "meta": { }
}Deletes an employee service link.
| location_id required | number Example: 123 ID of a location. |
| service_id required | number Example: 123 ID of service. |
| team_member_id required | number Example: 123 ID of staff. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": null,
- "meta": { }
}| chain_id required | integer Chain ID |
| include | string Value: "services" Include additional resources in response |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
[- {
- "id": 41,
- "title": "Service category",
- "services": [
- {
- "id": 52,
- "title": "Service 1"
}, - {
- "id": 45,
- "title": "Service 2"
}
]
}
]Staff member management, including positions, service assignments, and team member profiles.
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| name | string team member name |
| specialization | string team member specialization |
| weight | number team member weight. team members are sorted by weight on exit, heavier first |
| information | string team member information (HTML format) |
| api_id | string External team member ID |
| hidden | number Display status in online appointment, 1 - hidden, 0 - not hidden |
| fired | number the team member's dismissal status, 1 - dismissed, 0 - not dismissed |
| user_id | number Linked user ID, 0 - unlink user |
{- "name": "Basil",
- "specialization": "the hairdresser",
- "weight": 10,
- "information": "Trimming with three hands",
- "api_id": "42",
- "hidden": 0,
- "fired": 0,
- "user_id": 123
}{- "success": true,
- "data": {
- "id": 17969,
- "api_id": 42,
- "name": "Basil",
- "specialization": "the hairdresser",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "show_rating": false,
- "rating": 0,
- "votes_count": 0,
- "user_id": 12345,
- "comments_count": 0,
- "weight": 10,
- "information": "<span><span><span> </span></span></span>",
- "hidden": 0,
- "fired": 0,
- "status": 0
}, - "meta": [ ]
}| location_id required | number location ID |
| team_member_id required | number team member ID, if you need to work with a specific team member. |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": [
- {
- "id": 17969,
- "name": "Basil",
- "specialization": "the hairdresser",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "show_rating": false,
- "rating": 0,
- "votes_count": 0,
- "user_id": 12345,
- "comments_count": 0,
- "weight": 10,
- "information": "<span><span><span> </span></span></span>",
- "hidden": 0,
- "fired": 0,
- "status": 0,
- "image_group": {
- "id": 72250,
- "entity": "master",
- "entity_id": 26427,
- "images": {
- "sm": {
- "id": 186817,
- "width": "100",
- "height": "100",
- "type": "jpeg",
- "image_group_id": 72250,
- "version": "sm"
}, - "norm": {
- "id": 186818,
- "width": "180",
- "height": "220",
- "type": "jpeg",
- "image_group_id": 72250,
- "version": "norm"
}, - "origin": {
- "id": 186819,
- "width": "800",
- "height": "600",
- "type": "jpeg",
- "image_group_id": 72250,
- "version": "origin"
}
}
}
}, - {
- "id": 34006,
- "api_id": 42,
- "name": "Denis",
- "specialization": "the hairdresser",
- "position": [ ],
- "show_rating": false,
- "rating": 0,
- "votes_count": 0,
- "user_id": 12345,
- "comments_count": 0,
- "weight": 9,
- "information": "<span><span> </span></span>",
- "hidden": 0,
- "fired": 0,
- "status": 0,
- "image_group": [ ]
}, - {
- "id": 13616,
- "name": "Alexander",
- "specialization": "the hairdresser",
- "position": [ ],
- "show_rating": false,
- "rating": 4.76921,
- "votes_count": 0,
- "user_id": 12345,
- "comments_count": 26,
- "weight": 8,
- "information": "<span><span><span> </span></span></span>",
- "hidden": 0,
- "fired": 0,
- "status": 0,
- "image_group": [ ]
}
], - "meta": [ ]
}| location_id required | number location ID |
| team_member_id required | number team member ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| name | string team member name |
| specialization | string team member specialization |
| weight | number team member weight. team members are sorted by weight on exit, heavier first |
| information | string team member information (HTML format) |
| api_id | string External team member ID |
| hidden | number Display status in online appointment, 1 - hidden, 0 - not hidden |
| fired | number the team member's dismissal status, 1 - dismissed, 0 - not dismissed |
| user_id | number Linked user ID, 0 - unlink user |
{- "success": true,
- "data": {
- "id": 17969,
- "api_id": 42,
- "name": "Basil",
- "specialization": "the hairdresser",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "show_rating": false,
- "rating": 0,
- "votes_count": 0,
- "user_id": 12345,
- "comments_count": 0,
- "weight": 10,
- "information": "<span><span><span> </span></span></span>",
- "hidden": 0,
- "fired": 0,
- "status": 0
}, - "meta": [ ]
}| location_id required | number location ID |
| team_member_id required | number team member ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}Creates a new employee with a minimal set of parameters.
| location_id required | number Example: 123 ID of a location. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| name required | string Name of a team member. |
| specialization required | string Specialization of a team member. |
| position_id required | number or null ID of a position that should be linked to a team member. |
| phone_number required | string or null Phone number of a user that should be linked to a team member (without "+", 9 to 15 digits). |
| user_email required | string <email> Email address of the user to be created or linked to the team member. |
| user_phone required | string User phone number (without "+", 9 to 15 digits). Can be the same as phone_number or different for user account login. |
| is_user_invite required | boolean Whether to send an invitation email to the user. Set to true to send invitation, false to create without sending invitation. |
{- "name": "John Johnson",
- "specialization": "Cosmetologist",
- "position_id": 123,
- "phone_number": 11234567890,
- "user_phone": 11234567890,
- "is_user_invite": false
}{- "success": true,
- "data": {
- "id": 123,
- "name": "John Johnson",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "Position"
}
}, - "meta": { }
}| location_id required | number Location ID |
| team_member_id required | number team member ID, if you need to work with a specific team member. |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1001539,
- "name": "team member 1",
- "company_id": 176275,
- "specialization": "team member",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "fired": 0,
- "status": 0,
- "hidden": 0,
- "user_id": 12345
}
], - "meta": {
- "total_count": 1
}
}The method allows you to get a list of current positions in the location
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "data": [
- {
- "id": 123,
- "title": "Job title"
}
], - "meta": [
- { }
], - "success": true
}Creates a new position in a company; position is created as a chain entity and at the same time linked to a company initiated its creation.
| location_id required | number Example: 123 ID of a location. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| title required | string Title of a position. |
{- "title": "Position"
}{- "success": true,
- "data": {
- "id": 123,
- "chain_id": 123,
- "title": "Position",
- "description": "Position description",
- "services_binding_type": 0,
- "rules_required_fields": [
- "employee_name",
- "surname",
- "patronymic",
- "date_admission",
- "date_registration_end",
- "phone_number",
- "citizenship",
- "sex",
- "passport_data",
- "inn",
- "number_insurance_certificates"
], - "only_chain_appointment": false
}, - "meta": { }
}The method allows you to get users of the location.
location User object:
| Attribute | Type | Description |
|---|---|---|
| id | number | User ID |
| name | string | User name |
| phone | string | User phone |
| string | User email | |
| information | string | User information |
| is_approved | boolean | Whether the user accepted the invitation to manage the location |
| is_non_deletable | boolean | Whether the user is non-deletable |
| location_id required | number location ID |
| filter[is_approved] | number Example: filter[is_approved]=1 Whether the user accepted the invitation to manage the location. 1 - accepted, 0 - not accepted |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 10,
- "name": "Bob Williams",
- "phone": "+1-315-555-0175",
- "information": "Manager",
- "is_approved": false,
- "is_non_deletable": false
}, - {
- "id": 11,
- "name": "Oliver Davis",
- "phone": "+1-315-555-0176",
- "information": "Administrator",
- "is_approved": true,
- "is_non_deletable": true
}
], - "meta": {
- "count": 2
}
}| location_id required | number Example: 123 ID of a location. |
| user_id required | number User ID |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}location User object
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 224348,
- "firstname": "James",
- "login": "j.smith",
- "phone": "+1-315-555-0175",
- "information": "Test user",
- "access": {
- "stat_access": true,
- "schedule_edit_access": false,
- "client_phones_access": false,
- "clients_access": false,
- "settings_access": false,
- "edit_records_access": false,
- "timetable_access": true,
- "billing_access": false,
- "users_access": false,
- "excel_access": false,
- "finances_access": false,
- "storages_access": false,
- "send_sms": true,
- "master_id": 0
}
}, - {
- "id": 11,
- "firstname": "James",
- "login": "j.smith",
- "phone": "+1-315-555-0175",
- "information": "Test user",
- "access": {
- "stat_access": true,
- "schedule_edit_access": true,
- "client_phones_access": true,
- "clients_access": true,
- "settings_access": true,
- "edit_records_access": true,
- "timetable_access": true,
- "billing_access": true,
- "users_access": false,
- "excel_access": true,
- "finances_access": true,
- "storages_access": true,
- "send_sms": true,
- "master_id": 0
}
}
], - "meta": [ ]
}1) - company ID1) - Page number20) - Number of clients per page| location_id required | number location ID |
| fullname | string Example: fullname=Joh Name (part of the name) for client filtering |
| phone | string Example: phone=7916 Phone (part of the number) for customer filtering |
string Example: email=test@ Email (part) for customer filtering | |
| paid_min | number Example: paid_min=1 Minimum paid to the cashier, to filter customers by the amount of payments |
| paid_max | number Example: paid_max=1 Maximum paid to the cashier, to filter customers by the amount of payments |
| page | number Example: page=1 Page number |
| count | number Example: count=20 Number of customers per page |
| location_id | number Example: location_id=66 ID of one or more clients to filter clients |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 66,
- "name": "James",
- "surname": "Smith",
- "patronymic": "Martel",
- "phone": 79112345678,
- "categories": [
- {
- "id": 3,
- "title": "Black list",
- "color": "#0f0f0f"
}, - {
- "id": 4,
- "title": "VIP",
- "color": "#e8d313"
}
], - "sex_id": 0,
- "sex": "unknown",
- "discount": 10,
- "importance_id": 3,
- "importance": "Gold",
- "card": 123456789,
- "birth_date": "2025-09-21",
- "comment": "test",
- "sms_check": 1,
- "sms_not": 0,
- "spent": 71842,
- "balance": 0,
- "visits": 34,
- "last_change_date": "2020-02-01T12:00:00+0400",
- "custom_fields": [ ]
}, - {
- "id": 16,
- "name": "James",
- "surname": "Smith",
- "patronymic": "Martel",
- "phone": 79112345679,
- "email": "",
- "categories": [ ],
- "sex_id": 0,
- "sex": "unknown",
- "discount": 0,
- "importance_id": 0,
- "importance": "No importance class",
- "card": "",
- "birth_date": null,
- "comment": "",
- "sms_check": 0,
- "sms_not": 0,
- "spent": 0,
- "balance": 0,
- "visits": 3,
- "last_change_date": "2020-04-01T12:00:00+0400",
- "custom_fields": [ ]
}
], - "meta": {
- "page": 1,
- "total_count": 8
}
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| name required | string Client name |
| surname | string Client surname |
| patronymic | string Client middle name |
| phone required | string Customer phone |
string Client Email | |
| sex_id | number Gender of the client (1 - male, 2 - female, 0 - unknown) |
| importance_id | number Client priority level (0 - none, 1 - bronze, 2 - silver, 3 - gold) |
| discount | number Customer Discount |
| card | string Client card number |
| birth_date | string Date of birth of the client in the format yyyy-mm-dd |
| comment | string A comment |
| spent | number How much money spent in the location at the time of adding |
| balance | number Client balance |
| sms_check | number 1 - Happy Birthday by SMS, 0 - do not congratulate |
| sms_not | number 1 - Exclude the client from SMS mailings, 0 - do not exclude |
| categories | object Array of customer category IDs |
object Array of additional client fields as "api-key": "value" pairs |
{- "success": true,
- "data": {
- "id": 1121412,
- "name": "James",
- "surname": "Smith",
- "patronymic": "Martel",
- "phone": 79211234567,
- "categories": [ ],
- "sex": "Male",
- "sex_id": 1,
- "discount": 15,
- "importance_id": 1,
- "importance": "Bronze",
- "card": 555888666,
- "birth_date": "952041600",
- "comment": "throws show-off",
- "sms_check": 0,
- "sms_not": 0,
- "spent": 1000,
- "balance": -1200,
- "visits": 0,
- "last_change_date": "2020-05-01T12:00:00+0400",
- "custom_fields": {
- "key-1": "value-1"
}
}, - "meta": [ ]
}| location_id required | number location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| page | number Page number |
| page_size | number The number of output lines per page. Maximum 200. (Default 25) |
| fields | Array of strings Fields to be returned in the response |
| order_by | string Enum: "id" "name" "phone" "email" "discount" "first_visit_date" "last_visit_date" "sold_amount" "visit_count" What field to sort by |
| order_by_direction | string Enum: "ASC" "DESC" How to sort (ascending / descending) |
| operation | string Enum: "AND" "OR" Type of transaction |
Array of objects Filters for searching by customers |
{- "page": 1,
- "page_size": 3,
- "fields": [
- "id",
- "name"
], - "order_by": "name",
- "order_by_direction": "desc",
- "operation": "AND",
- "filters": [
- {
- "type": "id",
- "state": {
- "value": [
- 1,
- 2,
- 3
]
}
}, - {
- "type": "sold_amount",
- "state": {
- "from": 0,
- "to": 100.77
}
}, - {
- "type": "quick_search",
- "state": {
- "value": "James Smith"
}
}, - {
- "type": "importance",
- "state": {
- "value": [
- 0,
- 1,
- 2,
- 3
]
}
}, - {
- "type": "has_mobile_app",
- "state": {
- "value": true
}
}, - {
- "type": "category",
- "state": {
- "value": [
- 1,
- 7
]
}
}, - {
- "type": "has_passteam_card",
- "state": {
- "value": true
}
}, - {
- "type": "passteam_card_ids",
- "state": {
- "value": [
- "111122223333aaaabbbbcccc"
]
}
}, - {
- "type": "birthday",
- "state": {
- "from": "1990-01-01 00:00:00",
- "to": "2000-01-01 23:59:59"
}
}, - {
- "type": "gender",
- "state": {
- "value": [
- 0,
- 1,
- 2
]
}
}, - {
- "type": "record",
- "state": {
- "staff": {
- "value": [
- 1,
- 2
]
}, - "service": {
- "value": [
- 2,
- 3
]
}, - "service_category": {
- "value": [
- 4,
- 5
]
}, - "status": {
- "value": [
- 1
]
}, - "created": {
- "from": "2025-01-01 00:00:00",
- "to": "2025-01-01 23:59:59"
}, - "records_count": {
- "from": 1,
- "to": 99999
}, - "sold_amount": {
- "from": 1.001,
- "to": 99999.09
}
}
}, - {
- "type": "client",
- "state": {
- "id": {
- "value": [
- 1,
- 2,
- 3
]
}, - "birthday": {
- "from": "1990-01-01 00:00:00",
- "to": "2000-01-01 23:59:59"
}
}
}, - {
- "type": "sale",
- "state": {
- "abonement_balance": {
- "from": 2,
- "to": 3
}
}
}
]
}{- "success": true,
- "data": [
- {
- "name": "James Smith",
- "id": 2
}, - {
- "name": "Sidorov",
- "id": 3
}, - {
- "name": "James Smith",
- "id": 1
}
], - "meta": {
- "total_count": 908
}
}| location_id required | number location ID |
| id required | number Client ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "id": 16,
- "name": "James",
- "surname": "Smith",
- "patronymic": "Martel",
- "phone": 79112345679,
- "email": "",
- "categories": [ ],
- "sex": "unknown",
- "discount": 0,
- "importance": "No importance class",
- "card": "",
- "birth_date": null,
- "comment": "",
- "sms_check": 0,
- "sms_not": 0,
- "spent": 0,
- "balance": 0,
- "visits": 3,
- "last_change_date": "2020-03-01T12:00:00+0400",
- "custom_fields": [ ]
}, - "meta": [ ]
}| location_id required | number location ID |
| id required | number Client ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| name required | string Client name |
| surname | string Client surname |
| patronymic | string Client middle name |
| phone required | string Customer phone |
string Client Email | |
| sex_id | number Gender of the client (1 - male, 2 - female, 0 - unknown) |
| importance_id | number Client priority level (0 - none, 1 - bronze, 2 - silver, 3 - gold) |
| discount | number Customer Discount |
| card | string Client card number |
| birth_date | string Date of birth of the client in the format yyyy-mm-dd |
| comment | string A comment |
| spent | number How much money spent in the location at the time of adding |
| balance | number Client balance |
| sms_check | number 1 - Happy Birthday by SMS, 0 - do not congratulate |
| sms_not | number 1 - Exclude the client from SMS mailings, 0 - do not exclude |
| labels | object Array of customer category IDs |
object Array of additional client fields as "api-key": "value" pairs |
{- "success": true,
- "data": {
- "id": 1121412,
- "name": "James",
- "surname": "Smith",
- "patronymic": "Martel",
- "phone": 79211234567,
- "categories": [ ],
- "sex": "Male",
- "sex_id": 1,
- "discount": 15,
- "importance_id": 1,
- "importance": "Bronze",
- "card": 555888666,
- "birth_date": "952041600",
- "comment": "throws show-off",
- "sms_check": 0,
- "sms_not": 0,
- "spent": 1000,
- "balance": -1200,
- "visits": 0,
- "last_change_date": "2020-06-01T12:00:00+0400",
- "custom_fields": {
- "key-1": "value-1"
}
}, - "meta": [ ]
}| location_id required | number location ID |
| id required | number Client ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| name required | string Client name |
| surname | string Client surname |
| patronymic | string Client middle name |
| phone required | string Customer phone |
string Client Email | |
| sex_id | number Gender of the client (1 - male, 2 - female, 0 - unknown) |
| importance_id | number Client priority level (0 - none, 1 - bronze, 2 - silver, 3 - gold) |
| discount | number Customer Discount |
| card | string Client card number |
| birth_date | string Date of birth of the client in the format yyyy-mm-dd |
| comment | string A comment |
| spent | number How much money spent in the location at the time of adding |
| balance | number Client balance |
| sms_check | number 1 - Happy Birthday by SMS, 0 - do not congratulate |
| sms_not | number 1 - Exclude the client from SMS mailings, 0 - do not exclude |
| categories | object Array of customer category IDs |
{- "success": true,
- "data": {
- "created": [
- {
- "id": 19153889,
- "name": "James",
- "surname": "Smith",
- "patronymic": "Martel",
- "phone": 79213237567,
- "card": 555888666,
- "birth_date": "952041600",
- "comment": "throws show-off",
- "discount": 15,
- "visits": 0,
- "sex_id": 1,
- "sex": "Male",
- "sms_check": 0,
- "sms_bot": 0,
- "spent": 1000,
- "paid": 0,
- "balance": -1200,
- "importance_id": 1,
- "importance": "Bronze",
- "categories": [
- {
- "id": 101,
- "title": "Loyal",
- "color": "#bfd4f2"
}, - {
- "id": 102,
- "title": "Constant",
- "color": "#009800"
}
], - "last_change_date": "2020-09-08T13:33:39+0400",
- "custom_fields": [ ]
}
], - "errors": [
- {
- "phone": 79213237567,
- "name": "James Smith",
- "error": "The client with the specified phone number already exists in the database"
}, - {
- "phone": 721828834101,
- "error": "Client name not specified"
}, - {
- "phone": 123,
- "name": "James Smith",
- "error": "Phone must contain 9 to 15 digits"
}, - {
- "name": "Theodore Hicks",
- "error": "Customer phone number cannot be empty"
}
]
}, - "meta": [ ]
}Returns a list of a comments for a client and a files in a client details uploads history.
| location_id required | number Example: 123 ID of a location. |
| client_id required | number Example: 123 ID of a location client. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": [
- {
- "id": 123,
- "create_date": "2023-01-01T12:12:12+00:00",
- "update_date": "2023-01-01T12:12:12+00:00",
- "type": "default",
- "text": "Comment for a client",
- "files": [ ],
}
], - "meta": {
- "count": 10
}
}Creates a new text comment for a client.
| location_id required | number Example: 123 ID of a location. |
| client_id required | number Example: 123 ID of a location client. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| text required | string Text of a comment for a client. |
{- "text": "Comment for a client"
}{- "success": true,
- "data": {
- "id": 123,
- "create_date": "2023-01-01T12:12:12+00:00",
- "update_date": "2023-01-01T12:12:12+00:00",
- "type": "default",
- "text": "Comment for a client",
- "files": [ ],
}, - "meta": { }
}Deletes a comment for a client; does not delete files uploaded that triggered creation of a comment.
| location_id required | number Example: 123 ID of a location. |
| client_id required | number Example: 123 ID of a location client. |
| comment_id required | number Example: 123 ID of a comment for client. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": null,
- "meta": { }
}A list of uploaded client files can be retrieved by providing both the location ID and the client ID in the request. The client ID can be obtained from the client collection.
The response returns an array of client files.
Each client file has the following structure:
| Field | Type | Description | | -----------------| ------- | -------------------------------------------------- ------------------------ | | id | number | File ID | | client_id | number | Client ID | | name | string | Filename with extension | | description | string | File description | | extension | string | File name extension | | mime | string | MIME file type | | link | string | File download link | | date_create | string | File upload date in ISO8601 format | | size | string | Formatted file size string | | username | string | The name of the user who uploaded the file | | user_avatar | string | Avatar of the user who uploaded the file | | can_edit | boolean | Is there a right to change and delete the file? true - there is a right, false - there is no right |
| location_id required | number location ID |
| client_id required | number Client ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 123,
- "client_id": 123456,
- "name": "test.txt",
- "description": "",
- "date_create": "2020-01-01T12:00:00+0400",
- "extension": "txt",
- "mime": "text/plain",
- "link": "/client_files/download/456/123/",
- "user_name": "Viktor Sitnikov",
- "user_avatar": "/images/no-master.png",
- "size": "9 B",
- "can_edit": false
}, - {
- "id": 789,
- "client_id": 123456,
- "name": "photo.jpg",
- "description": "",
- "date_create": "2020-01-30T12:30:00+0400",
- "extension": "jpg",
- "mime": "image/jpeg",
- "link": "/client_files/download/456/789/",
- "user_name": "Viktor Sitnikov",
- "user_avatar": "/images/no-master.png",
- "size": "96.65 KB",
- "can_edit": true
}
], - "meta": {
- "count": 2
}
}| location_id required | number location ID |
| client_id required | number Client ID |
| file_id required | number File ID |
| Accept | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "success": true,
- "meta": {
- "message": "Accepted"
}
}Displays the client’s visit history.This method returns the client’s appointment and product purchase history, grouped by visit. Data is filtered based on visit status and paid status. The client is identified using either the client_id or client_phone parameter. All other parameters are optional. Results are sorted by visit date and paginated in batches of 25 items. If multiple visits share the same date as the last item on the page, they will be included on the current page to ensure complete grouping. To retrieve the next page, use the from and to values provided in the meta field of the current response.
| location_id required | number Example: 123 ID of a location. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| client_id required | number or null Client ID. |
| client_phone required | string or null Customer phone number. |
| from required | string or null <date> Period start date. |
| to required | string or null <date> Period end date. |
| payment_statuses required | Array of strings Items Enum: "not_paid" "paid_not_full" "paid_full" "paid_over" Visit payment status: |
| attendance required | number or null Enum: -1 0 1 2 Visit status:
|
{- "client_id": 123,
- "client_phone": 79998887766,
- "from": "2022-01-31",
- "to": "2022-02-01",
- "payment_statuses": [
- "not_paid"
], - "attendance": -1
}{- "success": true,
- "data": {
- "goods_transactions": [
- {
- "id": 123,
- "comment": "Comment to the sale of goods",
- "date": "2021-01-31T12:34:56+00:00",
- "visit_id": 0,
- "record_id": 0,
- "goods": [
- {
- "id": 123,
- "title": "My product",
- "amount": -1,
- "unit": "PCS.",
- "cost_per_unit": 1000,
- "first_cost": -1000,
- "discount_percent": 0,
- "cost_to_pay": 1000,
- "paid_sum": 1000,
- "payment_status": "paid_full"
}
], - "staff": {
- "id": 123,
- "name": "James Smith",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "team member"
}
}, - "company": {
- "id": 123,
- "title": "My branch office."
}
}
], - "records": [
- {
- "id": 123,
- "comment": "Comment to post",
- "date": "2021-01-31T12:34:56+00:00",
- "visit_id": 123,
- "attendance": 1,
- "services": [
- {
- "id": 123,
- "title": "My service",
- "first_cost": 1000,
- "discount_percent": 0,
- "cost_to_pay": 1000,
- "paid_sum": 1000,
- "payment_status": "paid_full",
- "consumables": [
- {
- "title": "My consumable",
- "amount": 1,
- "cost_per_unit": 1000,
- "unit": "PCS."
}
]
}
], - "staff": {
- "id": 123,
- "name": "James Smith",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "team member"
}
}, - "company": {
- "id": 123,
- "title": "My branch office."
}, - "tips": {
- "has_tips": false,
- "sum": null
}, - "comer": {
- "id": 123,
- "title": "James Smith",
- "slug": "person"
}
}
]
}, - "meta": {
- "dateCursor": {
- "previous": {
- "to": "2022-01-31",
- "from": "2022-01-20",
- "count": 7
}, - "current": {
- "to": "2022-01-19",
- "from": "2022-01-15",
- "count": 25
}, - "next": {
- "to": "2022-01-14",
- "from": "2022-01-05",
- "count": 25
}
}
}
}User account management, roles, permissions, and invitations. Control access to location features.
1) - company ID| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "timetable": {
- "timetable_access": true,
- "master_id": 1000238,
- "position_id": 0,
- "last_days_count": 1000,
- "schedule_edit_access": true,
- "timetable_phones_access": true,
- "timetable_transferring_record_access": true,
- "timetable_statistics_access": true
}, - "record_form": {
- "record_form_access": true,
- "record_form_client_access": true,
- "records_autocomplete_access": true,
- "create_records_access": true,
- "edit_records_access": true,
- "edit_records_attendance_access": true,
- "records_services_cost_access": true,
- "records_services_discount_access": true,
- "record_edit_full_paid_access": true,
- "delete_records_access": true,
- "delete_customer_came_records_access": true,
- "delete_paid_records_access": true,
- "records_goods_access": true,
- "records_goods_create_transaction_access": true,
- "records_goods_create_last_days_count": -1,
- "records_goods_edit_transaction_access": true,
- "records_goods_edit_last_days_count": -1,
- "records_goods_cost_access": true,
- "records_goods_discount_access": true,
- "records_finances_access": true,
- "records_finances_last_days_count": -1,
- "records_finances_pay_from_deposits_access": true,
- "records_group_id_access": true,
- "records_group_id": 134178
}, - "finances": {
- "finances_access": true,
- "finances_accounts_ids": [ ],
- "finances_transactions_access": true,
- "finances_last_days_count": -1,
- "finances_create_transactions_access": true,
- "finances_create_last_days_count": -1,
- "finances_edit_transactions_access": true,
- "finances_edit_last_days_count": -1,
- "finances_delete_transactions_access": true,
- "finances_transactions_excel_access": true,
- "finances_expenses_ids": [ ],
- "finances_accounts_access": true,
- "finances_accounts_banalce_access": true,
- "finances_suppliers_read_access": true,
- "finances_suppliers_create_access": true,
- "finances_suppliers_update_access": true,
- "finances_suppliers_delete_access": true,
- "finances_suppliers_excel_access": true,
- "finances_expenses_read_access": true,
- "expenses_read_access": true,
- "finances_expenses_create_access": true,
- "expenses_create_access": true,
- "finances_expenses_update_access": true,
- "expenses_update_access": true,
- "finances_expenses_delete_access": true,
- "expenses_delete_access": true,
- "finances_kkm_transactions_access": true,
- "kkm_transactions_accounts_access": true,
- "finances_kkm_settings_read_access": true,
- "kkm_settings_reed_access": true,
- "finances_kkm_settings_update_access": true,
- "kkm_settings_update_access": true,
- "finances_settings_invoicing_read_access": true,
- "settings_invoicing_read_access": true,
- "finances_settings_invoicing_update_access": true,
- "settings_invoicing_update_access": true,
- "finances_options_read_access": true,
- "options_read_access": true,
- "finances_options_update_access": true,
- "options_update_access": true,
- "finances_salary_schemes_access": true,
- "finances_salary_calc_access": true,
- "finances_salary_not_limitation_today_access": true,
- "finances_payroll_calculation_create_access": true,
- "finances_payroll_calculation_create_not_limitation_today_access": true,
- "finances_salary_access_master_checkbox": true,
- "finances_salary_access_master_id": 1000237,
- "get_salary_access_master_id": 1000237,
- "finances_salary_master_not_limitation_today_access": true,
- "finances_payroll_calculation_create_by_master_access": true,
- "calculation_create_by_master_not_limitation_today_access": true,
- "finances_period_report_access": true,
- "finances_period_report_excel_access": true,
- "finances_year_report_access": true,
- "finances_year_report_excel_access": true,
- "finances_print_check_access": true,
- "finances_z_report_access": true,
- "finances_z_report_no_limit_today_access": true,
- "finances_z_report_excel_access": true
}, - "clients": {
- "clients_access": true,
- "client_phones_access": true,
- "clients_phones_email_access": true,
- "clients_card_phone_access": true,
- "clients_delete_access": true,
- "clients_excel_access": true,
- "excel_access": true,
- "client_comments_list_access": true,
- "client_comments_add_access": true,
- "client_comments_own_edit_access": true,
- "client_comments_other_edit_access": true,
- "client_files_list_access": true,
- "client_files_upload_access": true,
- "client_files_delete_access": true,
- "clients_visit_master_id": 0,
- "get_visit_master_id": 0
}, - "dashboard": {
- "dashboard_access": true,
- "dash_access": true,
- "dash_phones_access": true,
- "dash_records_access": true,
- "dash_records_last_days_count": -1,
- "dash_records_excel_access": true,
- "dash_records_phones_access": true,
- "dash_message_access": true,
- "dash_message_excel_access": true,
- "dash_message_phones_access": true,
- "dash_reviews_access": true,
- "dash_reviews_delete_access": true,
- "dashboard_calls_access": true,
- "dashboard_calls_excel_access": true,
- "dashboard_calls_phones_access": true
}, - "notification": {
- "notification": true,
- "web_push": true,
- "web_phone_push": true,
- "notification_sms_ending_license": true,
- "notification_sms_low_balance": true,
- "notification_email_ending_license": true
}, - "loyalty": {
- "loyalty_access": true,
- "has_loyalty_access": true,
- "loyalty_cards_manual_transactions_access": true,
- "has_loyalty_cards_manual_transactions_access": true,
- "loyalty_certificate_and_abonement_manual_transactions_access": true
}, - "storages": {
- "storages_access": true,
- "storages_ids": [ ],
- "storages_transactions_access": true,
- "storages_last_days_count": -1,
- "storages_move_goods_access": true,
- "storages_create_transactions_access": true,
- "storages_create_last_days_count": -1,
- "storages_create_transactions_buy_access": true,
- "storages_create_transactions_sale_access": true,
- "storages_edit_transactions_access": true,
- "storages_edit_last_days_count": -1,
- "storages_edit_transactions_buy_access": true,
- "storages_edit_transactions_sale_access": true,
- "storages_delete_transactions_access": true,
- "storages_transactions_excel_access": true,
- "storages_transactions_types": [ ],
- "storages_inventory_access": true,
- "storages_inventory_create_edit_access": true,
- "storages_inventory_delete_access": true,
- "storages_inventory_excel_access": true,
- "storages_remnants_report_access": true,
- "storages_remnants_report_excel_access": true,
- "storages_sales_report_access": true,
- "storages_sales_report_excel_access": true,
- "storages_consumable_report_access": true,
- "storages_consumable_report_excel_access": true,
- "storages_write_off_report_access": true,
- "storages_write_off_report_excel_access": true,
- "storages_turnover_report_access": true,
- "storages_turnover_report_excel_access": true,
- "storages_goods_crud_access": true,
- "storages_goods_create_access": true,
- "storages_goods_update_access": true,
- "storages_goods_title_edit_access": true,
- "storages_goods_category_edit_access": true,
- "storages_goods_selling_price_edit_access": true,
- "storages_goods_cost_price_edit_access": true,
- "storages_goods_units_edit_access": true,
- "storages_goods_critical_balance_edit_access": true,
- "storages_goods_masses_edit_access": true,
- "storages_goods_comment_edit_access": true,
- "storages_goods_archive_access": true,
- "storages_goods_delete_access": true
}, - "settings": {
- "settings_access": true,
- "settings_basis_access": true,
- "settings_information_access": true,
- "users_access": true,
- "delete_users_access": true,
- "create_users_access": true,
- "edit_users_access": true,
- "limited_users_access": false,
- "settings_services_access": true,
- "settings_services_create_access": true,
- "services_edit": true,
- "settings_services_edit_title_access": true,
- "settings_services_relation_category_access": true,
- "settings_services_edit_price_access": true,
- "settings_services_edit_image_access": true,
- "settings_services_edit_online_seance_date_time_access": true,
- "settings_services_edit_online_pay_access": true,
- "settings_services_edit_services_related_resource_access": true,
- "settings_positions_read": true,
- "settings_positions_create": true,
- "settings_positions_delete": true,
- "edit_master_service_and_duration": true,
- "tech_card_edit": true,
- "services_delete": true,
- "settings_master_access": true,
- "master_create": true,
- "master_edit": true,
- "master_delete": true,
- "settings_master_dismiss_access": true,
- "schedule_edit": true,
- "settings_notifications_access": true,
- "settings_email_notifications_access": true,
- "settings_template_notifications_access": true,
- "webhook_read_access": true
}, - "other": {
- "stat_access": true,
- "billing_access": true,
- "send_sms": true,
- "auth_enable_check_ip": false,
- "auth_list_allowed_ip": [ ]
}
}, - "meta": [ ]
}Returns a list of user roles along with permissions for each role.
| location_id required | number Example: 123 ID of a location. |
| include | Array of strings Items Value: "user_permissions" Requested set of an included models. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": [
- {
- "slug": "staff_member",
- "title": "team member",
- "description": "Provides services",
- "weight": 1,
- "user_permissions": [
- {
- "slug": "timetable_access",
- "title": "Appointment calendar",
- "hint": "",
- "is_recommended": true,
- "is_editable": true,
- "default_value": true,
- "entity_name": null,
- "children": [
- {
- "slug": "timetable_position_id",
- "title": "View the schedule and post records",
- "hint": "",
- "is_recommended": true,
- "is_editable": true,
- "default_value": null,
- "entity_name": "position",
- "children": null,
- "options": [
- {
- "title": "All positions",
- "value": 0,
- "is_disabled": false
}, - {
- "title": "Administrator",
- "value": 1234,
- "is_disabled": false
}
], - "type": {
- "slug": "allowed_id",
- "all_access_value": "0",
- "no_access_value": "0"
}
}
], - "options": null,
- "type": {
- "slug": "has_group_access",
- "all_access_value": true,
- "no_access_value": false
}
}
]
}
], - "meta": { }
}Returns a list of user roles along with permissions for each role. Allows to get the editable status for each permission of a company user (is_editable field). This status depends on the current user's permissions.
| location_id required | number Example: 123 ID of a location. |
| user_id required | number Example: 123 ID of a user. |
| include | Array of strings Items Value: "user_permissions" Requested set of an included models. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": [
- {
- "slug": "staff_member",
- "title": "team member",
- "description": "Provides services",
- "weight": 1,
- "user_permissions": [
- {
- "slug": "timetable_access",
- "title": "Appointment calendar",
- "hint": "",
- "is_recommended": true,
- "is_editable": true,
- "default_value": true,
- "entity_name": null,
- "children": [
- {
- "slug": "timetable_position_id",
- "title": "View the schedule and post records",
- "hint": "",
- "is_recommended": true,
- "is_editable": true,
- "default_value": null,
- "entity_name": "position",
- "children": null,
- "options": [
- {
- "title": "All positions",
- "value": 0,
- "is_disabled": false
}, - {
- "title": "Administrator",
- "value": 1234,
- "is_disabled": false
}
], - "type": {
- "slug": "allowed_id",
- "all_access_value": "0",
- "no_access_value": "0"
}
}
], - "options": null,
- "type": {
- "slug": "has_group_access",
- "all_access_value": true,
- "no_access_value": false
}
}
]
}
], - "meta": { }
}Return user role and list of permissions values.
| location_id required | number Example: 123 ID of a location. |
| user_id required | number Example: 123 ID of a user. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "is_editable": true,
- "staff_id": 12345,
- "user_role": "owner",
- "user_permissions": [
- {
- "slug": "timetable_access",
- "value": true
}, - {
- "slug": "timetable_position_id",
- "value": 0
}, - {
- "slug": "auth_list_allowed_ip",
- "value": ""
}
]
}, - "meta": { }
}Updates the role and permissions of the user, as well as the employee who is attached to this user.
| location_id required | number Example: 123 ID of a location. |
| user_id required | number Example: 123 ID of a user. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| user_role | string Enum: "worker" "administrator" "accountant" "manager" "owner" Name of role |
Array of objects (Model object "Permission value") List of user permissions values | |
| staff_id | number team member ID attached to user |
{- "user_role": "worker",
- "user_permissions": [
- {
- "slug": "timetable_access",
- "value": true
}
], - "staff_id": 0
}{- "success": true,
- "data": {
- "is_editable": true,
- "staff_id": 12345,
- "user_role": "owner",
- "user_permissions": [
- {
- "slug": "timetable_access",
- "value": true
}, - {
- "slug": "timetable_position_id",
- "value": 0
}, - {
- "slug": "auth_list_allowed_ip",
- "value": ""
}
]
}, - "meta": { }
}An invitation to manage a location is sent via email or phone as a link. By following the link and completing registration, the user gains access to manage the location according to the permissions assigned. Permission assignment is performed in a separate request after the invitation is sent.
| location_id required | number Example: 123 ID of a location. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
required | Array of objects Array of invites |
{- "invites": [
- {
- "name": "Olga",
- "position": "Administrator",
- "user_role": "administrator",
- "user_permissions": [
- {
- "slug": "timetable_access",
- "value": true
}
], - "staff_id": 12
}
]
}{- "success": true,
- "meta": {
- "message": "Saved"
}
}Copies an active user and their permissions to multiple companies at once. If the user does not yet exist in a company, they will be added as an active user. If the user has already been invited to the company, only their permissions will be updated — however, they will still need to accept the invitation.
| location_id required | number Example: 123 ID of a location. |
| user_id required | number Example: 123 ID of a user. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
required | Array of objects non-empty unique List of locations to copy the user to |
{- "user_company_links": [
- {
- "company_id": 123,
- "user_permissions": [
- {
- "slug": "timetable_access",
- "value": true
}
]
}
]
}{- "success": true,
- "data": null,
- "meta": { }
}Removes an active user from multiple companies at once.
| location_id required | number Example: 123 ID of a location. |
| user_id required | number Example: 123 ID of a user. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
required | Array of objects non-empty unique List of locations to remove the user from |
{- "user_company_links": [
- {
- "company_id": 123
}
]
}{- "success": true,
- "data": null,
- "meta": { }
}Appointment and visit management.
Key concepts:
Example: Client books haircut + coloring → 1 visit containing 2 appointments
This section covers creating, modifying, and managing both individual appointments and visit containers.
Use this to retrieve appointments for a specific team member
Use this to retrieve appointments for a specific client
User who created the appointment
Use this to filter appointments created by a specific user
Returns appointments with a session starting on or after this date
Returns appointments with a session ending on or before this date
Returns appointments created on or after this date
Returns appointments created on or before this date
Returns appointments created or modified after the specified date and time
Returns appointments created or modified before the specified date and time
| location_id required | number location ID |
| page | number Example: page=1 Page number |
| count | number Example: count=50 Number of appointments per page |
| team_member_id | number Example: team_member_id=7572 team member ID, if you only need appointments for a specific team member |
| client_id | number Example: client_id=572 Client ID. If you need appointments for a specific client |
| created_user_id | number Example: created_user_id=7572 The ID of the user who created the appointment. If you need appointments created by a specific user |
| start_date | string Example: start_date=2025-01-21 Session date starting at (filter by session date). If you need appointments for a session starting from a specific date |
| end_date | string Example: end_date=2025-01-21 Session date to. If you need appointments for a session before a specific date |
| c_start_date | string Example: c_start_date=2025-01-21 Appointment creation date starting from(filter by appointment creation date). If you need appointments created since a specific date |
| c_end_date | string Example: c_end_date=2025-01-21 Appointment creation date by (filter by appointment creation date). |
| changed_after | string Example: changed_after=2025-01-21T23:00:00 The date the appointment was modified/created. If you need appointments created/modified starting from a specific date and time |
| changed_before | string Example: changed_before=2025-01-21T23:00:00 The date the appointment was modified/created. If you need appointments created/modified before a specific date and time |
| include_consumables | number Flag for including a list of consumables by appointments in the response |
| include_finance_transactions | number Flag to include in the response financial transactions by appointments |
| with_deleted | boolean Include deleted appointments in output (with_deleted=1 will return deleted appointments as well) |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 2,
- "company_id": 4564,
- "staff_id": 9,
- "services": [
- {
- "id": 1,
- "title": "Hair extension",
- "cost": 100,
- "manual_cost": 100,
- "cost_per_unit": 100,
- "discount": 0,
- "first_cost": 100,
- "amount": 1
}
], - "goods_transactions": [ ],
- "staff": {
- "id": 9,
- "name": "Oksana",
- "specialization": "hair extension",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "rating": 0,
- "votes_count": 0
}, - "date": "2019-01-16T16:00:00+00:00",
- "datetime": "2019-01-16T16:00:00+09:00",
- "create_date": "2019-01-16T20:35:11+0900",
- "comment": "do not write down",
- "online": false,
- "visit_attendance": 0,
- "attendance": 0,
- "confirmed": 1,
- "seance_length": 3600,
- "length": 3600,
- "sms_before": 0,
- "sms_now": 0,
- "sms_now_text": "",
- "email_now": 0,
- "notified": 0,
- "master_request": 0,
- "api_id": "",
- "from_url": "",
- "review_requested": 0,
- "visit_id": 8262996,
- "created_user_id": 1073232,
- "deleted": false,
- "paid_full": 0,
- "prepaid": false,
- "prepaid_confirmed": false,
- "last_change_date": "2019-01-16T20:35:15+0900",
- "custom_color": "",
- "custom_font_color": "",
- "record_labels": [ ],
- "activity_id": 0,
- "custom_fields": [ ],
- "documents": [
- {
- "id": 8172893,
- "type_id": 7,
- "storage_id": 0,
- "user_id": 746310,
- "company_id": 4564,
- "number": 4163,
- "comment": "",
- "date_created": "2019-01-16 16:00:00",
- "category_id": 0,
- "visit_id": 3,
- "record_id": 2,
- "type_title": "Visit"
}
], - "sms_remain_hours": 5,
- "email_remain_hours": 1,
- "bookform_id": 0,
- "record_from": "",
- "is_mobile": 0,
- "is_sale_bill_printed": false,
- "consumables": [ ],
- "finance_transactions": [ ]
}, - {
- "id": 9,
- "company_id": 4564,
- "staff_id": 49,
- "services": [ ],
- "goods_transactions": [ ],
- "staff": {
- "id": 49,
- "name": "Sergei",
- "specialization": "stylist",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "rating": 0,
- "votes_count": 0
}, - "date": "2019-01-16T16:00:00+00:00",
- "datetime": "2019-01-16T16:00:00+09:00",
- "create_date": "2019-01-16T20:35:11+0900",
- "comment": "",
- "online": true,
- "visit_attendance": 1,
- "attendance": 1,
- "confirmed": 1,
- "seance_length": 10800,
- "length": 10800,
- "sms_before": 0,
- "sms_now": 0,
- "sms_now_text": "",
- "email_now": 0,
- "notified": 0,
- "master_request": 1,
- "api_id": "",
- "from_url": "",
- "review_requested": 0,
- "visit_id": 8262996,
- "created_user_id": 1073232,
- "deleted": false,
- "paid_full": 0,
- "prepaid": false,
- "prepaid_confirmed": false,
- "last_change_date": "2017-01-09T20:45:30+0900",
- "custom_color": "f44336",
- "custom_font_color": "#ffffff",
- "record_labels": [
- {
- "id": 67345,
- "title": "the team member is not important",
- "color": "#009800",
- "icon": "unlock",
- "font_color": "#ffffff"
}, - {
- "id": 104474,
- "title": "important category",
- "color": "#3b2c54",
- "icon": "odnoklassniki",
- "font_color": "#ffffff"
}
], - "activity_id": 0,
- "custom_fields": [ ],
- "documents": [
- {
- "id": 8172893,
- "type_id": 7,
- "storage_id": 0,
- "user_id": 746310,
- "company_id": 4564,
- "number": 4163,
- "comment": "",
- "date_created": "2019-01-16 16:00:00",
- "category_id": 0,
- "visit_id": 3,
- "record_id": 2,
- "type_title": "Visit"
}
], - "sms_remain_hours": 5,
- "email_remain_hours": 1,
- "bookform_id": 0,
- "record_from": "",
- "is_mobile": 0,
- "is_sale_bill_printed": false,
- "consumables": [ ],
- "finance_transactions": [ ]
}
], - "meta": {
- "page": 1,
- "total_count": 10
}
}When creating an appointment for a group event, the event_id parameter becomes mandatory. In this case, the following parameters become optional:
Additional fields You can pass custom values using additional fields created specifically for your location (see the "Additional Fields" section for setup details). Once created, these fields can be included in the custom_fields object when creating an appointment. Each key in this object must match the code of the corresponding additional field. Example:
If your location has the following additional fields: my_custom_field with type="number" some_another_field with type="list"
You can pass their values during appointment creation as follows: custom_fields:
{ "my_custom_field": 123, "some_another_field": ["first value", "second value"] }
| location_id required | number Example: 24699 location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| staff_id | number team member ID |
Array of objects Service parameters (id, cost, discount) | |
object Client parameters (phone, name, email) | |
| save_if_busy | boolean Whether to keep the appointment if the time is busy or non-working, or give an error |
| datetime | string <date-time> Date and time of appointment |
| seance_length | number Appointment duration in seconds |
| send_sms | boolean Whether to send SMS with the details of the appointment to the client |
| comment | string Appointment Comment |
| sms_remain_hours | number Specifies how many hours before the visit an SMS reminder should be sent to the client. Set to 0 if no reminder is needed. |
| email_remain_hours | number Specifies how many hours before the visit an email reminder should be sent to the client. Set to 0 if no reminder is needed. |
| attendance | number Appointment status (2 - User confirmed the appointment, 1 - User came, services provided, 0 - user waiting, -1 - user did not show) |
| api_id | string External system ID |
| custom_color | string Appointment color |
| record_labels | Array of strings Array of post category IDs |
object Additional appointment fields |
{- "staff_id": 8886,
- "services": [
- {
- "id": 331,
- "first_cost": 9000,
- "discount": 50,
- "cost": 4500
}, - {
- "id": 333,
- "first_cost": 2000,
- "discount": 10,
- "cost": 1800
}
], - "save_if_busy": false,
- "datetime": "2025-09-21T23:00:00.000+03:00",
- "seance_length": 3600,
- "send_sms": true,
- "comment": "test appointment!",
- "sms_remain_hours": 6,
- "email_remain_hours": 24,
- "attendance": 1,
- "api_id": "777",
- "custom_color": "f44336",
- "record_labels": [
- "67345",
- "104474"
], - "custom_fields": {
- "my_custom_field": 123,
- "some_another_field": [
- "first value",
- "second value"
]
}
}{- "success": true,
- "data": [
- {
- "id": 2,
- "company_id": 4564,
- "staff_id": 9,
- "services": [
- {
- "id": 1,
- "title": "Hair extension",
- "cost": 100,
- "manual_cost": 100,
- "cost_per_unit": 100,
- "discount": 0,
- "first_cost": 100,
- "amount": 1
}
], - "goods_transactions": [ ],
- "staff": {
- "id": 9,
- "name": "Oksana",
- "specialization": "hair extension",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "rating": 0,
- "votes_count": 0
}, - "date": "2025-01-21T02:45:00+00:00",
- "datetime": "2025-01-21T02:45:00-03:00",
- "create_date": "2025-07-02T05:47:36-0300",
- "comment": "do not write down",
- "online": false,
- "visit_attendance": 0,
- "attendance": 0,
- "confirmed": 1,
- "seance_length": 3600,
- "length": 3600,
- "sms_before": 0,
- "sms_now": 0,
- "sms_now_text": "",
- "email_now": 0,
- "notified": 0,
- "master_request": 0,
- "api_id": "",
- "from_url": "",
- "review_requested": 0,
- "visit_id": 8262996,
- "created_user_id": 1073232,
- "deleted": false,
- "paid_full": 0,
- "prepaid": false,
- "prepaid_confirmed": false,
- "last_change_date": "2019-01-16T20:35:15+0900",
- "custom_color": "",
- "custom_font_color": "",
- "record_labels": [ ],
- "activity_id": 0,
- "custom_fields": [ ],
- "documents": [
- {
- "id": 8172893,
- "type_id": 7,
- "storage_id": 0,
- "user_id": 746310,
- "company_id": 4564,
- "number": 4163,
- "comment": "",
- "date_created": "2025-09-21T23:00:00.000+03:00",
- "category_id": 0,
- "visit_id": 3,
- "record_id": 2,
- "type_title": "Visit"
}
], - "consumables": [ ],
- "finance_transactions": [ ]
}, - {
- "id": 9,
- "company_id": 4564,
- "staff_id": 49,
- "services": [ ],
- "goods_transactions": [ ],
- "staff": {
- "id": 49,
- "name": "Sergei",
- "specialization": "stylist",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "rating": 0,
- "votes_count": 0
}, - "date": "2025-01-21T02:45:00+00:00",
- "datetime": "2025-01-21T02:45:00-03:00",
- "create_date": "2025-07-02T05:47:36-0300",
- "comment": "",
- "online": true,
- "visit_attendance": 1,
- "attendance": 1,
- "confirmed": 1,
- "seance_length": 10800,
- "length": 10800,
- "sms_before": 0,
- "sms_now": 0,
- "sms_now_text": "",
- "email_now": 0,
- "notified": 0,
- "master_request": 1,
- "api_id": "",
- "from_url": "",
- "review_requested": 0,
- "visit_id": 8262996,
- "created_user_id": 1073232,
- "deleted": false,
- "paid_full": 0,
- "prepaid": false,
- "prepaid_confirmed": false,
- "last_change_date": "2017-01-09T20:45:30+0900",
- "custom_color": "f44336",
- "custom_font_color": "#ffffff",
- "record_labels": [
- {
- "id": 67345,
- "title": "the team member is not important",
- "color": "#009800",
- "icon": "unlock",
- "font_color": "#ffffff"
}, - {
- "id": 104474,
- "title": "important category",
- "color": "#3b2c54",
- "icon": "odnoklassniki",
- "font_color": "#ffffff"
}
], - "activity_id": 0,
- "custom_fields": [ ],
- "documents": [
- {
- "id": 8172893,
- "type_id": 7,
- "storage_id": 0,
- "user_id": 746310,
- "company_id": 4564,
- "number": 4163,
- "comment": "",
- "date_created": "2025-09-21T23:00:00.000+03:00",
- "category_id": 0,
- "visit_id": 3,
- "record_id": 2,
- "type_title": "Visit"
}
], - "consumables": [ ],
- "finance_transactions": [ ]
}
], - "meta": {
- "page": 1,
- "total_count": 10
}
}| location_id required | number location ID |
| record_id required | number Appointment ID |
| include_consumables | number |
| include_finance_transactions | number |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "id": 2,
- "company_id": 4564,
- "staff_id": 9,
- "services": [
- {
- "id": 1,
- "title": "Hair extension",
- "cost": 100,
- "manual_cost": 100,
- "cost_per_unit": 100,
- "discount": 0,
- "first_cost": 100,
- "amount": 1
}
], - "goods_transactions": [ ],
- "staff": {
- "id": 9,
- "name": "Oksana",
- "specialization": "hair extension",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "rating": 0,
- "votes_count": 0
}, - "client": {
- "id": 18936825,
- "name": "lx",
- "phone": 70001234567,
- "card": "",
- "success_visits_count": 37,
- "fail_visits_count": 3
}, - "clients_count": 1,
- "date": "2025-09-21T23:00:00.000+03:00",
- "datetime": "2025-09-21T23:00:00.000+03:00",
- "create_date": "2019-01-17T19:41:44+0900",
- "comment": "do not write down",
- "visit_attendance": 0,
- "attendance": 0,
- "confirmed": 1,
- "seance_length": 3600,
- "length": 3600,
- "sms_before": 0,
- "sms_now": 0,
- "sms_now_text": "",
- "email_now": 0,
- "notified": 0,
- "master_request": 0,
- "api_id": "",
- "from_url": "",
- "review_requested": 0,
- "visit_id": 8263004,
- "created_user_id": 1073232,
- "deleted": false,
- "paid_full": 0,
- "prepaid": false,
- "prepaid_confirmed": false,
- "last_change_date": "2019-01-17T19:44:14+0900",
- "custom_color": "f44336",
- "custom_font_color": "#ffffff",
- "record_labels": [
- {
- "id": 67345,
- "title": "the team member is not important",
- "color": "#009800",
- "icon": "unlock",
- "font_color": "#ffffff"
}, - {
- "id": 104474,
- "title": "interesting category",
- "color": "#3b2c54",
- "icon": "odnoklassniki",
- "font_color": "#ffffff"
}
], - "activity_id": 0,
- "custom_fields": [ ],
- "documents": [
- {
- "id": 8172893,
- "type_id": 7,
- "storage_id": 0,
- "user_id": 1073232,
- "company_id": 4564,
- "number": 4163,
- "comment": "",
- "date_created": "2025-09-21T23:00:00.000+03:00",
- "category_id": 0,
- "visit_id": 3,
- "record_id": 2,
- "type_title": "Visit"
}
], - "sms_remain_hours": 5,
- "email_remain_hours": 1,
- "bookform_id": 0,
- "record_from": "",
- "is_mobile": 0,
- "is_sale_bill_printed": false,
- "consumables": [
- {
- "id": 2173068,
- "document_id": 8174153,
- "type_id": 2,
- "company_id": 4564,
- "good_id": 4853087,
- "amount": -1,
- "cost_per_unit": 0.03,
- "discount": 0,
- "cost": 0.03,
- "unit_id": 216761,
- "operation_unit_type": 2,
- "storage_id": 91548,
- "supplier_id": 0,
- "client_id": 0,
- "master_id": 0,
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "comment": "",
- "service_id": 1,
- "user_id": 1073232,
- "deleted": false,
- "pkg_amount": 0
}
], - "finance_transactions": [
- {
- "id": 6024243,
- "document_id": 8174152,
- "date": "2025-09-21T23:00:00.000+03:00",
- "type_id": 5,
- "expense_id": 5,
- "account_id": 90459,
- "amount": 100,
- "client_id": 18936825,
- "master_id": 0,
- "supplier_id": 0,
- "comment": "",
- "item_id": 1,
- "target_type_id": 1,
- "record_id": 2,
- "goods_transaction_id": 0,
- "expense": {
- "id": 5,
- "title": "Provision of services"
}, - "account": {
- "id": 90459,
- "title": "Main cash desk"
}, - "client": {
- "id": 18936825,
- "name": "James Smith",
- "phone": "+1-315-555-0175"
}, - "master": [ ],
- "supplier": [ ]
}
]
}, - "meta": [ ]
}When an appointment is changed in a group event, the event_id parameter becomes required, staff_id, services, datetime, session_length parameters become optional
| location_id required | number location ID |
| record_id required | number Appointment ID |
| include_consumables | number |
| include_finance_transactions | number |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| staff_id | number team member ID |
Array of objects Service parameters (id, cost, discount) | |
object Client parameters (phone, name, email) | |
| save_if_busy | boolean Whether to keep the appointment if the time is busy or non-working, or give an error |
| datetime | string <date-time> Date and time of appointment |
| seance_length | number Appointment duration in seconds |
| send_sms | boolean Whether to send SMS with the details of the appointment to the client |
| comment | string Appointment Comment |
| sms_remain_hours | number Specifies how many hours before the visit an SMS reminder should be sent to the client. Set to 0 if no reminder is needed. |
| email_remain_hours | number Specifies how many hours before the visit an email reminder should be sent to the client. Set to 0 if no reminder is needed. |
| attendance | number Appointment status (2 - User confirmed the appointment, 1 - User came, services provided, 0 - user waiting, -1 - user did not show) |
| api_id | string External system ID |
| custom_color | string Appointment color |
| record_labels | Array of strings Array of post category IDs |
object Additional appointment fields |
{- "staff_id": 8886,
- "services": [
- {
- "id": 331,
- "first_cost": 9000,
- "discount": 50,
- "cost": 4500
}, - {
- "id": 333,
- "first_cost": 2000,
- "discount": 10,
- "cost": 1800
}
], - "save_if_busy": false,
- "datetime": "2025-09-21T23:00:00.000+03:00",
- "seance_length": 3600,
- "send_sms": true,
- "comment": "test appointment!",
- "sms_remain_hours": 6,
- "email_remain_hours": 24,
- "attendance": 1,
- "api_id": "777",
- "custom_color": "f44336",
- "record_labels": [
- "67345",
- "104474"
], - "custom_fields": {
- "my_custom_field": 123,
- "some_another_field": [
- "first value",
- "second value"
]
}
}{- "success": true,
- "data": {
- "id": 999,
- "services": [
- {
- "id": 331,
- "first_cost": 9000,
- "discount": 50,
- "cost": 4500
}, - {
- "id": 333,
- "first_cost": 2000,
- "discount": 10,
- "cost": 1800
}
], - "clients_count": 1,
- "staff": {
- "id": 8886,
- "name": "Jack",
- "spec": "stylist"
}, - "datetime": "2025-09-21T23:00:00.000+03:00",
- "seance_length": 3600,
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "comment": "test appointment!",
- "visit_attendance": 1,
- "confirmed": 1,
- "sms_before": 6,
- "sms_now": 1,
- "sms_now_text": "",
- "email_now": 1,
- "notified": 0,
- "master_request": 1,
- "api_id": "",
- "from_url": "",
- "review_requested": 0,
- "activity_id": 0,
- "documents": [
- {
- "id": 8172893,
- "type_id": 7,
- "storage_id": 0,
- "user_id": 746310,
- "company_id": 4564,
- "number": 4163,
- "comment": "",
- "date_created": "2025-09-21T23:00:00.000+03:00",
- "category_id": 0,
- "visit_id": 3,
- "record_id": 2,
- "type_title": "Visit"
}
]
}, - "meta": [ ]
}| location_id required | number location ID |
| record_id required | number Appointment ID |
| include_consumables | number |
| include_finance_transactions | number |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}Use this to filter appointments for a specific location
Filters appointments with a visit date starting from the specified date (inclusive)
Filters appointments with a visit date up to the specified date (inclusive)
Filters appointments created on or after this date
Returns appointments created on or before this date
Filters appointments created by a specific user
| page | number Example: page=1 Page number |
| editable_length | number Example: editable_length=50 Number of appointments per page, maximum 100 |
| salon_id | number Example: salon_id=1 Location ID |
| start_date | string Example: start_date='17.01.2025' Filter by visit date from |
| end_date | string Example: end_date='17.01.2025' Filter by visit date by |
| created_start_date | string Example: created_start_date='17.01.2025' Filter by appointment creation date from |
| created_end_date | string Example: created_end_date='17.01.2025' Filter by appointment creation date by |
| user_id | number Example: user_id=1 User ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1,
- "date": "2025-09-21T23:00:00.000+03:00",
- "datetime": "2025-11-17T00:00:00+0400",
- "create_date": "2025-11-17T16:08:08+0400",
- "comment": "",
- "deleted": false,
- "attendance": 0,
- "length": 3600,
- "notify_by_sms": 1,
- "notify_by_email": 12,
- "master_requested": true,
- "online": false,
- "api_id": 42,
- "last_change_date": "2025-11-18T16:58:59+0400",
- "prepaid": 0,
- "prepaid_confirmed": 0,
- "activity_id": 0,
- "services": [
- {
- "id": 1,
- "title": "beard trim",
- "cost": 100,
- "price_min": 500,
- "price_max": 1500,
- "discount": 0,
- "amount": 1
}
], - "company": {
- "id": 1,
- "title": "Business Example",
- "public_title": "Business Example",
- "business_group_id": 1,
- "business_type_id": 1,
- "country_id": 1,
- "city_id": 1,
- "timezone": "3",
- "timezone_name": "America/New_York",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "zip": "0",
- "phone": "",
- "phones": [ ],
- "site": "www.example.com",
- "allow_delete_record": true,
- "allow_change_record": true,
- "country": "United States",
- "city": "New York"
}, - "staff": {
- "id": 1,
- "name": "James Smith",
- "company_id": 1,
- "specialization": "Barber",
- "position": [ ],
- "rating": 0,
- "show_rating": true,
- "comments_count": 0,
- "votes_count": 0,
- "average_score": 0,
- "prepaid": "forbidden"
}, - "client": {
- "id": 1,
- "name": "James Smith",
- "phone": "+1-315-555-0175",
- "phone_code": "7",
- "email": "[email protected]"
}, - "custom_fields": {
- "dop-telephone": "+1-315-555-0175"
}
}
], - "meta": {
- "count": 1
}
}| visit_id required | number Example: 12345 |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
The comment object has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | Comment ID |
| salon_id | number | location ID |
| type | number | 1 - comment to the team member, 0 - to the salon |
| master_id | number | Team Member ID if type = 1 |
| text | string | Comment text |
| date | string | Date when the comment was left |
| rating | number | Rating (from 1 to 5) |
| user_id | number | Id of the user who left the comment |
| username | string | Name of the user who left the comment |
| user_avatar | string | Avatar of the user who left the comment |
| record_id | number | ID of the post after which the review was left (the value will be non-zero if the review was left through a link asking for a review after the visit) |
| location_id required | number location ID |
| start_date | string date in iso8601 format. Filter by date since (for example '2015-09-30') |
| end_date | string date in iso8601 format. Filter by date by (for example '2015-09-30') |
| team_member_id | number team member ID |
| rating | number Rating score. Filter by reviews with a specific rating. |
| page | number Page number |
| count | number Number of reviews per page |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 18437,
- "type": 1,
- "master_id": 8864,
- "text": "Fine!",
- "date": "2025-09-21T23:00:00.000+03:00",
- "rating": 4,
- "user_id": 157169,
- "user_name": "Victor Sitnikov",
- "user_avatar": "/images/no-master.png",
- "record_id": 100001
}
], - "meta": [ ]
}| location_id required | number location ID |
| team_member_id required | number team member ID, specify when creating a review for a team member |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| mark required | number Rating from 1 to 5 |
| text required | string Feedback text |
| name required | string Username to be displayed on the review page |
{- "mark": 4,
- "text": "Everything is very bad!",
- "name": "Victor"
}{- "success": true,
- "data": {
- "type": 1,
- "master_id": 8864,
- "id": 18437,
- "text": "Everything is very bad!",
- "date": "2025-09-21T23:00:00.000+03:00",
- "rating": 4,
- "user_id": 157169,
- "user_name": "Victor",
- "user_avatar": "/images/no-master.png"
}, - "meta": [ ]
}Class and event management for group activities. Schedule and manage group sessions.
| location_id required | number Example: 123 ID of a location. |
| from required | string Example: from=2023-06-01 Search start date (YYYY-MM-DD format). |
| till required | string Example: till=2023-07-15 Search end date (YYYY-MM-DD format). |
| service_ids | Array of integers Example: service_ids=123 Filter by services IDs. |
| staff_ids | Array of integers Example: staff_ids=456 Filter by staff IDs. |
| resource_ids | Array of integers Example: resource_ids=789 Filter by resources IDs. |
| page | number Example: page=1 Page number (default 1). |
| count | number Example: count=25 Page size (default 25). |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": [
- {
- "id": 3480140,
- "service_id": 5243360,
- "company_id": 68570,
- "staff_id": 921105,
- "date": "2025-09-21T23:00:00.000+03:00",
- "length": 3600,
- "capacity": 40,
- "records_count": 0,
- "color": "",
- "instructions": "",
- "stream_link": "",
- "font_color": "",
- "notified": false,
- "prepaid": "forbidden",
- "service": {
- "id": 5243360,
- "category_id": 5092305,
- "title": "Lecture on psychoanalysis",
- "price_min": 500,
- "price_max": 500,
- "comment": "Not",
- "image_url": "",
- "salon_service_id": 5792535,
- "prepaid": "forbidden",
- "category": {
- "id": 5092305,
- "category_id": 1,
- "title": "Psychoanalysis"
}
}, - "staff": {
- "id": 921105,
- "name": "Natalie",
- "company_id": 68570,
- "specialization": "Psychotherapist",
- "rating": 4.57,
- "show_rating": false,
- "comments_count": 7,
- "votes_count": 0,
- "average_score": 4.57,
- "prepaid": "forbidden",
- "position": {
- "id": 123340,
- "title": "Psychotherapist"
}
}, - "resource_instances": [
- {
- "id": 83030,
- "title": "Psychotherapist's office. #one",
- "resource_id": 34895
}
], - "labels": [ ]
}
], - "meta": {
- "count": 1
}
}| location_id required | number Example: 123 ID of a location. |
| from required | string Example: from=2023-06-01 Search start date (YYYY-MM-DD format). |
| till required | string Example: till=2023-07-15 Search end date (YYYY-MM-DD format). |
| service_ids | Array of integers Example: service_ids=123 Filter by services IDs. |
| staff_ids | Array of integers Example: staff_ids=456 Filter by staff IDs. |
| resource_ids | Array of integers Example: resource_ids=789 Filter by resources IDs. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": [
- "2023-06-01",
- "2023-06-02",
- "2023-06-08",
- "2023-07-04",
- "2023-07-15"
], - "meta": [ ]
}| location_id required | number Example: 123 ID of a location. |
| service_ids | Array of integers Example: service_ids=123 Filter by services IDs. |
| staff_ids | Array of integers Example: staff_ids=456 Filter by staff IDs. |
| resource_ids | Array of integers Example: resource_ids=789 Filter by resources IDs. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "min_date": "2023-06-01",
- "max_date": "2023-07-15"
}, - "meta": [ ]
}| location_id required | number Example: 123 ID of a location. |
| service_ids | Array of integers Example: service_ids=123 Filter by services IDs. |
| staff_ids | Array of integers Example: staff_ids=456 Filter by staff IDs. |
| resource_ids | Array of integers Example: resource_ids=789 Filter by resources IDs. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": [
- {
- "code": "staff",
- "title": "Staff",
- "data": [
- {
- "id": 1,
- "title": "Staff 1",
- "is_disabled": true
}, - {
- "id": 2,
- "title": "Staff 2",
- "is_disabled": false
}
]
}, - {
- "code": "service",
- "title": "Service",
- "data": [
- {
- "id": 1,
- "title": "Service 1",
- "is_disabled": true
}, - {
- "id": 2,
- "title": "Service 2",
- "is_disabled": false
}
]
}, - {
- "code": "resource",
- "title": "Resource",
- "data": [
- {
- "id": 1,
- "title": "Resource 1",
- "is_disabled": true
}, - {
- "id": 2,
- "title": "Resource 2",
- "is_disabled": false
}
]
}, - {
- "code": "service_category",
- "title": "Service category",
- "data": [
- {
- "id": 1,
- "title": "Category 1",
- "is_disabled": true
}, - {
- "id": 2,
- "title": "Category 2",
- "is_disabled": false
}
]
}
], - "meta": {
- "count": 4
}
}| location_id required | number Example: 4564 location ID |
| staff_id | number team member ID to filter |
| term | string Search by name or part of the service name |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| staff_id | number team member ID to filter |
| term | string Search by name or part of the service name |
{- "staff_id": 1,
- "term": "test"
}{- "success": true,
- "data": [
- {
- "id": 1209148,
- "title": "Fitness test",
- "capacity": 5,
- "price_min": 2,
- "price_max": 3,
- "is_multi": true,
- "category": {
- "id": 1285356,
- "title": "Group services"
}, - "staff": [
- {
- "id": 37695,
- "name": "John Doe",
- "length": 7200
}
], - "resources": [
- {
- "id": 464,
- "title": "massage room",
- "salon_id": 4564
}
]
}
], - "meta": {
- "count": 1
}
}Duplication of events occurs based on a set of parameters combined in the "duplication strategy" entity
| Field | Type | Description |
|---|---|---|
| title | string | Strategy name |
| repeat_mode_id | integer | Repeat mode |
| days | integer[] | List of days of the week: 0 Sun, 6 Fri |
| interval | integer | Break in searching for dates, in units of type |
| content_type | integer | Duplicate appointments? 1 - no, 2 - yes |
The repeat mode can take the values
| Meaning | Description | Break unit |
|---|---|---|
| 1 | Daily | Day |
| 2 | Weekdays | - |
| 3 | Mon Wed Fri | - |
| 4 | Tue Thu | - |
| 5 | Every week | Week |
| 6 | Every month | Month |
| 7 | Every year | Year |
The days field is relevant only for mode 5 - week, for specifying specific days of repetition If you specify repeat_mode = 5, days = [1,4], interval = 2, then the event will be repeat every 3rd week on mon and thurs
| location_id required | number Example: 4564 location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 2,
- "company_id": 4564,
- "title": "test pattern",
- "repeat_mode_id": 1,
- "repeat_mode": {
- "id": 1,
- "title": "Daily"
}, - "days": [ ],
- "interval": 0,
- "content_type": 1
}
], - "meta": {
- "count": 1
}
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title required | string Name |
| days | Array of objects Recurrence Days for Weekly Mode |
| repeat_mode_id required | number Repeat Mode |
| interval | number Break in searching for dates |
| content_type | number Duplicate appointments? 1 - no, 2 - yes |
{- "success": true,
- "data": {
- "id": 3,
- "company_id": 4564,
- "title": "Test duplication strategy",
- "repeat_mode_id": 5,
- "repeat_mode": {
- "id": 5,
- "title": "Every week"
}, - "days": [
- 1,
- 4
], - "interval": 2,
- "content_type": 1
}, - "meta": [ ]
}| location_id required | number Example: 4564 location ID |
| strategy_id required | number Example: 3 Replication strategy ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title required | string Name |
| days | Array of objects Recurrence Days for Weekly Mode |
| repeat_mode_id required | number Repeat Mode |
| interval | number Break in searching for dates |
| content_type | number Duplicate appointments? 1 - no, 2 - yes |
{- "success": true,
- "data": {
- "id": 3,
- "company_id": 4564,
- "title": "New test duplication strategy",
- "repeat_mode_id": 5,
- "repeat_mode": {
- "id": 5,
- "title": "Every week"
}, - "days": [
- 2,
- 3
], - "interval": 3,
- "content_type": 1
}, - "meta": [ ]
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| date required | string <date-time> date and time |
| service_id required | number Service ID |
| staff_id required | number team member ID |
| capacity required | number Capacity |
| resource_instance_ids | Array of numbers Array of resource instance IDs |
| force required | boolean Ignore errors (busy team member/resources, etc.) |
| length | number Event duration in seconds |
{- "date": "2017-10-10 15:30",
- "service_id": 1185299,
- "staff_id": 26427,
- "length": 3600,
- "capacity": 9,
- "resource_instance_ids": [
- 3127
], - "force": false
}{- "success": true,
- "data": {
- "id": 108,
- "salon_id": 4564,
- "service_id": 1185299,
- "staff_id": 26427,
- "date": "2025-09-21T23:00:00.000+03:00",
- "length": 3600,
- "capacity": 9,
- "records_count": 0,
- "color": "",
- "font_color": "",
- "service": {
- "id": 1185299,
- "title": "Group manicure",
- "category_id": 754917
}, - "staff": {
- "id": 26427,
- "name": "Monica Bellucci",
- "company_id": 4564
}, - "resource_instances": [
- {
- "id": 3127,
- "title": "Manicure machine #1",
- "resource_id": 1364
}
]
}, - "meta": [ ]
}| location_id required | number location ID |
| activity_id required | integer group event ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "id": 108,
- "salon_id": 4564,
- "service_id": 1185299,
- "staff_id": 26427,
- "date": "2025-09-21T23:00:00.000+03:00",
- "length": 3600,
- "capacity": 9,
- "records_count": 0,
- "color": "",
- "font_color": "",
- "service": {
- "id": 1185299,
- "title": "Group manicure",
- "category_id": 754917
}, - "staff": {
- "id": 26427,
- "name": "Monica Bellucci",
- "company_id": 4564
}, - "resource_instances": [
- {
- "id": 3127,
- "title": "Manicure machine #1",
- "resource_id": 1364
}
]
}, - "meta": [ ]
}| location_id required | number location ID |
| activity_id required | integer Group Event ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| date required | string <date-time> date and time |
| service_id required | number Service ID |
| staff_id required | number team member ID |
| capacity required | number Capacity |
| resource_instance_ids | Array of numbers Array of resource instance IDs |
| force required | boolean Ignore errors (busy team member/resources, etc.) |
| length | number Event duration in seconds |
{- "date": "2017-10-10 15:30",
- "service_id": 1185299,
- "staff_id": 26427,
- "length": 3600,
- "capacity": 9,
- "resource_instance_ids": [
- 3127
], - "force": false
}{- "success": true,
- "data": {
- "id": 108,
- "salon_id": 4564,
- "service_id": 1185299,
- "staff_id": 26427,
- "date": "2025-09-21T23:00:00.000+03:00",
- "length": 3600,
- "capacity": 9,
- "records_count": 0,
- "color": "",
- "font_color": "",
- "service": {
- "id": 1185299,
- "title": "Group manicure",
- "category_id": 754917
}, - "staff": {
- "id": 26427,
- "name": "Monica Bellucci",
- "company_id": 4564
}, - "resource_instances": [
- {
- "id": 3127,
- "title": "Manicure machine #1",
- "resource_id": 1364
}
]
}, - "meta": [ ]
}| location_id required | number location ID |
| activity_id required | integer group event ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "meta": {
- "message": "Accepted"
}
}A request for duplication can be made in 3 ways:
Specifying a list of dates and times to duplicate
Specifying the id of the repetition strategy
By specifying all repetition parameters
| location_id required | number Example: 1 |
| activity_id required | integer Example: 2 |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{ }{- "success": true,
- "data": [
- {
- "id": 9182,
- "service_id": 1209148,
- "salon_id": 4564,
- "master_id": 1000265,
- "date": "2025-09-21T23:00:00.000+03:00",
- "length": 7200,
- "capacity": 5,
- "records_count": 0,
- "color": "",
- "instructions": "",
- "stream_link": "",
- "font_color": "",
- "notified": false,
- "timestamp": "2025-09-21T23:00:00.000+03:00",
- "service": {
- "id": 1209148,
- "category_id": 1285356,
- "title": "Fitness \"test\"",
- "price_min": 2,
- "price_max": 3,
- "prepaid": "forbidden"
}, - "resource_instances": [
- {
- "id": 1094,
- "title": "Massage room 1st floor",
- "resource_id": 464
}
], - "master": {
- "id": 1000265,
- "name": "Master",
- "company_id": 4564,
- "specialization": 321,
- "rating": 0,
- "show_rating": true,
- "prepaid": "allowed",
- "position": [ ]
}, - "records": [ ],
- "labels": [ ]
}
], - "meta": {
- "count": 2
}
}Creates a group event using the new v2 API.
Note: This is the v2 version of group events API with enhanced features.
| location_id required | integer Example: 1 Location (business) ID |
| Accept required | string Default: application/vnd.api.v2+json API version header |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| staff_id required | integer Team member (staff) ID who will conduct the event. |
| service_id required | integer Service ID for this event. |
| resource_instance_ids required | Array of integers List of resource instance IDs (required, can be empty array). |
| label_ids required | Array of integers List of category/label IDs (required, can be empty array). |
| date required | string <date-time> Event date and time. |
| length required | integer Event duration in seconds. |
integer or null Technical break duration in seconds.
| |
| capacity required | integer Number of available slots for this event. |
| comment | string Event comment or description. |
| color | string Event color (hex format). |
| instructions | string Instructions for the event. |
| stream_link | string Stream link for online events. |
| force | boolean Default: false Skip resource availability check (true - skip check, false - validate). |
{- "staff_id": 1,
- "service_id": 500,
- "resource_instance_ids": [
- 123,
- 432
], - "label_ids": [
- 123,
- 432
], - "date": "2024-11-22 14:00:00",
- "length": 3600,
- "technical_break_duration": 300,
- "capacity": 4,
- "comment": "Beginner group session",
- "color": "#9c27b0",
- "instructions": "Bring two balls",
- "force": false
}{- "success": true,
- "data": { },
- "meta": { }
}Returns detailed information about a specific group event using v2 API.
| location_id required | integer Location (business) ID |
| activity_id required | integer Activity ID |
| Accept required | string Default: application/vnd.api.v2+json API version header |
| Authorization required | string Bearer {partner_token}, User {user_token} |
{- "success": true,
- "data": { },
- "meta": { }
}Updates an existing group event using v2 API.
| location_id required | integer Location (business) ID |
| activity_id required | integer Activity ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| staff_id required | integer Team member (staff) ID |
| service_id required | integer Service ID |
| resource_instance_ids required | Array of integers List of resource instance IDs (required, can be empty) |
| label_ids required | Array of integers List of category/label IDs (required, can be empty) |
| date required | string <date-time> Event date and time |
| length required | integer Event duration in seconds |
integer or null Technical break duration (multiples of 300, max 3600) | |
| capacity required | integer Number of available slots |
| comment | string Event comment |
| color | string Event color (hex format) |
| instructions | string Instructions for the event |
| stream_link | string Stream link for online events |
| force | boolean Default: false Skip resource availability check |
{- "staff_id": 0,
- "service_id": 0,
- "resource_instance_ids": [
- 0
], - "label_ids": [
- 0
], - "date": "2019-08-24T14:15:22Z",
- "length": 0,
- "technical_break_duration": 0,
- "capacity": 0,
- "comment": "string",
- "color": "string",
- "instructions": "string",
- "stream_link": "string",
- "force": false
}{- "success": true,
- "data": { },
- "meta": { }
}Deletes a group event using v2 API.
| location_id required | integer Location (business) ID |
| activity_id required | integer Activity ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
{- "success": false,
- "data": null,
- "meta": { }
}Creates a booking (appointment record) for a client in a group event using v2 API.
Note: All client fields are required even when using existing client ID.
| location_id required | integer Location (business) ID |
| activity_id required | integer Activity ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| client_id | integer Existing client ID (deprecated, use client.id instead) |
required | object Client information |
| comer_id | integer Visitor ID (alternative to client) |
object Visitor information (alternative to client) | |
| labels | Array of integers Label/category IDs for this booking |
| clients_count required | integer Number of participants/slots to reserve |
{- "client_id": 123456,
- "client": {
- "id": 123456,
- "name": "John",
- "phone": "79991234567",
- "surname": "Smith",
- "patronymic": null,
- "gender": 0,
- "birthday": "1990-01-01",
- "custom_field_values": [
- {
- "code": "string",
- "value": "string"
}
], - "agreements": [
- {
- "is_newsletter_allowed": true,
- "is_personal_data_processing_allowed": true
}
]
}, - "comer_id": 500,
- "comer": {
- "name": "Guest User"
}, - "labels": [
- 1,
- 2
], - "clients_count": 1
}{- "success": true,
- "data": { },
- "meta": { }
}Updates an existing booking (appointment record) in a group event using v2 API.
Note: This endpoint uses PATCH (not POST as in some documentation).
| location_id required | integer Location (business) ID |
| activity_id required | integer Activity ID |
| record_id required | integer Record (booking) ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| reschedule_activity_id required | integer Activity ID to reschedule this booking to (required field) |
object Service pricing information | |
Array of objects Products/goods associated with this booking | |
| comment | string Booking comment |
| label_ids | Array of integers Label/category IDs |
| color | string Booking color (hex without |
| clients_count | integer Number of participants |
{- "reschedule_activity_id": 12345,
- "attendance_service_item": {
- "cost_per_unit": 100,
- "discount_percent": 10,
- "manual_cost": 90
}, - "attendance_good_items": [
- {
- "id": 0,
- "good_id": 0,
- "unit_id": 0,
- "storage_id": 0,
- "staff_id": 0,
- "operation_unit_type": "sale",
- "number": 0,
- "planned_activation_date": "2019-08-24T14:15:22Z",
- "marks": [
- "string"
], - "quantity": 0,
- "cost_per_unit": 0,
- "manual_cost": 0,
- "discount_percent": 0
}
], - "comment": "Updated booking comment",
- "label_ids": [
- 123,
- 456
], - "color": "f44336",
- "clients_count": 2
}{- "success": true,
- "data": { },
- "meta": { }
}Work schedules, available time slots, resources, and timetable management for team members and facilities.
Creates a client schedule with a series of appointments for events, based on an existing schedule..
| location_id required | number Example: 123 ID of a location. |
| schedule_id required | integer Example: 123 ID of a schedule. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| client_id required | number ID of client for creating a client schedule. |
| comer_id | number ID of client`s comer for creating a client schedule. |
| schedule_days_ids required | Array of numbers [ 1 .. 7 ] items IDs of schedule series, min of 1 series, max of 7 series. |
{- "client_id": 123,
- "comer_id": 123,
- "schedule_days_ids": [
- 123
]
}{- "success": true,
- "data": {
- "id": 123,
- "loyalty_abonement_id": null,
- "final_day": "2022-01-01 12:12:12",
- "days": [
- {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "timetable_event_schedule_id": 123,
- "day_of_week": "mon",
- "events_time": "14:00:00",
- "events_duration": 3600,
- "events_master": {
- "id": 123,
- "name": "John Johnson",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "Staff"
}
}, - "events_labels": [
- {
- "id": 123,
- "title": "Label",
- "color": "#ff0000"
}
], - "events_resource_instances": [
- {
- "id": 123,
- "title": "Resource #1",
- "resource_id": 123
}
]
}
]
}, - "meta": { }
}Updates the client schedule by attaching or detaching a schedule series, which results in appointments for future events being created or removed.
| location_id required | number Example: 123 ID of a location. |
| schedule_id required | integer Example: 123 ID of a schedule. |
| client_schedule_id required | number Example: 123 ID of a client schedule. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| schedule_days_ids required | Array of numbers [ 1 .. 7 ] items IDs of schedule series, min of 1 series, max of 7 series. |
{- "schedule_days_ids": [
- 123
]
}{- "success": true,
- "data": {
- "id": 123,
- "loyalty_abonement_id": null,
- "final_day": "2022-01-01 12:12:12",
- "days": [
- {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "timetable_event_schedule_id": 123,
- "day_of_week": "mon",
- "events_time": "14:00:00",
- "events_duration": 3600,
- "events_master": {
- "id": 123,
- "name": "John Johnson",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "Staff"
}
}, - "events_labels": [
- {
- "id": 123,
- "title": "Label",
- "color": "#ff0000"
}
], - "events_resource_instances": [
- {
- "id": 123,
- "title": "Resource #1",
- "resource_id": 123
}
]
}
]
}, - "meta": { }
}Deletes a client schedule, including all associated future appointments for scheduled events.
| location_id required | number Example: 123 ID of a location. |
| schedule_id required | integer Example: 123 ID of a schedule. |
| client_schedule_id required | number Example: 123 ID of a client schedule. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": null,
- "meta": { }
}| location_id required | number location ID |
| team_member_id required | number team member ID. |
| start_date required | number Example: 20251201 Period start date |
| end_date required | number Example: 20251231 Period end date |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "date": "2025-09-21T23:00:00.000+03:00",
- "is_working": 1,
- "slots": [
- {
- "from": "10:00",
- "to": "14:00"
}, - {
- "from": "15:00",
- "to": "23:15"
}
]
}, - {
- "date": "2025-09-21T23:00:00.000+03:00",
- "is_working": 1,
- "slots": [
- {
- "from": "10:00",
- "to": "14:30"
}, - {
- "from": "15:00",
- "to": "22:10"
}
]
}, - {
- "date": "2025-09-21T23:00:00.000+03:00",
- "is_working": 0,
- "slots": [ ]
}, - {
- "date": "2025-09-21T23:00:00.000+03:00",
- "is_working": 1,
- "slots": [
- {
- "from": "10:00",
- "to": "14:00"
}, - {
- "from": "15:00",
- "to": "22:00"
}
]
}
], - "meta": [ ]
}| location_id required | number location ID |
| team_member_id required | number team member ID |
| start_date required | string <date> Start date (YYYY-MM-DD) |
| end_date required | string <date> End date (YYYY-MM-DD) |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| date required | string date |
| is_working required | boolean Working date or not |
| slots required | object Array of (from, to) working hours |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}The Appointment Calendar dates are returned as an array of date strings, for example: ["2015-10-26", "2015-10-30"]. To retrieve this list, you must provide a reference date. The response will return the available working dates of the specified location or team member relative to that date
| location_id required | number location ID |
| date required | string date in iso8601 format. Filter by appointment date (eg '2015-09-30') |
| staff_id | number team member ID. |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- "2025-09-21T23:00:00.000+03:00",
- "2025-09-21T23:00:00.000+03:00",
- "2025-09-21T23:00:00.000+03:00",
- "2025-09-21T23:00:00.000+03:00",
- "2025-09-21T23:00:00.000+03:00",
- "2025-09-21T23:00:00.000+03:00",
- "2025-09-21T23:00:00.000+03:00"
], - "meta": [ ]
}The sessions object for the log has the following fields:
| Field | Type | Description |
|---|---|---|
| time | string | Session time (17:30 for example) |
| free | boolean | Free time or busy |
| location_id required | number location ID |
| date required | string date in iso8601 format. Filter by appointment date (eg '2015-09-30') |
| team_member_id required | number team member ID. |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "time": "10:00",
- "is_free": true
}, - {
- "time": "10:15",
- "is_free": true
}, - {
- "time": "10:30",
- "is_free": true
}, - {
- "time": "10:45",
- "is_free": true
}, - {
- "time": "11:00",
- "is_free": false
}, - {
- "time": "11:15",
- "is_free": false
}, - {
- "time": "11:30",
- "is_free": false
}, - {
- "time": "11:45",
- "is_free": false
}, - {
- "time": "12:00",
- "is_free": false
}, - {
- "time": "12:15",
- "is_free": false
}, - {
- "time": "12:30",
- "is_free": false
}, - {
- "time": "12:45",
- "is_free": false
}, - {
- "time": "13:00",
- "is_free": true
}, - {
- "time": "13:15",
- "is_free": true
}, - {
- "time": "13:30",
- "is_free": true
}, - {
- "time": "13:45",
- "is_free": true
}, - {
- "time": "14:00",
- "is_free": true
}, - {
- "time": "14:15",
- "is_free": true
}, - {
- "time": "14:30",
- "is_free": true
}, - {
- "time": "14:45",
- "is_free": true
}, - {
- "time": "15:00",
- "is_free": true
}, - {
- "time": "15:15",
- "is_free": true
}, - {
- "time": "15:30",
- "is_free": true
}, - {
- "time": "15:45",
- "is_free": true
}, - {
- "time": "16:00",
- "is_free": true
}, - {
- "time": "16:15",
- "is_free": true
}, - {
- "time": "16:30",
- "is_free": false
}, - {
- "time": "16:45",
- "is_free": false
}, - {
- "time": "17:00",
- "is_free": false
}
], - "meta": [ ]
}| location_id required | number location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 70,
- "title": "Pedicure chair",
- "instances": [
- {
- "id": 181,
- "title": "Pedicure chair #1",
- "resource_id": 70
}
]
}, - {
- "id": 464,
- "title": "massage room",
- "instances": [
- {
- "id": 1094,
- "title": "Massage room 1st floor",
- "resource_id": 464
}, - {
- "id": 1162,
- "title": "Massage room 2nd floor",
- "resource_id": 464
}
]
}
], - "meta": {
- "count": 2
}
}Search for a schedule based on the appointment or event linked to it, or based on the associated appointment or event.
| location_id required | number Example: 123 ID of a location. |
| entity_type required | string Enum: "record" "activity" Example: activity Type of an entity schedule is searched by: |
| entity_id required | number Example: 123 ID of an entity schedule is searched by. |
| include | Array of strings Items Enum: "days" "days.events_master" "days.events_labels" "days.events_resource_instances" Requested set of an included models. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "original_entity_type": "activity",
- "original_entity_id": 123,
- "date_start": "2022-01-01",
- "date_end": "2022-02-01",
- "days": [
- {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "timetable_event_schedule_id": 123,
- "day_of_week": "mon",
- "events_time": "14:00:00",
- "events_duration": 3600,
- "events_master": {
- "id": 123,
- "name": "John Johnson",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "Staff"
}
}, - "events_labels": [
- {
- "id": 123,
- "title": "Label",
- "color": "#ff0000"
}
], - "events_resource_instances": [
- {
- "id": 123,
- "title": "Resource #1",
- "resource_id": 123
}
]
}
]
}, - "meta": { }
}Creates a schedule for appointments or events based on the original associated entity.
| location_id required | number Example: 123 ID of a location. |
| include | Array of strings Items Value: "days" Requested set of an included models. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| original_entity_type required | string Enum: "record" "activity" Type of entity the schedule will be based on: |
| original_entity_id required | number ID of entity the schedule will be based on. |
| date_end required | string <date> Date of the schedule end. |
| add_clients_from_original_entity required | boolean Add clients from original entity to all scheduled events. |
required | Array of objects [ 1 .. 7 ] items Each object represents schedule series settings for a specific day of the week. A minimum of 1 and a maximum of 7 schedule series can be defined (one for each day of the week). |
{- "original_entity_type": "activity",
- "original_entity_id": 123,
- "date_end": "2022-02-01",
- "add_clients_from_original_entity": false,
- "days": [
- {
- "day_of_week": "mon",
- "events_master_id": 123,
- "events_time": "14:00:00",
- "events_duration": 3600,
- "events_capacity": 4,
- "labels_ids": [
- 123
], - "resource_instances_ids": [
- 123
]
}
]
}{- "success": true,
- "data": {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "original_entity_type": "activity",
- "original_entity_id": 123,
- "date_start": "2022-01-01",
- "date_end": "2022-02-01",
- "days": [
- {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "timetable_event_schedule_id": 123,
- "day_of_week": "mon",
- "events_time": "14:00:00",
- "events_duration": 3600,
- "events_master": {
- "id": 123,
- "name": "John Johnson",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "Staff"
}
}, - "events_labels": [
- {
- "id": 123,
- "title": "Label",
- "color": "#ff0000"
}
], - "events_resource_instances": [
- {
- "id": 123,
- "title": "Resource #1",
- "resource_id": 123
}
]
}
]
}, - "meta": { }
}Updates the settings of a schedule containing appointments or events.
| location_id required | number Example: 123 ID of a location. |
| schedule_id required | integer Example: 123 ID of a schedule. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| date_end | string <date> Date of the schedule end. |
{- "date_end": "2022-02-01"
}{- "success": true,
- "data": {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "original_entity_type": "activity",
- "original_entity_id": 123,
- "date_start": "2022-01-01",
- "date_end": "2022-02-01",
- "days": [
- {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "timetable_event_schedule_id": 123,
- "day_of_week": "mon",
- "events_time": "14:00:00",
- "events_duration": 3600,
- "events_master": {
- "id": 123,
- "name": "John Johnson",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "Staff"
}
}, - "events_labels": [
- {
- "id": 123,
- "title": "Label",
- "color": "#ff0000"
}
], - "events_resource_instances": [
- {
- "id": 123,
- "title": "Resource #1",
- "resource_id": 123
}
]
}
]
}, - "meta": { }
}Completely deletes a schedule along with all its series and the linked appointments or events.
| location_id required | number Example: 123 ID of a location. |
| schedule_id required | integer Example: 123 ID of a schedule. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": null,
- "meta": { }
}Adds a new series to an existing schedule of appointments or events.
| location_id required | number Example: 123 ID of a location. |
| schedule_id required | integer Example: 123 ID of a schedule. |
| include | Array of strings Items Enum: "events_master" "events_labels" "events_resource_instances" "events" Requested set of an included models. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| day_of_week required | string Enum: "mon" "tue" "wed" "thu" "fri" "sat" "sun" The day of the week for the schedule series. |
| events_master_id required | number The ID of the team member assigned to the events in the schedule series. |
| events_time required | string Start time of the events in the schedule series, formatted as HH:MM:SS. |
| events_duration required | number Duration of each event in the schedule series, in seconds. |
| events_capacity required | number The capacity of activities in the schedule series. For appointments, this should be set to 1. |
| labels_ids | Array of numbers An array of label IDs associated with the events in the schedule series. |
| resource_instances_ids | Array of numbers An array of resource instance IDs used in the events of the schedule series. |
{- "day_of_week": "mon",
- "events_master_id": 123,
- "events_time": "14:00:00",
- "events_duration": 3600,
- "events_capacity": 4,
- "labels_ids": [
- 123
], - "resource_instances_ids": [
- 123
]
}{- "success": true,
- "data": {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "timetable_event_schedule_id": 123,
- "day_of_week": "mon",
- "events_time": "14:00:00",
- "events_duration": 3600,
- "events_master": {
- "id": 123,
- "name": "John Johnson",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "Staff"
}
}, - "events_labels": [
- {
- "id": 123,
- "title": "Label",
- "color": "#ff0000"
}
], - "events_resource_instances": [
- {
- "id": 123,
- "title": "Resource #1",
- "resource_id": 123
}
], - "events": [
- {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "event_status": "stable",
- "event_datetime": "2022-01-24T14:00:00+00:00",
- "event_entity_type": "activity",
- "event_entity_id": 123,
- "is_entity_master_changed": false,
- "is_entity_datetime_changed": false,
- "is_entity_duration_changed": false,
- "is_entity_labels_changed": false,
- "is_entity_resource_instances_changed": false
}
]
}, - "meta": { }
}Updates the settings of a schedule series for appointments or events.
| location_id required | number Example: 123 ID of a location. |
| schedule_id required | integer Example: 123 ID of a schedule. |
| day_id required | number Example: 123 ID of a schedule series. |
| include | Array of strings Items Enum: "events_master" "events_labels" "events_resource_instances" "events" Requested set of an included models. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| force required | boolean Flag for force override of manual changes in scheduled appointments/events. |
| events_master_id | number The ID of the team member assigned to the events in the schedule series. |
| events_time | string Start time of the events in the schedule series, formatted as HH:MM:SS. |
| events_duration | number Duration of each event in the schedule series, in seconds. |
| events_capacity | number The capacity of activities in the schedule series. For appointments, this should be set to 1. |
| labels_ids | Array of numbers An array of label IDs associated with the events in the schedule series. |
| resource_instances_ids | Array of numbers An array of resource instance IDs used in the events of the schedule series. |
{- "force": false,
- "events_master_id": 123,
- "events_time": "14:00:00",
- "events_duration": 3600,
- "events_capacity": 4,
- "labels_ids": [
- 123
], - "resource_instances_ids": [
- 123
]
}{- "success": true,
- "data": {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "timetable_event_schedule_id": 123,
- "day_of_week": "mon",
- "events_time": "14:00:00",
- "events_duration": 3600,
- "events_master": {
- "id": 123,
- "name": "John Johnson",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "Staff"
}
}, - "events_labels": [
- {
- "id": 123,
- "title": "Label",
- "color": "#ff0000"
}
], - "events_resource_instances": [
- {
- "id": 123,
- "title": "Resource #1",
- "resource_id": 123
}
], - "events": [
- {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "event_status": "stable",
- "event_datetime": "2022-01-24T14:00:00+00:00",
- "event_entity_type": "activity",
- "event_entity_id": 123,
- "is_entity_master_changed": false,
- "is_entity_datetime_changed": false,
- "is_entity_duration_changed": false,
- "is_entity_labels_changed": false,
- "is_entity_resource_instances_changed": false
}
]
}, - "meta": { }
}Deletes a schedule series and all appointments or events linked to it.
| location_id required | number Example: 123 ID of a location. |
| schedule_id required | integer Example: 123 ID of a schedule. |
| day_id required | number Example: 123 ID of a schedule series. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": null,
- "meta": { }
}Prints a list of events of scheduled records/activities.
| location_id required | number Example: 123 ID of a location. |
| schedule_id required | integer Example: 123 ID of a schedule. |
| day_id required | number Example: 123 ID of a schedule series. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": [
- {
- "id": 123,
- "created_at": "2022-01-01T12:12:12+00:00",
- "updated_at": "2022-01-01T12:12:12+00:00",
- "deleted_at": null,
- "event_status": "stable",
- "event_datetime": "2022-01-24T14:00:00+00:00",
- "event_entity_type": "activity",
- "event_entity_id": 123,
- "is_entity_master_changed": false,
- "is_entity_datetime_changed": false,
- "is_entity_duration_changed": false,
- "is_entity_labels_changed": false,
- "is_entity_resource_instances_changed": false,
- "entity_master": {
- "id": 123,
- "name": "John Johnson",
- "company_id": 123,
- "specialization": "Master",
- "position": {
- "id": 123,
- "title": "Staff"
}
}, - "entity_datetime": "2022-01-24 14:00:00",
- "entity_duration": 3600,
- "entity_labels": [
- {
- "id": 123,
- "title": "Label",
- "color": "#ff0000"
}
], - "entity_resource_instances": [
- {
- "id": 123,
- "title": "Resource #1",
- "resource_id": 123
}
]
}
], - "meta": {
- "count": 10
}
}| location_id required | number location ID |
| Accept required | string e.g. application/vnd.api.v2+json |
| Authorization required | string Bearer partner_token, User user_token |
| Content-Type required | string application/json |
{- "success": true,
- "data": {
- "record_type": 0,
- "activity_record_clients_count_max": 1
}, - "meta": [ ]
}| location_id required | number location ID |
| Accept required | string e.g. application/vnd.api.v2+json |
| Authorization required | string Bearer partner_token, User user_token |
| Content-Type required | string application/json |
| record_type required | integer [ 0 .. 2 ] Default record type: 0 - Mixed appointment, 1 - Individual appointment, 2 - Group event |
| activity_record_clients_count_max required | integer [ 1 .. 255 ] Maximum number of seats in one group event |
{- "record_type": 0,
- "activity_record_clients_count_max": 1
}{- "success": true,
- "data": {
- "record_type": 90,
- "activity_record_clients_count_max": 1
}, - "meta": [ ]
}Product catalog management. Define products available for sale and organize them into categories.
You can retrieve a list of products and product categories by providing the location ID. Use the search_term parameter to filter:
Limit the number of results using the max_count parameter.
If search_term is not provided, the response will return a list of root categories for the specified location. In this case, the max_count parameter is ignored. If search_term is provided, the system will first search among categories. If fewer than max_count results are found, the search will continue among products to fill the remaining count.
The result is returned as an array of products tree elements.
Product tree element has the following structure:
| Field | Type | Description | | -------------| ------- | -------------------------------------------------- ----------------------------------------- | | parent_id | number | Parent element ID (0 for root elements) | | item_id | number | Item ID (0 if item is a category) | | category_id | number | Product category ID (0 if the item is a product) | | title | string | Product name or product category | | is_chain | boolean | Is the element chain-bound? true - the element is connected to the chain, false - not connected | | is_category | boolean | Is the element a category? true - category, false - product | | is_item | boolean | Is the item a product? true - product, false - category |
| location_id required | number location ID |
| term | string Search query by name, article number or barcode |
| count | number The number of output lines per page. Maximum 100 |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "parent_id": 0,
- "item_id": 0,
- "category_id": 123,
- "title": "Root category 1",
- "is_chain": true,
- "is_category": true,
- "is_item": false
}, - {
- "parent_id": 0,
- "item_id": 0,
- "category_id": 456,
- "title": "Root category 2",
- "is_chain": true,
- "is_category": true,
- "is_item": false
}
], - "meta": {
- "count": 2
}
}term: Name, article or barcode
page (number, 1) - Page number (not used if good_id is passed)
count (number, 25) - Number of products on the page (not used if good_id is passed)
category_id (number, 777) - Id of the product category (not used if good_id is passed)
changed_after (string) - filtering products changed/created since a specific date and time (not used if good_id is passed)
changed_before (string) - filtering products changed/created before a specific date and time (not used if good_id is passed)
| location_id required | number location ID |
| good_id required | number Product ID (if you need to get a specific product) |
| term | string name, article number or barcode |
| page | number Example: page=1 page number |
| count | number Example: count=25 number of products per page |
| category_id | number Product category ID |
| changed_after | string Example: changed_after=2025-09-21T23:00:00.000+03:00 filtering products modified/created since a specific date and time |
| changed_before | string Example: changed_before=2017-01-01T12:00:00+0400 filtering products modified/created before a specific date and time |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "title": "Shampoo 1",
- "value": "Shampoo 1",
- "label": "Shampoo 1 (123)",
- "good_id": 123456,
- "cost": 100500,
- "unit_id": 4835,
- "unit_short_title": "PC",
- "service_unit_id": 3548,
- "service_unit_short_title": "gr",
- "actual_cost": 1050,
- "unit_actual_cost": 105,
- "unit_actual_cost_format": "105 r",
- "unit_equals": 10,
- "barcode": "123",
- "loyalty_abonement_type_id": "0",
- "loyalty_certificate_type_id": "0",
- "loyalty_allow_empty_code": true,
- "critical_amount": 0,
- "desired_amount": 0,
- "actual_amounts": [
- {
- "storage_id": 987,
- "amount": 1000000
}
], - "last_change_date": "2017-01-01T12:00:00+0400"
}
], - "meta": [ ]
}The method allows you to change the product parameters. When editing units of measure for an item that already has inventory operations, you must add an array of rules for recalculating units of measure - correction_rules. Otherwise, the array is optional.
| location_id required | number Location ID |
| good_id required | number Item ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title required | string Product Name |
| print_title | string Title to be printed on receipt |
| article | string vendor code |
| barcode | string Barcode |
| category_id required | integer Product category ID |
| cost | number <float> Selling price |
| actual_cost | number <float> Cost price |
| sale_unit_id required | integer Sales unit |
| service_unit_id required | integer Write-off unit |
| unit_equals | number <float> The ratio of the unit of measure for sale to the unit of measure for write-off |
| critical_amount | number <float> critical residue |
| desired_amount | number <float> Desired balance |
| netto | number <float> Net weight |
| brutto | number <float> Gross weight |
| comment | string A comment |
| tax_variant | integer Taxation system |
| vat_id | integer VAT |
Array of objects An array of rules for converting units of measurement (required if there are inventory operations for the product) |
{- "title": "Shampoo",
- "print_title": "Shampoo",
- "article": "123",
- "barcode": "123",
- "category_id": 289632,
- "cost": 1000,
- "actual_cost": 500,
- "sale_unit_id": 216762,
- "service_unit_id": 216762,
- "unit_equals": 100,
- "critical_amount": 1,
- "desired_amount": 1,
- "netto": 200,
- "brutto": 250,
- "comment": "Test comment 123",
- "tax_variant": 0,
- "vat_id": 3,
- "correction_rules": [
- {
- "type": 1,
- "base_unit": "service"
}, - {
- "type": 2,
- "base_unit": "service"
}, - {
- "type": 3,
- "base_unit": "sale"
}, - {
- "type": 4,
- "base_unit": "sale"
}, - {
- "type": 5,
- "base_unit": "sale"
}
]
}{- "success": true,
- "data": [
- {
- "title": "Shampoo 1",
- "value": "Shampoo 1",
- "label": "Shampoo 1 (123)",
- "good_id": 123456,
- "cost": 100500,
- "unit_id": 4835,
- "unit_short_title": "PC",
- "service_unit_id": 3548,
- "service_unit_short_title": "gr",
- "actual_cost": 1050,
- "unit_actual_cost": 105,
- "unit_actual_cost_format": "105 r",
- "unit_equals": 10,
- "barcode": "123",
- "loyalty_abonement_type_id": "0",
- "loyalty_certificate_type_id": "0",
- "loyalty_allow_empty_code": true,
- "critical_amount": 0,
- "desired_amount": 0,
- "actual_amounts": [
- {
- "storage_id": 987,
- "amount": 1000000
}
], - "last_change_date": "2017-01-01T12:00:00+0400"
}
], - "meta": [ ]
}The method allows you to remove the product
| location_id required | number Location ID |
| good_id required | number Item ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}Returns a list of all products for the specified location
| location_id required | number Location ID |
| Accept required | string application/vnd.api.v2+json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "title": "Shampoo 1",
- "value": "Shampoo 1",
- "label": "Shampoo 1 (123)",
- "good_id": 123456,
- "cost": 100500,
- "unit_id": 4835,
- "unit_short_title": "PC"
}
], - "meta": [ ]
}The method allows you to create a product
| location_id required | number Location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title required | string Product Name |
| print_title | string Title to be printed on receipt |
| article | string vendor code |
| barcode | string Barcode |
| category_id required | integer Product category ID |
| cost | number <float> Selling price |
| actual_cost | number <float> Cost price |
| sale_unit_id required | integer Sales unit |
| service_unit_id required | integer Write-off unit |
| unit_equals | number <float> The ratio of the unit of measure for sale to the unit of measure for write-off |
| critical_amount | number <float> critical residue |
| desired_amount | number <float> Desired balance |
| netto | number <float> Net weight |
| brutto | number <float> Gross weight |
| comment | string A comment |
| tax_variant | integer Taxation system |
| vat_id | integer VAT |
{- "title": "Shampoo",
- "print_title": "Shampoo",
- "article": "123",
- "barcode": "123",
- "category_id": 289632,
- "cost": 1000,
- "actual_cost": 500,
- "sale_unit_id": 216762,
- "service_unit_id": 216762,
- "unit_equals": 100,
- "critical_amount": 1,
- "desired_amount": 1,
- "netto": 200,
- "brutto": 250,
- "comment": "Test comment 123",
- "tax_variant": 0,
- "vat_id": 3
}{- "success": true,
- "data": [
- {
- "title": "Shampoo 1",
- "value": "Shampoo 1",
- "label": "Shampoo 1 (123)",
- "good_id": 123456,
- "cost": 100500,
- "unit_id": 4835,
- "unit_short_title": "PC",
- "service_unit_id": 3548,
- "service_unit_short_title": "gr",
- "actual_cost": 1050,
- "unit_actual_cost": 105,
- "unit_actual_cost_format": "105 r",
- "unit_equals": 10,
- "barcode": "123",
- "loyalty_abonement_type_id": "0",
- "loyalty_certificate_type_id": "0",
- "loyalty_allow_empty_code": true,
- "critical_amount": 0,
- "desired_amount": 0,
- "actual_amounts": [
- {
- "storage_id": 987,
- "amount": 1000000
}
], - "last_change_date": "2017-01-01T12:00:00+0400"
}
], - "meta": [ ]
}##№ Composition of the product category
Information on a product category and its descendants can be obtained by making a request specifying the location ID and product category.
Pagination is supported, specified by the page and count parameters.
Composition of a product category has the following structure:
| Field | Type | Description |
|---|---|---|
| parent_id | number | Parent element ID (0 for root elements) |
| item_id | number | Item ID (always 0) |
| category_id | number | Product category ID |
| title | string | Product category name |
| is_chain | boolean | Is the element chain-bound? true - the element is connected to the chain, false - not connected |
| is_category | boolean | Is the element a category? always true |
| is_item | boolean | Is the item a product? always false |
| children | array of objects (Product tree element) | Child elements of a product category |
| children_count | number | Total number of child products and categories (no recursion) |
| location_id required | number location ID |
| category_id required | number Product Category ID |
| page | number Page number |
| count | number The number of products displayed on the page. Maximum 1000 |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "parent_id": 0,
- "item_id": 0,
- "category_id": 123,
- "title": "Root category 1",
- "is_chain": false,
- "is_category": true,
- "is_item": false,
- "children": [
- {
- "parent_id": 123,
- "item_id": 0,
- "category_id": 456,
- "title": "Child category",
- "is_chain": false,
- "is_category": true,
- "is_item": false
}, - {
- "parent_id": 123,
- "item_id": 789,
- "category_id": 0,
- "title": "Child product",
- "is_chain": false,
- "is_category": false,
- "is_item": true
}
], - "children_count": 2
}
}| location_id required | number location ID |
| parent_category_id required | number ID of the parent product category |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 25214,
- "title": "Doughter 1",
- "parent_category_id": 24843
}, - {
- "id": 25213,
- "title": "Root 1"
}, - {
- "id": 25219,
- "title": "Root 2"
}
], - "meta": {
- "count": 94
}
}| location_id required | number location ID |
| location_id | number Product category ID (you can specify several additional parameters &ids[]={id} |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1,
- "title": "Category 1"
}, - {
- "id": 2,
- "title": "Category 2"
}
], - "meta": [ ]
}The method allows you to create a product category.
| location_id required | number Location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title required | string Product category name |
| parent_category_id | integer <int32> Parent category ID (optional, but can be 0 or null if you don't need to specify the parent category) |
| article | string vendor code |
| comment | string A comment |
{- "title": "Manicure",
- "parent_category_id": 123456,
- "article": "123article",
- "comment": "Category of products for manicure"
}{- "success": true,
- "data": {
- "id": 123456,
- "title": "Manicure",
- "parent_category_id": 123457
}, - "meta": [ ]
}| location_id required | number location ID |
| category_id required | number ID of the parent product category. Default 0 - top-level categories are displayed (optional) |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1,
- "title": "Category 1"
}, - {
- "id": 2,
- "title": "Category 2"
}
], - "meta": [ ]
}The method allows you to edit the product category
| location_id required | number Location ID |
| category_id required | number Product category ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title required | string Product category name |
| parent_category_id | integer <int32> Parent category ID (optional, but can be 0 or null if you don't need to specify the parent category) |
| article | string vendor code |
| comment | string A comment |
{- "title": "Manicure",
- "parent_category_id": 123456,
- "article": "123article",
- "comment": "Category of products for manicure"
}{- "success": true,
- "data": {
- "id": 123456,
- "title": "Manicure",
- "parent_category_id": 123457
}, - "meta": [ ]
}The method allows you to delete a product category
| location_id required | number Location ID |
| category_id required | number Product category ID |
| Accept required | string e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}Stock management including storage locations, inventory documents, stock movements, and consumables tracking.
The location inventory object has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | Inventory ID |
| title | string | Title |
| for_services | number | 1 - if used for automatic write-off of consumables |
| for_sale | number | 1 - if the default inventory for selling products |
| comment | string | Description of the inventory |
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1,
- "title": "Consumables",
- "for_service": 1,
- "for_sale": 0,
- "comment": "To account for consumables"
}, - {
- "id": 2,
- "title": "Products",
- "for_service": 0,
- "for_sale": 1,
- "comment": "To record store sales"
}, - {
- "id": 23061,
- "title": "Ors",
- "for_service": 0,
- "for_sale": 1,
- "comment": "Nz"
}
], - "meta": [ ]
}| location_id required | number location ID |
| page | number Example: page=1 page number |
| count | number Example: count=20 number of transactions per page |
| start_date | string Example: start_date='' period start date |
| end_date | string Example: end_date='' period end date |
| document_id | string Document ID |
| changed_after | string Filtering product transactions modified/created since a specific date and time |
| changed_before | string Filtering product transactions modified/created before a specific date and time |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 123456789,
- "document_id": 22256643,
- "type_id": 987654321,
- "type": "Something",
- "good": {
- "id": 111222333,
- "title": "Something"
}, - "storage": {
- "id": 333222111,
- "title": "Storage 1"
}, - "unit": {
- "id": 333222111,
- "title": "milliliter"
}, - "operation_unit_type": 1,
- "create_date": "2012-12-21T19:08:00+0400",
- "last_change_date": "2020-02-01T12:00:00+0400",
- "cost_per_unit": 1.07,
- "cost": 0,
- "discount": 10,
- "master": {
- "id": 112233445,
- "title": "James Smith"
}, - "supplier": {
- "id": 11112222,
- "title": "Best Supplier Ever"
}, - "record_id": 1,
- "service": {
- "id": 1234321,
- "title": "Service 4"
}, - "clients": {
- "id": 4321234,
- "name": "George Smith",
- "phone": 79876543210
}
}
], - "meta": [ ]
}An inventory operation is created by submitting a document along with multiple product transactions in a single API request. If a payment type is specified, the corresponding financial transactions will be generated automatically.
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| type_id required | number Document type (Sale 1, Usage / Material Consumption 2, Product Receipt / Icoming 3, Inventory Write-off / Goods Disposal 4, Internal Transfer 5) |
| comment | string A comment |
| create_date required | string <date-time> Document creation date |
| master_id | number team member ID |
| storage_id required | number Inventory ID |
| goods_transactions required | Array of objects An array of objects containing transaction parameters, similar to a request to create a product transaction |
{- "success": true,
- "data": {
- "document": {
- "id": 22255506,
- "type_id": 1,
- "type": {
- "id": 1,
- "title": "Sale of goods"
}, - "storage_id": 91271,
- "user_id": 999290,
- "company_id": 4564,
- "number": 1254,
- "comment": "test document comment",
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "storage": {
- "id": 91271,
- "title": "Secret place"
}, - "company": {
- "id": 4564,
- "title": "Business example",
- "country_id": 1,
- "city_id": 2,
- "timezone": "3",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "zip": "",
- "phones": [ ],
- "site": "www.example.com"
}, - "user": {
- "id": 999290,
- "name": "User name",
- "phone": "+1-315-555-0175"
}
}, - "transactions": [
- {
- "id": 3428012,
- "document_id": 22255506,
- "type_id": 1,
- "type": {
- "id": 1,
- "title": "Sale of goods"
}, - "company_id": 4564,
- "good_id": 232674,
- "amount": -1,
- "cost_per_unit": 100,
- "discount": 10,
- "cost": 90,
- "unit_id": 1,
- "storage_id": 91271,
- "supplier_id": 0,
- "client_id": 0,
- "master_id": 0,
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "comment": "test transaction comment",
- "deleted": false,
- "good": {
- "id": 232674,
- "title": "Edition De Luxe"
}, - "storage": {
- "id": 91271,
- "title": "Secret place"
}, - "supplier": [ ],
- "client": [ ],
- "master": [ ],
- "unit": {
- "id": 1,
- "title": "Thing"
}
}
]
}, - "meta": [ ]
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| type_id required | number Document type (sale 1, receipt 3, write-off 7) |
| comment | string A comment |
| storage_id required | number Inventory ID |
| create_date required | string <date-time> Date of the inventory transaction |
{- "type_id": 1,
- "comment": "Document comment",
- "storage_id": 36539,
- "create_date": "2025-09-21T23:00:00.000+03:00"
}{- "success": true,
- "data": {
- "id": 22255503,
- "type_id": 1,
- "type": {
- "id": 1,
- "title": "Sale of goods"
}, - "storage_id": 36539,
- "user_id": 999290,
- "company_id": 4564,
- "number": 1251,
- "comment": "Document comment",
- "create_date": "2017-04-24 20:00:00",
- "storage": {
- "id": 36539,
- "title": "Products"
}, - "company": {
- "id": 4564,
- "title": "Business example",
- "country_id": 1,
- "city_id": 2,
- "timezone": "3",
- "address": "New York, 787 Jackson Drive",
- "ccoordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "zip": "",
- "phones": [ ],
- "site": "www.example.com"
}, - "user": {
- "id": 999290,
- "name": "User name",
- "phone": "+1-315-555-0175"
}
}, - "meta": [ ]
}| location_id required | number location ID |
| document_id required | number Document ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "id": 22255503,
- "type_id": 1,
- "type": {
- "id": 1,
- "title": "Sale of goods"
}, - "storage_id": 36539,
- "user_id": 999290,
- "company_id": 4564,
- "number": 1251,
- "comment": "Document comment",
- "create_date": "2017-04-24 20:00:00",
- "storage": {
- "id": 36539,
- "title": "Products"
}, - "company": {
- "id": 4564,
- "title": "Business example",
- "country_id": 1,
- "city_id": 2,
- "timezone": "3",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "zip": "",
- "phones": [ ],
- "site": "www.example.com"
}, - "user": {
- "id": 999290,
- "name": "User name",
- "phone": "+1-315-555-0175"
}
}, - "meta": [ ]
}| location_id required | number location ID |
| document_id required | number Document ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| type_id required | number Document type (sale 1, receipt 3, write-off 7) |
| comment | string A comment |
| storage_id required | number Inventory ID |
| create_date required | string <date-time> Date of the inventory transaction |
{- "success": true,
- "data": {
- "id": 22255503,
- "type_id": 1,
- "type": {
- "id": 1,
- "title": "Sale of goods"
}, - "storage_id": 36539,
- "user_id": 999290,
- "company_id": 4564,
- "number": 1251,
- "comment": "Updated document comment",
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "storage": {
- "id": 36539,
- "title": "Products"
}, - "company": {
- "id": 4564,
- "title": "Business example",
- "country_id": 1,
- "city_id": 2,
- "timezone": "3",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "zip": "",
- "phones": [ ],
- "site": "www.example.com"
}, - "user": {
- "id": 999290,
- "name": "User name",
- "phone": "+1-315-555-0175"
}
}, - "meta": [ ]
}| location_id required | number location ID |
| document_id required | number Document ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| document_id required | number <float> Document ID |
| good_id required | number Item ID |
| amount required | number Quantity |
| cost_per_unit required | number <float> Unit cost |
| discount required | number Discount in % |
| cost required | number <float> Total transaction amount |
| operation_unit_type required | number unit type: 1 - for sale, 2 - for write-off |
| master_id | number ID of the team member who sold the product |
| client_id | number ID of the customer who bought the product |
| supplier_id | number Vendor ID |
| comment | string A comment |
{- "document_id": 22254960,
- "good_id": 232674,
- "amount": 1,
- "cost_per_unit": 100,
- "discount": 10,
- "cost": 90,
- "operation_unit_type": 1,
- "master_id": 26781,
- "client_id": 0,
- "supplier_id": 0,
- "comment": "Transaction comment"
}{- "success": true,
- "data": {
- "id": 3428010,
- "document_id": 22254960,
- "type_id": 1,
- "type": {
- "id": 1,
- "title": "Sale of goods"
}, - "company_id": 4564,
- "good_id": 232674,
- "amount": -1,
- "cost_per_unit": 100,
- "discount": 10,
- "cost": 90,
- "unit_id": 1,
- "storage_id": 36539,
- "supplier_id": 0,
- "client_id": 0,
- "master_id": 26781,
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "last_change_date": "2020-02-01T12:00:00+0400",
- "comment": "Transaction comment",
- "deleted": false,
- "good": {
- "id": 232674,
- "title": "Edition De Luxe"
}, - "storage": {
- "id": 36539,
- "title": "Products"
}, - "supplier": [ ],
- "client": [ ],
- "master": {
- "id": 26781,
- "name": "Angelina Jolie"
}, - "unit": {
- "id": 1,
- "title": "Thing"
}
}, - "meta": [ ]
}| location_id required | number location ID |
| transaction_id required | number transaction ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "id": 3428010,
- "document_id": 22254960,
- "type_id": 1,
- "type": {
- "id": 1,
- "title": "Sale of goods"
}, - "company_id": 4564,
- "good_id": 232674,
- "amount": -1,
- "cost_per_unit": 100,
- "discount": 10,
- "cost": 90,
- "unit_id": 1,
- "storage_id": 36539,
- "supplier_id": 0,
- "client_id": 0,
- "master_id": 26781,
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "comment": "Transaction comment",
- "deleted": false,
- "good": {
- "id": 232674,
- "title": "Edition De Luxe",
- "unit": "PC.",
- "value": "delete yy",
- "label": "delete yy",
- "article": "",
- "category": "goose category",
- "category_id": 303603,
- "salon_id": 91372,
- "good_id": 15086312,
- "cost": 500,
- "unit_id": 216760,
- "unit_short_title": "PC",
- "service_unit_id": 216760,
- "service_unit_short_title": "PC",
- "actual_cost": 0,
- "unit_actual_cost": 0,
- "unit_actual_cost_format": "0 USD",
- "unit_equals": 1,
- "barcode": "",
- "loyalty_abonement_type_id": "0",
- "loyalty_certificate_type_id": "0",
- "loyalty_allow_empty_code": true,
- "actual_amounts": [ ],
- "last_change_date": "2021-03-05T18:21:34+0400"
}, - "storage": {
- "id": 36539,
- "title": "Products"
}, - "sale_unit": null,
- "service_unit": null,
- "supplier": [ ],
- "client": [ ],
- "master": {
- "id": 26781,
- "name": "Angelina Jolie"
}, - "unit": {
- "id": 1,
- "title": "Thing",
- "short_title": "PC."
}
}, - "meta": [ ]
}| transaction_id required | number transaction ID |
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| document_id required | number <float> Document ID |
| good_id required | number Item ID |
| amount required | number Quantity |
| cost_per_unit required | number <float> Unit cost |
| discount required | number Discount in % |
| cost required | number <float> Total transaction amount |
| operation_unit_type required | number unit type: 1 - for sale, 2 - for write-off |
| master_id | number ID of the team member who sold the product |
| client_id | number ID of the customer who bought the product |
| supplier_id | number Vendor ID |
| comment | string A comment |
{- "success": true,
- "data": {
- "id": 3428010,
- "document_id": 22254960,
- "type_id": 1,
- "type": {
- "id": 1,
- "title": "Sale of goods"
}, - "company_id": 4564,
- "good_id": 232674,
- "amount": -1,
- "cost_per_unit": 100,
- "discount": 10,
- "cost": 90,
- "unit_id": 1,
- "operation_unit_type": 1,
- "storage_id": 36539,
- "supplier_id": 0,
- "client_id": 0,
- "master_id": 26781,
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "last_change_date": "2020-02-01T12:00:00+0400",
- "comment": "Updated transaction comment",
- "deleted": false,
- "good": {
- "id": 232674,
- "title": "Edition De Luxe"
}, - "storage": {
- "id": 36539,
- "title": "Products"
}, - "supplier": [ ],
- "client": [ ],
- "master": {
- "id": 26781,
- "name": "Angelina Jolie"
}, - "unit": {
- "id": 1,
- "title": "Thing"
}
}, - "meta": [ ]
}| location_id required | number location ID |
| transaction_id required | number transaction ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| document_id required | number Document ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 3728232,
- "document_id": 22256643,
- "type_id": 1,
- "company_id": 4564,
- "good_id": 587018,
- "amount": -10,
- "cost_per_unit": 100,
- "discount": 0,
- "cost": 1000,
- "unit_id": 88272,
- "operation_unit_type": 1,
- "storage_id": 36539,
- "supplier_id": 0,
- "record_id": 0,
- "client_id": 0,
- "master_id": 49754,
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "comment": "",
- "service_id": 0,
- "user_id": 3,
- "deleted": false,
- "pkg_amount": 0
}, - {
- "id": 3728233,
- "document_id": 22256643,
- "type_id": 1,
- "company_id": 4564,
- "good_id": 232674,
- "amount": -10,
- "cost_per_unit": 127.5,
- "discount": 0,
- "cost": 1275,
- "unit_id": 1,
- "operation_unit_type": 2,
- "storage_id": 36539,
- "supplier_id": 0,
- "record_id": 0,
- "client_id": 0,
- "master_id": 49754,
- "create_date": "2025-09-21T23:00:00.000+03:00",
- "comment": "",
- "service_id": 0,
- "user_id": 3,
- "deleted": false,
- "pkg_amount": 0
}
], - "meta": {
- "count": 2
}
}| location_id required | number Location ID |
| search | string Example: search='test' parameter for searching by the name of those lists |
| page | number Example: page=1 page number |
| count | number Example: count=20 number of those lists per page |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1,
- "title": "Tech map 1",
- "technological_card_items": [
- {
- "id": 3,
- "technological_card_id": 1,
- "storage_id": 4234,
- "good_id": 34234,
- "amount": 12,
- "unit": "l",
- "price": 0.0742,
- "title": "Consumable 3"
}
]
}, - {
- "id": 2,
- "title": "Tech map 2",
- "technological_card_items": [
- {
- "id": 4,
- "technological_card_id": 2,
- "storage_id": 4234,
- "good_id": 34235,
- "amount": 10,
- "unit": "l",
- "price": 0.02412,
- "title": "Consumable 4"
}
]
}
], - "meta": [ ]
}| location_id required | number Location ID |
| staff_id required | number team member ID |
| service_id required | number Service ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "id": 1,
- "title": "Tech map 1",
- "technological_card_items": [
- {
- "id": 3,
- "technological_card_id": 1,
- "storage_id": 4234,
- "good_id": 34234,
- "amount": 12,
- "unit": "l",
- "price": 0.0742,
- "title": "Consumable 3"
}
]
}, - "meta": [ ]
}| location_id required | number Location ID |
| record_id required | number Appointment ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "service_id": 21558,
- "record_id": 1233243,
- "technological_cards": [
- {
- "id": 36069,
- "title": "Tech map",
- "technological_card_items": [
- {
- "id": 208568,
- "technological_card_id": 36069,
- "storage_id": 91303,
- "good_id": 6858783,
- "amount": 10,
- "price": 1000,
- "good": {
- "id": 6858783,
- "title": "Product",
- "unit": "G"
}
}
]
}
], - "consumables": [
- {
- "goods_transaction_id": 2180771,
- "record_id": 121793129,
- "service_id": 695486,
- "storage_id": 91303,
- "good_id": 6858783,
- "price": 1000,
- "amount": 10,
- "good": {
- "id": 6858783,
- "title": "Product",
- "unit": "G"
}
}
]
}
], - "meta": [ ]
}| location_id required | number Location ID |
| record_id required | number Appointment ID |
| service_id required | number Service ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
Array of objects List of consumables |
{- "consumables": [
- {
- "goods_transaction_id": 0,
- "record_id": 0,
- "service_id": 0,
- "storage_id": 0,
- "good_id": 0,
- "price": 0,
- "amount": 0
}
]
}{- "success": true,
- "data": [
- {
- "service_id": 21558,
- "record_id": 1233243,
- "technological_cards": [
- {
- "id": 36069,
- "title": "Tech map",
- "technological_card_items": [
- {
- "id": 208568,
- "technological_card_id": 36069,
- "storage_id": 91303,
- "good_id": 6858783,
- "amount": 10,
- "price": 1000,
- "good": {
- "id": 6858783,
- "title": "Product",
- "unit": "G"
}
}
]
}
], - "consumables": [
- {
- "goods_transaction_id": 2180771,
- "record_id": 121793129,
- "service_id": 695486,
- "storage_id": 91303,
- "good_id": 6858783,
- "price": 1000,
- "amount": 10,
- "good": {
- "id": 6858783,
- "title": "Product",
- "unit": "G"
}
}
]
}
], - "meta": [ ]
}| location_id required | number Location ID |
| record_id required | number Appointment ID |
| service_id required | number Service ID |
| delete_consumables | number Whether to remove consumables along with deleting bill of materials. Default 0 |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| delete_consumables | number Whether to remove consumables along with deleting bill of materials. Default 0 |
{- "success": true,
- "data": [
- {
- "service_id": 7224099,
- "record_id": 310013764,
- "technological_cards": [ ],
- "consumables": [ ]
}
], - "meta": {
- "count": 1
}
}| document_id required | integer Sales Document ID |
| location_id required | number Location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "state": {
- "items": [
- {
- "id": 2181520,
- "type": "good",
- "title": "item 12",
- "amount": 1,
- "default_cost_per_unit": 1300,
- "default_cost_total": 1300,
- "client_discount_percent": 10,
- "cost_to_pay_total": 1170
}, - {
- "id": 22017,
- "type": "service",
- "document_id": 8200391,
- "title": "Manicure",
- "amount": 1,
- "default_cost_per_unit": 500,
- "default_cost_total": 500,
- "client_discount_percent": 10,
- "cost_to_pay_total": 450
}
], - "loyalty_transactions": [
- {
- "id": 25042,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "amount": 9.9,
- "type_id": 11,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "deposit_transaction_id": 775,
- "chain": {
- "id": 500,
- "title": "YC BE Chain"
}, - "type": {
- "id": 11,
- "title": "Withdrawal from personal account"
}, - "deposit": {
- "id": 220,
- "balance": 990.1,
- "type": {
- "id": 5,
- "title": "deposit 1"
}
}
}, - {
- "id": 25043,
- "document_id": 8201102,
- "amount": 0.1,
- "type_id": 2,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "loyalty_card_id": 185395,
- "loyalty_program_id": 264,
- "chain": {
- "id": 231,
- "title": "Example chain."
}, - "type": {
- "id": 2,
- "title": "Loyalty programs"
}, - "loyalty_card": {
- "id": 185395,
- "type_id": 265,
- "number": 23100185395,
- "balance": 50.15,
- "type": {
- "id": 265,
- "type": "Loyalty program template test"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}, - "loyalty_program": {
- "id": 264,
- "title": "CASHBACK BigBro",
- "type_id": 7,
- "is_value_percent": true,
- "type": {
- "id": 7,
- "title": "Cumulative cashback (paid)"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}, - {
- "id": 25050,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "amount": 100,
- "type_id": 8,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "loyalty_certificate_id": 339,
- "chain": {
- "id": 79,
- "title": "Bank 24"
}, - "type": {
- "id": 8,
- "title": "Write-off from the certificate"
}, - "loyalty_certificate": {
- "id": 339,
- "balance": 0,
- "applicable_balance": 0,
- "type": {
- "id": 20,
- "title": "Test Certificate",
- "is_code_required": true
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}
], - "payment_transactions": [
- {
- "id": 6033940,
- "document_id": 8200904,
- "sale_item_id": 2181442,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 90218,
- "amount": 32,
- "account": {
- "id": 90218,
- "title": "Cash by default",
- "is_cash": true,
- "is_default": true
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6033941,
- "document_id": 8200904,
- "sale_item_id": 2181442,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 90218,
- "amount": 27,
- "account": {
- "id": 90218,
- "title": "cash desk",
- "is_cash": true,
- "is_default": false
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6034121,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 23182,
- "amount": 43,
- "account": {
- "id": 23182,
- "title": "Cards - acquiring by default",
- "is_cash": false,
- "is_default": true
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6034122,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 23182,
- "amount": 12,
- "account": {
- "id": 23182,
- "title": "Cards - acquiring",
- "is_cash": false,
- "is_default": false
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}
]
}, - "kkm_state": {
- "last_operation_type": 1,
- "transactions": [
- {
- "id": 2424,
- "document_id": 8200904,
- "print_date": "2025-09-21T23:00:00.000+03:00",
- "printed_count": 0,
- "sum": 0,
- "type": {
- "id": 0,
- "title": "Sale operation"
}, - "status": {
- "id": 1,
- "title": "Successfully"
}, - "document": {
- "id": 7215,
- "type": 1,
- "type_title": "Sale of goods"
}, - "cashier": {
- "id": 746310,
- "name": "Jack Smith"
}
}
]
}, - "payment_methods": [
- {
- "slug": "account",
- "is_applicable": false,
- "applicable_amount": 1170,
- "applicable_count": 0,
- "applicable_value": 0,
- "account_id": 36785,
- "account": {
- "id": 36785,
- "title": "Cash desk - non-cash",
- "is_cash": false
}
}, - {
- "slug": "loyalty_card",
- "is_applicable": true,
- "applicable_amount": 51.65,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_card_id": 19283,
- "loyalty_card": {
- "id": 19283,
- "type_id": 155,
- "number": 31200019283,
- "balance": 51.65,
- "type": {
- "id": 155,
- "type": "discount card"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}
}, - {
- "slug": "loyalty_program",
- "is_applicable": true,
- "applicable_amount": 234,
- "applicable_count": 0,
- "applicable_value": 20,
- "loyalty_card_id": 19283,
- "loyalty_program_id": 183,
- "loyalty_card": {
- "id": 19283,
- "type_id": 155,
- "number": 31200019283,
- "balance": 51.65,
- "type": {
- "id": 155,
- "type": "discount card"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}, - "loyalty_program": {
- "id": 183,
- "title": "permanent discount",
- "type_id": 1,
- "is_value_percent": true,
- "type": {
- "id": 1,
- "title": "Fixed discount"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}
}, - {
- "slug": "loyalty_abonement",
- "is_applicable": false,
- "applicable_amount": 0,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_abonement_id": 27,
- "loyalty_abonement": {
- "id": 27,
- "is_united_balance": false,
- "united_balance": 0,
- "type": {
- "id": 7,
- "title": "subscription to 5000 QA net",
- "is_code_required": true
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}, - "balance_container": {
- "links": [
- {
- "count": 5,
- "category": {
- "id": 229680,
- "category_id": 1,
- "title": "Manicure"
}
}, - {
- "count": 5,
- "category": {
- "id": 429813,
- "category_id": 429812,
- "title": "1 Lesson"
}
}
]
}
}
}, - {
- "slug": "loyalty_certificate",
- "is_applicable": true,
- "applicable_amount": 1170,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_certificate_id": 338,
- "loyalty_certificate": {
- "id": 338,
- "balance": 10000,
- "applicable_balance": 10000,
- "type": {
- "id": 130,
- "title": "test",
- "is_code_required": true
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}, - {
- "slug": "referral_loyalty_program",
- "is_applicable": false,
- "applicable_amount": 0,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_program_id": 424,
- "loyalty_program": {
- "id": 424,
- "title": "Fixed discount",
- "type_id": 1,
- "is_value_percent": true,
- "type": {
- "id": 1,
- "title": "Fixed discount"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}, - {
- "slug": "deposit",
- "is_applicable": true,
- "applicable_amount": 9.9,
- "applicable_count": 0,
- "applicable_value": 0,
- "deposit_id": 220,
- "deposit": {
- "id": 220,
- "balance": 1000,
- "type": {
- "id": 5,
- "title": "deposit 1"
}
}
}
]
}, - "meta": [ ]
}As a response, information about the Sale operation is returned
| document_id required | number Document ID |
| location_id required | number Location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
object Object containing the payment method |
{- "payment": {
- "method": {
- "slug": "account",
- "account_id": 90218
}, - "amount": 123
}
}{- "success": true,
- "data": {
- "state": {
- "items": [
- {
- "id": 2181520,
- "type": "good",
- "title": "item 12",
- "amount": 1,
- "default_cost_per_unit": 1300,
- "default_cost_total": 1300,
- "client_discount_percent": 10,
- "cost_to_pay_total": 1170
}, - {
- "id": 22017,
- "type": "service",
- "document_id": 8200391,
- "title": "Manicure",
- "amount": 1,
- "default_cost_per_unit": 500,
- "default_cost_total": 500,
- "client_discount_percent": 10,
- "cost_to_pay_total": 450
}
], - "loyalty_transactions": [
- {
- "id": 25042,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "amount": 9.9,
- "type_id": 11,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "deposit_transaction_id": 775,
- "chain": {
- "id": 500,
- "title": "YC BE chain"
}, - "type": {
- "id": 11,
- "title": "Withdrawal from personal account"
}, - "deposit": {
- "id": 220,
- "balance": 990.1,
- "type": {
- "id": 5,
- "title": "deposit 1"
}
}
}, - {
- "id": 25043,
- "document_id": 8201102,
- "amount": 0.1,
- "type_id": 2,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "loyalty_card_id": 185395,
- "loyalty_program_id": 264,
- "chain": {
- "id": 231,
- "title": "Example chain."
}, - "type": {
- "id": 2,
- "title": "Loyalty programs"
}, - "loyalty_card": {
- "id": 185395,
- "type_id": 265,
- "number": 23100185395,
- "balance": 50.15,
- "type": {
- "id": 265,
- "type": "Loyalty program template test"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}, - "loyalty_program": {
- "id": 264,
- "title": "CASHBACK BigBro",
- "type_id": 7,
- "is_value_percent": true,
- "type": {
- "id": 7,
- "title": "Cumulative cashback (paid)"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}, - {
- "id": 25050,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "amount": 100,
- "type_id": 8,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "loyalty_certificate_id": 339,
- "chain": {
- "id": 79,
- "title": "Bank 24"
}, - "type": {
- "id": 8,
- "title": "Write-off from the certificate"
}, - "loyalty_certificate": {
- "id": 339,
- "balance": 0,
- "applicable_balance": 0,
- "type": {
- "id": 20,
- "title": "Test Certificate",
- "is_code_required": true
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}
], - "payment_transactions": [
- {
- "id": 6033940,
- "document_id": 8200904,
- "sale_item_id": 2181442,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 90218,
- "amount": 32,
- "account": {
- "id": 90218,
- "title": "Cash by default",
- "is_cash": true,
- "is_default": true
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6033941,
- "document_id": 8200904,
- "sale_item_id": 2181442,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 90218,
- "amount": 27,
- "account": {
- "id": 90218,
- "title": "cash desk",
- "is_cash": true,
- "is_default": false
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6034121,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 23182,
- "amount": 43,
- "account": {
- "id": 23182,
- "title": "Cards - acquiring by default",
- "is_cash": false,
- "is_default": true
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6034122,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 23182,
- "amount": 12,
- "account": {
- "id": 23182,
- "title": "Cards - acquiring",
- "is_cash": false,
- "is_default": false
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}
]
}, - "kkm_state": {
- "last_operation_type": 1,
- "transactions": [
- {
- "id": 2424,
- "document_id": 8200904,
- "print_date": "2025-09-21T23:00:00.000+03:00",
- "printed_count": 0,
- "sum": 0,
- "type": {
- "id": 0,
- "title": "Sale operation"
}, - "status": {
- "id": 1,
- "title": "Successfully"
}, - "document": {
- "id": 7215,
- "type": 1,
- "type_title": "Sale of goods"
}, - "cashier": {
- "id": 746310,
- "name": "Jack Smith"
}
}
]
}, - "payment_methods": [
- {
- "slug": "account",
- "is_applicable": false,
- "applicable_amount": 1170,
- "applicable_count": 0,
- "applicable_value": 0,
- "account_id": 36785,
- "account": {
- "id": 36785,
- "title": "Cash desk - non-cash",
- "is_cash": false
}
}, - {
- "slug": "loyalty_card",
- "is_applicable": true,
- "applicable_amount": 51.65,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_card_id": 19283,
- "loyalty_card": {
- "id": 19283,
- "type_id": 155,
- "number": 31200019283,
- "balance": 51.65,
- "type": {
- "id": 155,
- "type": "discount card"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}
}, - {
- "slug": "loyalty_program",
- "is_applicable": true,
- "applicable_amount": 234,
- "applicable_count": 0,
- "applicable_value": 20,
- "loyalty_card_id": 19283,
- "loyalty_program_id": 183,
- "loyalty_card": {
- "id": 19283,
- "type_id": 155,
- "number": 31200019283,
- "balance": 51.65,
- "type": {
- "id": 155,
- "type": "discount card"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}, - "loyalty_program": {
- "id": 183,
- "title": "permanent discount",
- "type_id": 1,
- "is_value_percent": true,
- "type": {
- "id": 1,
- "title": "Fixed discount"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}
}, - {
- "slug": "loyalty_abonement",
- "is_applicable": false,
- "applicable_amount": 0,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_abonement_id": 27,
- "loyalty_abonement": {
- "id": 27,
- "is_united_balance": false,
- "united_balance": 0,
- "type": {
- "id": 7,
- "title": "subscription to 5000 QA net",
- "is_code_required": true
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}, - "balance_container": {
- "links": [
- {
- "count": 5,
- "category": {
- "id": 229680,
- "category_id": 1,
- "title": "Manicure"
}
}, - {
- "count": 5,
- "category": {
- "id": 429813,
- "category_id": 429812,
- "title": "1 Lesson"
}
}
]
}
}
}, - {
- "slug": "loyalty_certificate",
- "is_applicable": true,
- "applicable_amount": 1170,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_certificate_id": 338,
- "loyalty_certificate": {
- "id": 338,
- "balance": 10000,
- "applicable_balance": 10000,
- "type": {
- "id": 130,
- "title": "test",
- "is_code_required": true
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}, - {
- "slug": "referral_loyalty_program",
- "is_applicable": false,
- "applicable_amount": 0,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_program_id": 424,
- "loyalty_program": {
- "id": 424,
- "title": "Fixed discount",
- "type_id": 1,
- "is_value_percent": true,
- "type": {
- "id": 1,
- "title": "Fixed discount"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}, - {
- "slug": "deposit",
- "is_applicable": true,
- "applicable_amount": 9.9,
- "applicable_count": 0,
- "applicable_value": 0,
- "deposit_id": 220,
- "deposit": {
- "id": 220,
- "balance": 1000,
- "type": {
- "id": 5,
- "title": "deposit 1"
}
}
}
]
}, - "meta": [ ]
}As a response, information about the Sale operation is returned
| document_id required | integer Sales Document ID |
| payment_transaction_id required | integer transaction ID |
| location_id required | number Location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "state": {
- "items": [
- {
- "id": 2181520,
- "type": "good",
- "title": "item 12",
- "amount": 1,
- "default_cost_per_unit": 1300,
- "default_cost_total": 1300,
- "client_discount_percent": 10,
- "cost_to_pay_total": 1170
}, - {
- "id": 22017,
- "type": "service",
- "document_id": 8200391,
- "title": "Manicure",
- "amount": 1,
- "default_cost_per_unit": 500,
- "default_cost_total": 500,
- "client_discount_percent": 10,
- "cost_to_pay_total": 450
}
], - "loyalty_transactions": [
- {
- "id": 25042,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "amount": 9.9,
- "type_id": 11,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "deposit_transaction_id": 775,
- "chain": {
- "id": 500,
- "title": "YC BE chain"
}, - "type": {
- "id": 11,
- "title": "Withdrawal from personal account"
}, - "deposit": {
- "id": 220,
- "balance": 990.1,
- "type": {
- "id": 5,
- "title": "deposit 1"
}
}
}, - {
- "id": 25043,
- "document_id": 8201102,
- "amount": 0.1,
- "type_id": 2,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "loyalty_card_id": 185395,
- "loyalty_program_id": 264,
- "chain": {
- "id": 231,
- "title": "Example chain."
}, - "type": {
- "id": 2,
- "title": "Loyalty programs"
}, - "loyalty_card": {
- "id": 185395,
- "type_id": 265,
- "number": 23100185395,
- "balance": 50.15,
- "type": {
- "id": 265,
- "type": "Loyalty program template test"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}, - "loyalty_program": {
- "id": 264,
- "title": "CASHBACK BigBro",
- "type_id": 7,
- "is_value_percent": true,
- "type": {
- "id": 7,
- "title": "Cumulative cashback (paid)"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}, - {
- "id": 25050,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "amount": 100,
- "type_id": 8,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "loyalty_certificate_id": 339,
- "chain": {
- "id": 79,
- "title": "Bank 24"
}, - "type": {
- "id": 8,
- "title": "Write-off from the certificate"
}, - "loyalty_certificate": {
- "id": 339,
- "balance": 0,
- "applicable_balance": 0,
- "type": {
- "id": 20,
- "title": "Test Certificate",
- "is_code_required": true
}
}
}
], - "payment_transactions": [
- {
- "id": 6033940,
- "document_id": 8200904,
- "sale_item_id": 2181442,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 90218,
- "amount": 32,
- "account": {
- "id": 90218,
- "title": "Cash by default",
- "is_cash": true,
- "is_default": true
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6033941,
- "document_id": 8200904,
- "sale_item_id": 2181442,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 90218,
- "amount": 27,
- "account": {
- "id": 90218,
- "title": "cash desk",
- "is_cash": true,
- "is_default": false
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6034121,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 23182,
- "amount": 43,
- "account": {
- "id": 23182,
- "title": "Cards - acquiring by default",
- "is_cash": false,
- "is_default": true
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6034122,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 23182,
- "amount": 12,
- "account": {
- "id": 23182,
- "title": "Cards - acquiring",
- "is_cash": false,
- "is_default": false
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}
]
}, - "kkm_state": {
- "last_operation_type": 1,
- "transactions": [
- {
- "id": 2424,
- "document_id": 8200904,
- "print_date": "2025-09-21T23:00:00.000+03:00",
- "printed_count": 0,
- "sum": 0,
- "type": {
- "id": 0,
- "title": "Sale operation"
}, - "status": {
- "id": 1,
- "title": "Successfully"
}, - "document": {
- "id": 7215,
- "type": 1,
- "type_title": "Sale of goods"
}, - "cashier": {
- "id": 746310,
- "name": "Jack Smith"
}
}
]
}, - "payment_methods": [
- {
- "slug": "account",
- "is_applicable": false,
- "applicable_amount": 1170,
- "applicable_count": 0,
- "applicable_value": 0,
- "account_id": 36785,
- "account": {
- "id": 36785,
- "title": "Cash desk - non-cash",
- "is_cash": false
}
}, - {
- "slug": "loyalty_card",
- "is_applicable": true,
- "applicable_amount": 51.65,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_card_id": 19283,
- "loyalty_card": {
- "id": 19283,
- "type_id": 155,
- "number": 31200019283,
- "balance": 51.65,
- "type": {
- "id": 155,
- "type": "discount card"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}
}, - {
- "slug": "loyalty_program",
- "is_applicable": true,
- "applicable_amount": 234,
- "applicable_count": 0,
- "applicable_value": 20,
- "loyalty_card_id": 19283,
- "loyalty_program_id": 183,
- "loyalty_card": {
- "id": 19283,
- "type_id": 155,
- "number": 31200019283,
- "balance": 51.65,
- "type": {
- "id": 155,
- "type": "discount card"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}, - "loyalty_program": {
- "id": 183,
- "title": "permanent discount",
- "type_id": 1,
- "is_value_percent": true,
- "type": {
- "id": 1,
- "title": "Fixed discount"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}
}, - {
- "slug": "loyalty_abonement",
- "is_applicable": false,
- "applicable_amount": 0,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_abonement_id": 27,
- "loyalty_abonement": {
- "id": 27,
- "is_united_balance": false,
- "united_balance": 0,
- "type": {
- "id": 7,
- "title": "subscription to 5000 QA net",
- "is_code_required": true
}, - "balance_container": {
- "links": [
- {
- "count": 5,
- "category": {
- "id": 229680,
- "category_id": 1,
- "title": "Manicure"
}
}, - {
- "count": 5,
- "category": {
- "id": 429813,
- "category_id": 429812,
- "title": "1 Lesson"
}
}
]
}
}
}, - {
- "slug": "loyalty_certificate",
- "is_applicable": true,
- "applicable_amount": 1170,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_certificate_id": 338,
- "loyalty_certificate": {
- "id": 338,
- "balance": 10000,
- "applicable_balance": 10000,
- "type": {
- "id": 130,
- "title": "test",
- "is_code_required": true
}
}
}, - {
- "slug": "referral_loyalty_program",
- "is_applicable": false,
- "applicable_amount": 0,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_program_id": 424,
- "loyalty_program": {
- "id": 424,
- "title": "Fixed discount",
- "type_id": 1,
- "is_value_percent": true,
- "type": {
- "id": 1,
- "title": "Fixed discount"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}, - {
- "slug": "deposit",
- "is_applicable": true,
- "applicable_amount": 9.9,
- "applicable_count": 0,
- "applicable_value": 0,
- "deposit_id": 220,
- "deposit": {
- "id": 220,
- "balance": 1000,
- "type": {
- "id": 5,
- "title": "deposit 1"
}
}
}
]
}, - "meta": [ ]
}As a response, information about the Sale operation is returned
| document_id required | integer Sales Document ID |
| payment_transaction_id required | integer transaction ID |
| location_id required | number Location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "state": {
- "items": [
- {
- "id": 2181520,
- "type": "good",
- "title": "item 12",
- "amount": 1,
- "default_cost_per_unit": 1300,
- "default_cost_total": 1300,
- "client_discount_percent": 10,
- "cost_to_pay_total": 1170
}, - {
- "id": 22017,
- "type": "service",
- "document_id": 8200391,
- "title": "Manicure",
- "amount": 1,
- "default_cost_per_unit": 500,
- "default_cost_total": 500,
- "client_discount_percent": 10,
- "cost_to_pay_total": 450
}
], - "loyalty_transactions": [
- {
- "id": 25042,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "amount": 9.9,
- "type_id": 11,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "deposit_transaction_id": 775,
- "chain": {
- "id": 500,
- "title": "YC BE Chain"
}, - "type": {
- "id": 11,
- "title": "Withdrawal from personal account"
}, - "deposit": {
- "id": 220,
- "balance": 990.1,
- "type": {
- "id": 5,
- "title": "deposit 1"
}
}
}, - {
- "id": 25043,
- "document_id": 8201102,
- "amount": 0.1,
- "type_id": 2,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "loyalty_card_id": 185395,
- "loyalty_program_id": 264,
- "chain": {
- "id": 231,
- "title": "Example chain."
}, - "type": {
- "id": 2,
- "title": "Loyalty programs"
}, - "loyalty_card": {
- "id": 185395,
- "type_id": 265,
- "number": 23100185395,
- "balance": 50.15,
- "type": {
- "id": 265,
- "type": "Loyalty program template test"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}, - "loyalty_program": {
- "id": 264,
- "title": "CASHBACK BigBro",
- "type_id": 7,
- "is_value_percent": true,
- "type": {
- "id": 7,
- "title": "Cumulative cashback (paid)"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}, - {
- "id": 25050,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "amount": 100,
- "type_id": 8,
- "created_at": "2025-09-21T23:00:00.000+03:00",
- "loyalty_certificate_id": 339,
- "chain": {
- "id": 79,
- "title": "Bank 24"
}, - "type": {
- "id": 8,
- "title": "Write-off from the certificate"
}, - "loyalty_certificate": {
- "id": 339,
- "balance": 0,
- "applicable_balance": 0,
- "type": {
- "id": 20,
- "title": "Test Certificate",
- "is_code_required": true
}
}
}
], - "payment_transactions": [
- {
- "id": 6033940,
- "document_id": 8200904,
- "sale_item_id": 2181442,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 90218,
- "amount": 32,
- "account": {
- "id": 90218,
- "title": "Cash by default",
- "is_cash": true,
- "is_default": true
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6033941,
- "document_id": 8200904,
- "sale_item_id": 2181442,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 90218,
- "amount": 27,
- "account": {
- "id": 90218,
- "title": "cash desk",
- "is_cash": true,
- "is_default": false
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6034121,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 23182,
- "amount": 43,
- "account": {
- "id": 23182,
- "title": "Cards - acquiring by default",
- "is_cash": false,
- "is_default": true
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}, - {
- "id": 6034122,
- "document_id": 8201102,
- "sale_item_id": 2181521,
- "sale_item_type": "good",
- "expense_id": 7,
- "account_id": 23182,
- "amount": 12,
- "account": {
- "id": 23182,
- "title": "Cards - acquiring",
- "is_cash": false,
- "is_default": false
}, - "expense": {
- "id": 7,
- "title": "Sale of goods"
}
}
]
}, - "kkm_state": {
- "last_operation_type": 1,
- "transactions": [
- {
- "id": 2424,
- "document_id": 8200904,
- "print_date": "2025-09-21T23:00:00.000+03:00",
- "printed_count": 0,
- "sum": 0,
- "type": {
- "id": 0,
- "title": "Sale operation"
}, - "status": {
- "id": 1,
- "title": "Successfully"
}, - "document": {
- "id": 7215,
- "type": 1,
- "type_title": "Sale of goods"
}, - "cashier": {
- "id": 746310,
- "name": "Jack Smith"
}
}
]
}, - "payment_methods": [
- {
- "slug": "account",
- "is_applicable": false,
- "applicable_amount": 1170,
- "applicable_count": 0,
- "applicable_value": 0,
- "account_id": 36785,
- "account": {
- "id": 36785,
- "title": "Cash desk - non-cash",
- "is_cash": false
}
}, - {
- "slug": "loyalty_card",
- "is_applicable": true,
- "applicable_amount": 51.65,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_card_id": 19283,
- "loyalty_card": {
- "id": 19283,
- "type_id": 155,
- "number": 31200019283,
- "balance": 51.65,
- "type": {
- "id": 155,
- "type": "discount card"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}
}, - {
- "slug": "loyalty_program",
- "is_applicable": true,
- "applicable_amount": 234,
- "applicable_count": 0,
- "applicable_value": 20,
- "loyalty_card_id": 19283,
- "loyalty_program_id": 183,
- "loyalty_card": {
- "id": 19283,
- "type_id": 155,
- "number": 31200019283,
- "balance": 51.65,
- "type": {
- "id": 155,
- "type": "discount card"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}, - "loyalty_program": {
- "id": 183,
- "title": "permanent discount",
- "type_id": 1,
- "is_value_percent": true,
- "type": {
- "id": 1,
- "title": "Fixed discount"
}, - "chain": {
- "id": 312,
- "title": "Trinity group"
}
}
}, - {
- "slug": "loyalty_abonement",
- "is_applicable": false,
- "applicable_amount": 0,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_abonement_id": 27,
- "loyalty_abonement": {
- "id": 27,
- "is_united_balance": false,
- "united_balance": 0,
- "type": {
- "id": 7,
- "title": "subscription to 5000 QA net",
- "is_code_required": true
}, - "balance_container": {
- "links": [
- {
- "count": 5,
- "category": {
- "id": 229680,
- "category_id": 1,
- "title": "Manicure"
}
}, - {
- "count": 5,
- "category": {
- "id": 429813,
- "category_id": 429812,
- "title": "1 Lesson"
}
}
]
}
}
}, - {
- "slug": "loyalty_certificate",
- "is_applicable": true,
- "applicable_amount": 1170,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_certificate_id": 338,
- "loyalty_certificate": {
- "id": 338,
- "balance": 10000,
- "applicable_balance": 10000,
- "type": {
- "id": 130,
- "title": "test",
- "is_code_required": true
}
}
}, - {
- "slug": "referral_loyalty_program",
- "is_applicable": false,
- "applicable_amount": 0,
- "applicable_count": 0,
- "applicable_value": 0,
- "loyalty_program_id": 424,
- "loyalty_program": {
- "id": 424,
- "title": "Fixed discount",
- "type_id": 1,
- "is_value_percent": true,
- "type": {
- "id": 1,
- "title": "Fixed discount"
}, - "chain": {
- "id": 231,
- "title": "Example chain."
}
}
}, - {
- "slug": "deposit",
- "is_applicable": true,
- "applicable_amount": 9.9,
- "applicable_count": 0,
- "applicable_value": 0,
- "deposit_id": 220,
- "deposit": {
- "id": 220,
- "balance": 1000,
- "type": {
- "id": 5,
- "title": "deposit 1"
}
}
}
]
}, - "meta": [ ]
}Financial operations including cash registers, payment transactions, and all monetary movements.
The location checkout object has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | Checkout ID |
| title | string | Title |
| type | number | 1 - for non-cash payments, 0 for cash |
| comment | string | Description to the checkout |
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 13881,
- "title": "Main cash desk",
- "type": 0,
- "comment": "Standing at the reception"
}, - {
- "id": 13882,
- "title": "Payment account",
- "type": 1,
- "comment": "For non-cash payments"
}, - {
- "id": 21961,
- "title": "Advances",
- "type": 0,
- "comment": ""
}
], - "meta": [ ]
}page: Page number
count: Number of customers per page
account_id: Checkout ID
supplier_id: Supplier ID
client_id: Client ID
user_id: user ID
master_id: team member ID
type: transaction type
real_money: Indicates whether this is a real-money (fiat) transaction
deleted: whether the transaction was deleted
start_date: start date of the period
end_date: end date of the period
balance_is: 0 - any balance, 1 - positive, 2 - negative
document_id: document ID
| location_id required | number location ID |
| page | number Example: page=1 Page number |
| count | number Example: count=50 Number of customers per page |
| account_id | number Checkout ID |
| supplier_id | number Supplier ID |
| client_id | number Client ID |
| user_id | number User ID |
| master_id | number team member ID |
| type | number transaction type |
| real_money | number Indicates whether this is a real-money (fiat) transaction |
| deleted | number whether the transaction was deleted |
| start_date | number Example: start_date=20251201 period start date |
| end_date | number Example: end_date=20251231 period end date |
| balance_is | number Example: balance_is=1 0 - any balance, 1 - positive, 2 - negative |
| document_id | number document ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 4815162342,
- "document_id": 22256641,
- "expense": {
- "id": 5,
- "title": "Provision of services"
}, - "date": "2016-04-13T15:34:31+0400",
- "amount": 1000,
- "comment": "Comment",
- "master": {
- "id": 1926,
- "title": "Sweeney Todd"
}, - "supplier": {
- "id": 1968,
- "title": "George"
}, - "account": {
- "id": 23182,
- "title": "Cards"
}, - "client": {
- "id": 481516,
- "name": "John Turk",
- "phone": 79876543210
}, - "last_change_date": "2020-02-01T12:00:00+0400",
- "record_id": 308786662,
- "visit_id": 262551993,
- "sold_item_id": 7134634,
- "sold_item_type": "service"
}
], - "meta": [ ]
}record_id: record ID
visit_id: ID of the visit
| location_id required | number location ID |
| record_id | number Appointment ID |
| visit_id | number Visit ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 4815162342,
- "document_id": 22256641,
- "expense": {
- "id": 5,
- "title": "Provision of services"
}, - "date": "2016-04-13T15:34:31+0400",
- "amount": 1000,
- "comment": "Comment",
- "master": {
- "id": 1926,
- "title": "Sweeney Todd"
}, - "supplier": {
- "id": 1968,
- "title": "George"
}, - "account": {
- "id": 23182,
- "title": "Cards"
}, - "client": {
- "id": 481516,
- "name": "John Turk",
- "phone": 79876543210
}, - "last_change_date": "2020-02-01T12:00:00+0400",
- "record_id": 308786662,
- "visit_id": 262551993,
- "sold_item_id": 7134634,
- "sold_item_type": "service"
}
], - "meta": [ ]
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| expense_id | number Payment item |
| amount | number <float> Transaction amount |
| account_id | number Checkout ID |
| client_id | number Client ID |
| supplier_id | number Supplier ID |
| master_id | number team member ID |
| comment | number A comment |
| date | string <date-time> Transaction creation date |
{- "expense_id": 2640,
- "amount": 100,
- "account_id": 39105,
- "client_id": 4240788,
- "supplier_id": 0,
- "master_id": 0,
- "comment": "Test transaction comment",
- "date": "2025-08-29T10:00:00+00:00"
}{- "success": true,
- "data": {
- "id": 277016617,
- "document_id": 0,
- "date": "2025-09-21T23:00:00.000+03:00",
- "type_id": 5,
- "expense_id": 5,
- "account_id": 774020,
- "amount": 100,
- "client_id": 51520012,
- "master_id": 921395,
- "supplier_id": 0,
- "comment": "Transaction comment",
- "item_id": 0,
- "target_type_id": 0,
- "record_id": 0,
- "goods_transaction_id": 0,
- "expense": {
- "id": 5,
- "title": "Provision of services"
}, - "account": {
- "id": 774020,
- "title": "Archive cash desk",
- "is_cash": true,
- "is_default": false
}, - "client": {
- "id": 51520012,
- "name": "Sweeney Todd",
- "phone": "+1-315-555-0175",
- "email": "[email protected]"
}, - "master": {
- "id": 921395,
- "name": "Valeria"
}, - "supplier": [ ]
}, - "meta": [ ]
}| location_id required | number location ID |
| transaction_id required | number transaction ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 4815162342,
- "document_id": 22256641,
- "expense": {
- "id": 5,
- "title": "Provision of services"
}, - "date": "2016-04-13T15:34:31+0400",
- "amount": 1000,
- "comment": "Comment",
- "master": {
- "id": 1926,
- "title": "Sweeney Todd"
}, - "supplier": {
- "id": 1968,
- "title": "George"
}, - "account": {
- "id": 23182,
- "title": "Cards"
}, - "client": {
- "id": 481516,
- "name": "John Turk",
- "phone": 79876543210
}, - "last_change_date": "2020-02-01T12:00:00+0400",
- "record_id": 308786662,
- "visit_id": 262551993,
- "sold_item_id": 7134634,
- "sold_item_type": "service"
}
], - "meta": [ ]
}| location_id required | number location ID |
| transaction_id required | number transaction ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| expense_id | number Payment item |
| amount | number <float> Transaction amount |
| account_id | number Checkout ID |
| client_id | number Client ID |
| supplier_id | number Supplier ID |
| master_id | number team member ID |
| comment | number A comment |
| date | string <date-time> Transaction creation date |
{- "success": true,
- "data": [
- {
- "id": 4815162342,
- "document_id": 22256641,
- "expense": {
- "id": 5,
- "title": "Provision of services"
}, - "date": "2016-04-13T15:34:31+0400",
- "amount": 1000,
- "comment": "Comment",
- "master": {
- "id": 1926,
- "title": "Sweeney Todd"
}, - "supplier": {
- "id": 1968,
- "title": "George"
}, - "account": {
- "id": 23182,
- "title": "Cards"
}, - "client": {
- "id": 481516,
- "name": "John Turk",
- "phone": 79876543210
}, - "last_change_date": "2020-02-01T12:00:00+0400",
- "record_id": 308786662,
- "visit_id": 262551993,
- "sold_item_id": 7134634,
- "sold_item_type": "service"
}
], - "meta": [ ]
}| location_id required | number location ID |
| transaction_id required | number transaction ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| document_id required | number Document ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 9053737,
- "date": "2025-09-21T23:00:00.000+03:00",
- "type_id": 2640,
- "expense_id": 2640,
- "account_id": 35501,
- "amount": 434,
- "client_id": 4240788,
- "master_id": 0,
- "supplier_id": 0,
- "comment": "Transaction comment",
- "item_id": 0,
- "target_type_id": 0,
- "record_id": 0,
- "expense": {
- "id": 2640,
- "title": "Provision of corporate services"
}, - "account": {
- "id": 35501,
- "title": "Cash register",
- "type_id": 0,
- "type": 0,
- "comment": "",
- "company_id": 4564
}, - "client": {
- "id": 4240788,
- "name": "Client",
- "phone": "+1-315-555-0175"
}, - "master": [ ],
- "supplier": [ ]
}, - {
- "id": 9053738,
- "date": "2025-09-21T23:00:00.000+03:00",
- "type_id": 2640,
- "expense_id": 2640,
- "account_id": 35501,
- "amount": 434,
- "client_id": 4240788,
- "master_id": 0,
- "supplier_id": 0,
- "comment": "Transaction comment",
- "item_id": 0,
- "target_type_id": 0,
- "record_id": 0,
- "expense": {
- "id": 2640,
- "title": "Provision of corporate services"
}, - "account": {
- "id": 35501,
- "title": "Cash register",
- "type_id": 0,
- "type": 0,
- "comment": "",
- "company_id": 4564
}, - "client": {
- "id": 4240788,
- "name": "Client",
- "phone": "+1-315-555-0175"
}, - "master": [ ],
- "supplier": [ ]
}
], - "meta": [ ]
}Send SMS, Email or other notifications to clients. Configure notification preferences and settings for users and notification types.
The object for creating SMS mailing has the following fields:
| Field | Type | Description |
|---|---|---|
| client_ids | array of numbers | Array of client IDs |
| text | string | SMS text message |
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| client_ids | Array of numbers Array of client IDs |
| text | string SMS text message |
{- "client_ids": [
- 1,
- 2,
- 3,
- 4,
- 5
], - "text": "Dear clients, we congratulate you on being our clients! You are very lucky!"
}{- "success": true,
- "meta": {
- "message": "Accepted"
}
}The object for creating SMS mailing has the following fields:
| Field | Type | Description |
|---|---|---|
| text | string | SMS text message |
Attention: If there are no filters, SMS mailing will go to the entire database!
| location_id required | number location ID |
| fullname | string Example: fullname='Joh' Name (part of the name) for client filtering |
| phone | string Example: phone='7916' Phone (part of the number) for customer filtering |
string Example: email='test@' Email (part) for customer filtering |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| text | string SMS text message |
{- "text": "Dear clients, we congratulate you on being our clients! You are very lucky!"
}{- "success": true,
- "meta": {
- "message": "Accepted"
}
}The object for creating an Email campaign has the following fields:
| Field | Type | Description |
|---|---|---|
| text | string | Text Email Message |
| subject | string | Email Subject |
Attention: If there are no filters, email distribution will go to the entire database!
| location_id required | number location ID |
| fullname | string Example: fullname='Joh' Name (part of the name) for client filtering |
| phone | string Example: phone='7916' Phone (part of the number) for customer filtering |
string Example: email='test@' Email (part) for customer filtering |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| subject required | string Email Subject |
| text required | string Email text |
{- "subject": "Important!",
- "text": "Dear clients, we congratulate you on being our clients! You are very lucky!"
}{- "success": true,
- "meta": {
- "message": "Accepted"
}
}| Number | Title |
|---|---|
| 1 | Delivered |
| 2 | Not delivered |
| 4 | Sent to phone |
| 8 | Transferred to the operator |
| 16 | Rejected by operator |
| 52 | Not enough funds |
In the event of an error, the corresponding HTTP status code is returned. In some cases, a descriptive error message is also included in the response. The following error codes may be returned by all API methods:
| error code | Http status code | Title | Description |
|---|---|---|---|
| 5 | 400 | ENTITY_VALIDATION_ERROR | The request body did not pass validation |
| 10 | 400 | FIELD_VALIDATION_ERROR | Parameter not validated |
| 15 | 403 | ACCESS_FORBIDDEN | The action is not available, the application does not have the required permissions. |
| 20 | 401 | INVALID_PARTNER_TOKEN | partner_token missing or invalid |
| 30 | 404 | RESOURCE_NOT_FOUND | The resource at the requested path does not exist |
When sending SMS, the delivery_callback_url attribute is passed in the request - this is the url to which message statuses should be sent.
Use it to send message statuses. Url to which message statuses should be sent - https://app.alteg.io/smsprovider/status/callback/{partner_token}
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
| id | string Identifier |
| status | number Message status |
| payment_sum | number Full message cost |
| currency_iso | string Currency ISO |
| parts_amount | number Amount of message's parts |
[- {
- "id": "232674",
- "status": 1,
- "payment_sum": 0.045,
- "currency_iso": "EUR",
- "parts_amount": 2
}
]{- "success": true
}The method allows you to get notification settings in a location.
| location_id required | number location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer bearer_token, USer user_token |
{- "success": true,
- "data": [
- {
- "type": "record_create_online_staff",
- "channels": {
- "push": 1,
- "sms": 0,
- "email": 1
}
}, - {
- "type": "record_move_admin",
- "channels": {
- "push": 1,
- "sms": 0,
- "email": 0
}
}, - {
- "type": "license_expire",
- "channels": {
- "push": 1,
- "sms": 1,
- "email": 1
}
}, - {
- "type": "record_create_offline_admin",
- "channels": {
- "push": 1,
- "sms": 0,
- "email": 1
}
}, - {
- "type": "record_create_offline_staff",
- "channels": {
- "push": 1,
- "sms": 0,
- "email": 0
}
}, - {
- "type": "record_create_online_admin",
- "channels": {
- "push": 1,
- "sms": 0,
- "email": 1
}
}, - {
- "type": "record_delete_admin",
- "channels": {
- "push": 0,
- "sms": 0,
- "email": 1
}
}, - {
- "type": "record_delete_staff",
- "channels": {
- "push": 1,
- "sms": 0,
- "email": 0
}
}, - {
- "type": "record_move_staff",
- "channels": {
- "push": 0,
- "sms": 0,
- "email": 0
}
}
], - "meta": {
- "count": 9
}
}The method allows you to get notification settings for a particular location user.
| location_id required | number location ID |
| user_id required | number User ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer bearer_token, User user_token |
{- "success": true,
- "data": {
- "mode": "staff",
- "notification_types": [
- {
- "type": "record_create_online_staff",
- "channels": {
- "push": 1,
- "sms": 0,
- "email": 1
}
}, - {
- "type": "record_create_offline_staff",
- "channels": {
- "push": 1,
- "sms": 0,
- "email": 0
}
}, - {
- "type": "record_delete_staff",
- "channels": {
- "push": 0,
- "sms": 0,
- "email": 0
}
}, - {
- "type": "record_move_staff",
- "channels": {
- "push": 0,
- "sms": 0,
- "email": 0
}
}, - {
- "type": "license_expire",
- "channels": {
- "push": 0,
- "sms": 0,
- "email": 0
}
}
]
}, - "meta": [ ]
}The method allows you to change the user's PUSH notification settings. The type of notification to be changed (record_create_online_staff or record_create_online_admin, etc.) should be selected based on the type of notification specified by the user (mode: admin or mode: staff)
| location_id required | number location ID |
| user_id required | number User ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer bearer_token, User user_token |
Array of objects Array of objects |
{- "notification_types": [
- {
- "type": "record_create_online_admin",
- "channels": {
- "push": 1
}
}, - {
- "type": "record_create_offline_admin",
- "channels": {
- "push": 1
}
}, - {
- "type": "record_delete_admin",
- "channels": {
- "push": 1
}
}, - {
- "type": "record_move_admin",
- "channels": {
- "push": 1
}
}, - {
- "type": "license_expire",
- "channels": {
- "push": 1
}
}
]
}{- "success": true,
- "data": {
- "mode": "staff",
- "notification_types": [
- {
- "type": "record_create_online_staff",
- "channels": {
- "push": 1,
- "sms": 0,
- "email": 0
}
}, - {
- "type": "record_create_offline_staff",
- "channels": {
- "push": 0,
- "sms": 0,
- "email": 0
}
}, - {
- "type": "record_delete_staff",
- "channels": {
- "push": 0,
- "sms": 0,
- "email": 0
}
}, - {
- "type": "record_move_staff",
- "channels": {
- "push": 0,
- "sms": 0,
- "email": 0
}
}, - {
- "type": "license_expire",
- "channels": {
- "push": 0,
- "sms": 0,
- "email": 0
}
}
]
}, - "meta": [ ]
}Manage custom booking forms and their configurations for online appointment scheduling.
| location_id required | number location ID |
| Accept required | string e.g. application/vnd.api.v2+json |
| Authorization required | string Bearer partner_token, User user_token |
| Content-Type required | string application/json |
{- "success": true,
- "data": [
- {
- "id": 1,
- "title": "Name",
- "is_default": false,
- "description": "Description",
- "without_menu": false,
- "service_step_default": 0,
- "service_step_hide": false,
- "master_step_default": 0,
- "master_step_hide": false,
- "service_step_num": 2,
- "master_step_num": 1,
- "datetime_step_num": 3,
- "show_button": true,
- "button_position": "bottom right",
- "form_position": "right",
- "button_color": "#1c84c6",
- "button_animation": true,
- "html_code": "",
- "ab_test_enabled": false
}
], - "meta": [ ]
}| location_id required | number location ID |
| Accept required | string e.g. application/vnd.api.v2+json |
| Authorization required | string Bearer partner_token, User user_token |
| Content-Type required | string application/json |
| title required | string Name of the appointment widget |
| description | string Default: "" appointment widget description |
| is_default | boolean Default: false Default appointment widget flag |
| without_menu | boolean Default: false Step mode flag |
| service_step_default | number Service ID |
| service_step_hide | boolean Default: false Service Hiding Flag |
| master_step_default | number team member ID |
| master_step_hide | boolean Default: false team member hide flag |
| service_step_num | number Service step sequence number |
| master_step_num | number Sequence number of the wizard step |
| datetime_step_num | number Sequence number of the date and time step |
| show_button | boolean Default: true Button visibility flag |
| button_position | string Default: "bottom right" Enum: "bottom right" "bottom left" "top right" "top left " Button location on the page |
| form_position | string Default: "right" Enum: "right" "left" Panel position on the page |
| button_color | string Default: "#1c84c6" Button color |
| button_animation | boolean Default: true Button animation enable flag |
{- "title": "string",
- "description": "",
- "is_default": false,
- "without_menu": false,
- "service_step_default": 0,
- "service_step_hide": false,
- "master_step_default": 0,
- "master_step_hide": false,
- "service_step_num": 0,
- "master_step_num": 0,
- "datetime_step_num": 0,
- "show_button": true,
- "button_position": "bottom right",
- "form_position": "right",
- "button_color": "#1c84c6",
- "button_animation": true
}{- "success": true,
- "data": {
- "id": 1,
- "title": "Name",
- "is_default": false,
- "description": "Description",
- "without_menu": false,
- "service_step_default": 0,
- "service_step_hide": false,
- "master_step_default": 0,
- "master_step_hide": false,
- "service_step_num": 2,
- "master_step_num": 1,
- "datetime_step_num": 3,
- "show_button": true,
- "button_position": "bottom right",
- "form_position": "right",
- "button_color": "#1c84c6",
- "button_animation": true,
- "html_code": "",
- "ab_test_enabled": false
}, - "meta": [ ]
}| location_id required | number location ID |
| form_id required | number appointment widget ID |
| Accept required | string e.g. application/vnd.api.v2+json |
| Authorization required | string Bearer partner_token, User user_token |
| Content-Type required | string application/json |
{- "success": true,
- "data": {
- "id": 1,
- "title": "Name",
- "is_default": false,
- "description": "Description",
- "without_menu": false,
- "service_step_default": 0,
- "service_step_hide": false,
- "master_step_default": 0,
- "master_step_hide": false,
- "service_step_num": 2,
- "master_step_num": 1,
- "datetime_step_num": 3,
- "show_button": true,
- "button_position": "bottom right",
- "form_position": "right",
- "button_color": "#1c84c6",
- "button_animation": true,
- "html_code": "",
- "ab_test_enabled": false
}, - "meta": [ ]
}| location_id required | number location ID |
| form_id required | number appointment widget ID |
| Accept required | string e.g. application/vnd.api.v2+json |
| Authorization required | string Bearer partner_token, User user_token |
| Content-Type required | string application/json |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| location_id required | number location ID |
| form_id required | number appointment widget ID |
| Accept required | string e.g. application/vnd.api.v2+json |
| Authorization required | string Bearer partner_token, User user_token |
| Content-Type required | string application/json |
| title required | string Name of the appointment widget |
| description required | string appointment widget description |
| is_default required | boolean Default appointment widget flag |
| without_menu required | boolean Step mode flag |
| service_step_default required | number Service ID |
| service_step_hide required | boolean Service Hiding Flag |
| master_step_default required | number team member ID |
| master_step_hide required | boolean team member hide flag |
| service_step_num required | number Service step sequence number |
| master_step_num required | number Sequence number of the wizard step |
| datetime_step_num required | number Sequence number of the date and time step |
| show_button required | boolean Button Visibility Step |
| button_position required | string Enum: "bottom right" "bottom left" "top right" "top left" Button location on the page |
| form_position required | string Enum: "right" "left" Panel position on the page |
| button_color required | string Button color |
| button_animation required | boolean Button animation enable flag |
{- "title": "string",
- "description": "string",
- "is_default": true,
- "without_menu": true,
- "service_step_default": 0,
- "service_step_hide": true,
- "master_step_default": 0,
- "master_step_hide": true,
- "service_step_num": 0,
- "master_step_num": 0,
- "datetime_step_num": 0,
- "show_button": true,
- "button_position": "bottom right",
- "form_position": "right",
- "button_color": "string",
- "button_animation": true
}{- "success": true,
- "data": {
- "id": 1,
- "title": "Name",
- "is_default": false,
- "description": "Description",
- "without_menu": false,
- "service_step_default": 0,
- "service_step_hide": false,
- "master_step_default": 0,
- "master_step_hide": false,
- "service_step_num": 2,
- "master_step_num": 1,
- "datetime_step_num": 3,
- "show_button": true,
- "button_position": "bottom right",
- "form_position": "right",
- "button_color": "#1c84c6",
- "button_animation": true,
- "html_code": "",
- "ab_test_enabled": false
}, - "meta": [ ]
}The method allows you to get the main indicators of the location for the selected period and compare with the previous period of the same duration
| location_id required | number location ID |
| date_from required | string <date> Start date of the analyzed period |
| date_to required | string <date> End date of the analyzed period (included in the report) |
| team_member_id | integer ID of the location team member whose work needs to be analyzed |
| position_id | integer location position ID to analyze the work of all team members belonging to the same position |
| user_id | integer The user ID of the location whose work you want to analyze |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "data": {
- "income_total_stats": {
- "current_sum": 12.56,
- "previous_sum": 10.34,
- "change_percent": 21,
- "currency": {
- "symbol": "USD"
}
}, - "income_services_stats": {
- "current_sum": 12.56,
- "previous_sum": 10.34,
- "change_percent": 21,
- "currency": {
- "symbol": "USD"
}
}, - "income_goods_stats": {
- "current_sum": 12.56,
- "previous_sum": 10.34,
- "change_percent": 21,
- "currency": {
- "symbol": "USD"
}
}, - "income_average_stats": {
- "current_sum": 12.56,
- "previous_sum": 10.34,
- "change_percent": 21,
- "currency": {
- "symbol": "USD"
}
}, - "income_average_services_stats": {
- "current_sum": 12.56,
- "previous_sum": 10.34,
- "change_percent": 21,
- "currency": {
- "symbol": "USD"
}
}, - "fullness_stats": {
- "current_percent": 12.1,
- "previous_percent": 10.2,
- "change_percent": 18
}, - "record_stats": {
- "current_completed_count": 150,
- "current_completed_percent": 75,
- "current_pending_count": 30,
- "current_pending_percent": 15,
- "current_canceled_count": 20,
- "current_canceled_percent": 10,
- "current_total_count": 200,
- "previous_total_count": 180,
- "change_percent": 11
}, - "client_stats": {
- "total_count": 1000,
- "new_count": 50,
- "new_percent": 10,
- "return_count": 450,
- "return_percent": 90,
- "active_count": 500,
- "lost_count": 20,
- "lost_percent": 2
}
}, - "meta": [
- { }
], - "success": true
}| location_id required | number location ID |
| date_from required | string <date> Start date of the analyzed period |
| date_to required | string <date> End date of the analyzed period (included in the report) |
| team_member_id | integer ID of the location team member whose work needs to be analyzed |
| user_id | integer The user ID of the location whose work you want to analyze |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
[- {
- "label": "Working day occupancy, %",
- "data": [
- [
- "2025-09-21T23:00:00.000+03:00",
- 89.7
], - [
- "2025-09-21T23:00:00.000+03:00",
- 91.2
]
]
}
]| location_id required | number location ID |
| date_from required | string <date> Start date of the analyzed period |
| date_to required | string <date> End date of the analyzed period (included in the report) |
| team_member_id | integer ID of the location team member whose work needs to be analyzed |
| position_id | integer location position ID to analyze the work of all team members belonging to the same position |
| user_id | integer The user ID of the location whose work you want to analyze |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
[- {
- "label": "Revenue",
- "data": [
- [
- "2025-09-21T23:00:00.000+03:00",
- 1000
], - [
- "2025-09-21T23:00:00.000+03:00",
- 500
]
]
}
]| location_id required | number location ID |
| date_from required | string <date> Start date of the analyzed period |
| date_to required | string <date> End date of the analyzed period (included in the report) |
| team_member_id | integer ID of the location team member whose work needs to be analyzed |
| user_id | integer The user ID of the location whose work you want to analyze |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
[- {
- "label": "Administrator",
- "data": 10
}, - {
- "label": "Widget",
- "data": 30
}
]| location_id required | number location ID |
| date_from required | string <date> Start date of the analyzed period |
| date_to required | string <date> End date of the analyzed period (included in the report) |
| team_member_id | integer ID of the location team member whose work needs to be analyzed |
| user_id | integer The user ID of the location whose work you want to analyze |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
[- {
- "label": "Customer expectation",
- "data": 10
}, - {
- "label": "The client came",
- "data": 30
}, - {
- "label": "Customer confirmed",
- "data": 5
}, - {
- "label": "Client didn't come",
- "data": 2
}
]| location_id required | number location ID |
| date_from required | string <date> Start date of the analyzed period |
| date_to required | string <date> End date of the analyzed period (included in the report) |
| team_member_id | integer ID of the location team member whose work needs to be analyzed |
| user_id | integer User ID of the location whose work you want to analyze |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
[- {
- "label": "Number of records",
- "data": [
- [
- "2025-09-21T23:00:00.000+03:00",
- 1000
], - [
- "2025-09-21T23:00:00.000+03:00",
- 500
]
]
}, - {
- "label": "Number of online appointments",
- "data": [
- [
- "2025-09-21T23:00:00.000+03:00",
- 1000
], - [
- "2025-09-21T23:00:00.000+03:00",
- 500
]
]
}, - {
- "label": "Number of new customer appointments",
- "data": [
- [
- "2025-09-21T23:00:00.000+03:00",
- 1000
], - [
- "2025-09-21T23:00:00.000+03:00",
- 500
]
]
}
]The method allows you to get statistics on revenue.
| location_id required | number location ID |
| date_to required | string Period end date |
| date_from required | string Period start date |
| loyalty_program_id required | string Promotion ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer bearer_token, User user_token |
{- "success": true,
- "data": {
- "income_stats": {
- "new": {
- "all_sum": 0,
- "returned_sum": 0
}, - "old": {
- "all_sum": 0,
- "returned_sum": 0
}, - "total": {
- "all_sum": 0,
- "returned_sum": 0
}
}, - "currency": {
- "id": 1,
- "iso": "RUB",
- "name": "US Dollar",
- "symbol": "USD",
- "is_symbol_after_amount": true
}, - "income_stats_by_day": [
- {
- "date": "2025-09-21",
- "new_sum": 0,
- "old_sum": 0
}, - {
- "date": "2025-09-21",
- "new_sum": 0,
- "old_sum": 0
}
]
}, - "meta": [ ]
}The method allows you to get the return statistics for a team member
| location_id required | number location ID |
| date_to required | string Period end date |
| date_from required | string Period start date |
| loyalty_program_id required | string Promotion ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer bearer_token, User user_token |
{- "success": true,
- "data": [
- {
- "client_stats": {
- "all_count": 1,
- "lost_count": 0,
- "returned_count": 1,
- "returned_percent": 100
}, - "staff": {
- "id": 1140369,
- "name": "Doniella Davy"
}
}
], - "meta": {
- "count": 1
}
}The method allows you to get statistics on returning, new and lost customers
| location_id required | number location ID |
| date_to required | string Period end date |
| date_from required | string Period start date |
| loyalty_program_id required | string Promotion ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer bearer_token, User user_token |
{- "success": true,
- "data": {
- "client_stats": {
- "new": {
- "all_count": 0,
- "lost_count": 0,
- "returned_count": 0,
- "returned_percent": 0
}, - "old": {
- "all_count": 0,
- "lost_count": 0,
- "returned_count": 0,
- "returned_percent": 0
}, - "total": {
- "all_count": 0,
- "lost_count": 0,
- "returned_count": 0,
- "returned_percent": 0
}
}, - "visits_stats_by_day": [
- {
- "date": "2025-09-21",
- "new_count": 0,
- "old_count": 0
}, - {
- "date": "2025-09-21",
- "new_count": 0,
- "old_count": 0
}
]
}, - "meta": [ ]
}start_date: Report date
master_id: team member ID
| location_id required | integer location ID |
| start_date | string Example: start_date='' period start date |
| master_id | integer team member ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "stats": {
- "clients": 7,
- "clients_average": 123.45,
- "records": 14,
- "records_average": 4231.51,
- "visit_records": 13,
- "visit_records_average": 100500.01,
- "non_visit_records": 1,
- "non_visit_records_average": 200,
- "targets": 14,
- "targets_paid": 10255,
- "goods": 4,
- "goods_paid": 12452.18,
- "certificates": 1,
- "certificates_paid": 9876,
- "abonement": 0,
- "abonement_paid": 0
}, - "paids": {
- "accounts": [
- {
- "title": "Cards",
- "amount": 6987
}, - {
- "title": "Cash",
- "amount": 54321.13
}, - {
- "title": "Cash register",
- "amount": 12531
}
], - "discount": [
- {
- "title": "Advance Discount",
- "amount": 1816.875
}, - {
- "title": "Written off bonuses",
- "amount": 800
}, - {
- "title": "Promotion discount",
- "amount": 123
}
], - "total": {
- "accounts": 2657.13,
- "discount": 1241.875
}
}, - "z_data": {
- "2025-09-21T23:00:00.000+03:00": [
- {
- "client_id": 11223344,
- "client_name": "John Smith",
- "client_phone": "+1-315-555-0175",
- "masters": [
- {
- "master_id": 321123,
- "master_name": "Robert Brown",
- "service": [
- {
- "item_title": "Highlighting from 9 strands",
- "first_cost": 3500,
- "discount": 0,
- "result_cost": 3500,
- "transactions": [
- {
- "accounts_amount": 0,
- "loyalty_amount": 700,
- "payment_type": "Card: Gold Card"
}, - {
- "accounts_amount": 0,
- "loyalty_amount": 100,
- "payment_type": "Card: Gold Card"
}, - {
- "accounts_amount": 0,
- "loyalty_amount": 1,
- "payment_type": "Card: Bonus card"
}
]
}
], - "good": [
- {
- "item_title": "Spray For Hair",
- "first_cost": 15,
- "discount": 2.25,
- "result_cost": 12.75,
- "transactions": [
- {
- "accounts_amount": 12.75,
- "loyalty_amount": 0,
- "payment_type": "Cash"
}
]
}
], - "others": {
- "item_title": "Other operations",
- "first_cost": 347,
- "discount": 0,
- "result_cost": 347,
- "transactions": [
- {
- "accounts_amount": 23,
- "loyalty_amount": 0,
- "payment_type": "Cash"
}, - {
- "accounts_amount": 324,
- "loyalty_amount": 0,
- "payment_type": "Cash"
}
]
}
}
]
}
]
}, - "currency": "USD"
}, - "meta": [ ]
}| location_id required | number location ID |
| title required | string name of category |
| color required | string Label color in #RRGGBB format |
| entity | number Category object (0 - general tags, 1 - customer tags, 2 - appointment tags) |
| icon | string Icon name |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "title": "test",
- "salon_id": 68570,
- "color": "#00ff11",
- "entity": 1,
- "id": 3599560
}, - "meta": [ ]
}Returns categories for the specified entity type.
The entity parameter accepts string aliases:
common - common categoriesclient - client categoriesrecord - appointment/record categoriesactivity - activity/event categoriesLegacy support: Numeric values (
0,1,2,3) are also accepted but string aliases are preferred.
| location_id required | integer Location ID |
| entity required | string Enum: "common" "client" "record" "activity" Example: client Category type alias |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 241625,
- "salon_id": 68570,
- "title": "VIP client",
- "color": "#ff2828",
- "icon": "star",
- "entity": 1,
- "deleted": 0,
- "not_editable": 0
}, - {
- "id": 241626,
- "salon_id": 68570,
- "title": "Regular client",
- "color": "#009800",
- "icon": "user",
- "entity": 1,
- "deleted": 0,
- "not_editable": 0
}
], - "meta": [ ]
}| location_id required | number location ID |
| label_id required | number Tag ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title | string name of category |
| color | string Label color in #RRGGBB format |
| entity | number Category object (1 - category for customers, 2 - category for appointments) |
| icon | string Icon name |
{- "title": "Testway2",
- "color": "#aa11ff",
- "entity": 2,
- "icon": "Test"
}{- "success": true,
- "meta": {
- "message": "Accepted"
}
}| location_id required | number location ID |
| label_id required | number Tag ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "meta": {
- "message": "Accepted"
}
}| location_id required | number Location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 3,
- "salon_id": 4564,
- "title": "Regular customer",
- "color": "#1f1038",
- "icon": "tag",
- "entity": 1,
- "deleted": 1,
- "not_editable": 0
}
], - "meta": {
- "page": 1,
- "total_count": 25
}
}| location_id required | number location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title | string name of category |
| color | string Label color in #RRGGBB format |
{- "success": true,
- "data": {
- "title": "test",
- "salon_id": 68570,
- "color": "#00ff11",
- "entity": 1,
- "id": 3599560
}, - "meta": [ ]
}| location_id required | number Location ID |
| client_id required | number Client ID |
| Accept | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "success": true,
- "data": [
- {
- "deposit": {
- "id": 1,
- "salon_group_id": 1,
- "deposit_type_id": 1,
- "initial_balance": 0,
- "balance": 1000,
- "blocked": false,
- "date_create": "2025-09-21T23:00:00.000+03:00"
}, - "deposit_type": {
- "id": 1,
- "salon_group_id": 1,
- "title": "Account type header",
- "date_create": "2025-09-21T23:00:00.000+03:00",
- "deleted": false
}
}
], - "meta": {
- "count": 1
}
}| chain_id required | number Chain ID |
| balance_from | number Minimum balance for filtering |
| balance_to | number Maximum balance for filtering |
| page | number Page number |
| limit | number Number of items per page |
| Accept | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "success": true,
- "data": [
- {
- "deposit": {
- "id": 1,
- "salon_group_id": 1,
- "deposit_type_id": 1,
- "initial_balance": 0,
- "balance": 1000,
- "blocked": false,
- "date_create": "2025-09-21T23:00:00.000+03:00"
}, - "deposit_type": {
- "id": 1,
- "salon_group_id": 1,
- "title": "Account type header",
- "date_create": "2025-09-21T23:00:00.000+03:00",
- "deleted": false
}, - "client": {
- "id": 1,
- "name": "Client name",
- "phone": 71234567890
}
}
], - "meta": {
- "count": 1
}
}| chain_id required | number Chain ID |
| phone required | number Customer phone number |
| Accept | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "success": true,
- "data": [
- {
- "deposit": {
- "id": 1,
- "salon_group_id": 1,
- "deposit_type_id": "1,",
- "initial_balance": 0,
- "balance": 1000,
- "blocked": false,
- "date_create": "2025-09-21T23:00:00.000+03:00"
}, - "deposit_type": {
- "id": 1,
- "salon_group_id": 1,
- "title": "Account type header",
- "date_create": "2025-09-21T23:00:00.000+03:00",
- "deleted": false
}
}
], - "meta": {
- "count": 1
}
}Creating a transaction with a personal account involves creating a document, a transaction with a personal account, and a financial transaction within a single API request.
| location_id required | number Location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| client_id required | number ID of the client, the owner of the client personal account |
| deposit_id required | number personal account ID |
| amount required | number replenishment amount |
| master_id | number team member ID |
| account_id required | number Checkout ID for payment |
{- "success": true,
- "data": {
- "document": {
- "id": 1,
- "user_id": 1,
- "salon_id": 1,
- "type_id": 9,
- "type": {
- "id": 9,
- "title": "Account replenishment (advance payment)"
}, - "comment": "",
- "number": 1,
- "salon": {
- "id": 1,
- "title": "Location in New York",
- "public_title": "Location in New York",
- "business_group_id": 1,
- "business_type_id": 1,
- "country_id": 1,
- "city_id": 2,
- "timezone": "3",
- "timezone_name": "America/New_York",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "zip": "129090",
- "phone": "+1-315-555-0175",
- "phones": [ ],
- "site": "www.example.com",
- "allow_delete_record": true,
- "allow_change_record": true
}, - "user": {
- "id": 1,
- "name": "James Smith",
- "phone": "+1-315-555-0175"
}
}, - "deposits_transactions": [
- {
- "id": 1,
- "salon_id": 1,
- "salon_group_id": 1,
- "document_id": 1,
- "deposit_id": 1,
- "deposit_type_id": 1,
- "master_id": 1,
- "user_id": 1,
- "amount": 100.5,
- "comment": "",
- "date_create": "2025-09-21T23:00:00.000+03:00",
- "deleted": false,
- "deposit": {
- "id": 1,
- "deposit_type_id": 1,
- "salon_group_id": 1,
- "initial_balance": 10000,
- "balance": 12239.56,
- "blocked": false,
- "date_create": "2025-09-21T23:00:00.000+03:00"
}, - "deposit_type": {
- "id": 1,
- "salon_group_id": 1,
- "title": "Account type 1",
- "date_create": "2025-09-21T23:00:00.000+03:00",
- "deleted": false
}
}
], - "payment_transactions": [
- {
- "id": 1,
- "document_id": 1,
- "date": "2025-09-21T23:00:00.000+03:00",
- "type_id": 10,
- "expense_id": 10,
- "account_id": 1,
- "amount": 100.5,
- "client_id": 1,
- "master_id": 1,
- "supplier_id": 0,
- "comment": "",
- "item_id": 1,
- "target_type_id": 0,
- "record_id": 0,
- "goods_transaction_id": 0,
- "type": {
- "id": 10,
- "title": "Refill"
}
}
]
}, - "meta": [ ]
}Loyalty card management including card types, manual transactions, and card assignments.
Returns a list of customer cards with programs that are active in this location
The attributes in the response to the request completely match the "Get a list of issued cards by phone number" method described above
| client_id required | number Client ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "id": 9210520,
- "balance": 100,
- "points": 0,
- "paid_amount": 1000,
- "sold_amount": 1000,
- "visits_count": 1,
- "number": 14507109210520,
- "type_id": 10992,
- "salon_group_id": 145071,
- "type": {
- "id": 10992,
- "title": "5+2",
- "salon_group_id": 145071
}, - "salon_group": {
- "id": 145071,
- "title": "Dough chain1."
}, - "programs": [
- {
- "id": 18005,
- "title": "5+2",
- "value": 0,
- "loyalty_type_id": 13,
- "item_type_id": 3,
- "value_unit_id": 1,
- "group_id": 145071,
- "loyalty_type": {
- "id": 13,
- "title": "Discount for a given number of accumulated services",
- "is_discount": true,
- "is_cashback": false,
- "is_static": false,
- "is_accumulative": false
}, - "rules": [
- {
- "id": 72803,
- "loyalty_program_id": 18005,
- "loyalty_type_id": 13,
- "value": 20,
- "parameter": 0
}, - {
- "id": 72804,
- "loyalty_program_id": 18005,
- "loyalty_type_id": 13,
- "value": 10,
- "parameter": 0
}, - {
- "id": 72805,
- "loyalty_program_id": 18005,
- "loyalty_type_id": 13,
- "value": 100,
- "parameter": 0
}
]
}
]
}Returns a list of customer cards with programs that are active in this location
| Attribute | Type | Description |
|---|---|---|
| id | int | Loyalty card ID |
| balance | decimal | Loyalty card balance |
| paid_amount | decimal | Amount "Paid" |
| sold_amount | decimal | Amount "Sold" |
| visits_count | int | Number of visits |
| number | string | Card number |
| type_id | int | Loyalty card type identifier |
| salon_group_id | int | ID of the chain where the card was created |
| type | object | Object that contains the "id" and "title" fields: card type identifier and name |
| salon_group | object | Object that contains the "id" and "title" fields: identifier of the chain where the card type was created and the name of this chain |
| programs | array | Array with information about promotions linked to a loyalty card |
| rules | array | Array with information about the rules configured in the action |
The programs array consists of objects with the following fields:
| Attribute | Type | Description |
|---|---|---|
| id | int | Promotion ID |
| title | string | Action name |
| loyalty_type_id | int | Promotion type ID |
| item_type_id | int | Is cashback accrued from products |
| value_unit_id | int | Bonus field — Discount % or Fixed amount |
| group_id | int | ID of the chain where the action was created |
| loyalty_type | object | Object with information about the action |
The rules array consists of objects with the following fields:
| Attribute | Type | Description |
|---|---|---|
| id | int | Rule ID |
| loyalty_program_id | int | Identifier of the promotion to which the rule is attached |
| loyalty_type_id | int | Promotion type ID |
| value | decimal | Value from which the rule will work |
| phone required | string Customer phone number in the format 380000000000 |
| chain_id required | number Chain ID |
| location_id required | number Location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "id": 9210520,
- "balance": 100,
- "points": 0,
- "paid_amount": 1000,
- "sold_amount": 1000,
- "visits_count": 1,
- "number": 14507109210520,
- "type_id": 10992,
- "salon_group_id": 145071,
- "type": {
- "id": 10992,
- "title": "5+2",
- "salon_group_id": 145071
}, - "salon_group": {
- "id": 145071,
- "title": "Dough chain1."
}, - "programs": [
- {
- "id": 18005,
- "title": "5+2",
- "value": 0,
- "loyalty_type_id": 13,
- "item_type_id": 3,
- "value_unit_id": 1,
- "group_id": 145071,
- "loyalty_type": {
- "id": 13,
- "title": "Discount for a given number of accumulated services",
- "is_discount": true,
- "is_cashback": false,
- "is_static": false,
- "is_accumulative": false
}, - "rules": [
- {
- "id": 72803,
- "loyalty_program_id": 18005,
- "loyalty_type_id": 13,
- "value": 20,
- "parameter": 0
}, - {
- "id": 72804,
- "loyalty_program_id": 18005,
- "loyalty_type_id": 13,
- "value": 10,
- "parameter": 0
}, - {
- "id": 72805,
- "loyalty_program_id": 18005,
- "loyalty_type_id": 13,
- "value": 100,
- "parameter": 0
}
]
}
]
}Returns a list of cards of an authorized user with programs, filtering cards by location chain / location
| chain_id required | number Chain ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "id": 9210520,
- "balance": 100,
- "points": 0,
- "paid_amount": 1000,
- "sold_amount": 1000,
- "visits_count": 1,
- "number": 14507109210520,
- "type_id": 10992,
- "salon_group_id": 145071,
- "type": {
- "id": 10992,
- "title": "5+2",
- "salon_group_id": 145071
}, - "salon_group": {
- "id": 145071,
- "title": "Dough chain1."
}, - "programs": [
- {
- "id": 18005,
- "title": "5+2",
- "value": 0,
- "loyalty_type_id": 13,
- "item_type_id": 3,
- "value_unit_id": 1,
- "group_id": 145071,
- "loyalty_type": {
- "id": 13,
- "title": "Discount for a given number of accumulated services",
- "is_discount": true,
- "is_cashback": false,
- "is_static": false,
- "is_accumulative": false
}, - "rules": [
- {
- "id": 72803,
- "loyalty_program_id": 18005,
- "loyalty_type_id": 13,
- "value": 20,
- "parameter": 0
}, - {
- "id": 72804,
- "loyalty_program_id": 18005,
- "loyalty_type_id": 13,
- "value": 10,
- "parameter": 0
}, - {
- "id": 72805,
- "loyalty_program_id": 18005,
- "loyalty_type_id": 13,
- "value": 100,
- "parameter": 0
}
]
}
]
}Returns a list of card types that are valid for the given location.
The attributes and their descriptions match those defined in the "Collection of Card Types Available to the Client" method described above.
| location_id required | number Example: 12345 location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
[- {
- "id": 10992,
- "title": "Cashback",
- "salon_group_id": 145071,
- "salon_group": {
- "id": 145071,
- "title": "Chain 1"
}
}, - {
- "id": 8230,
- "title": "Referral program",
- "salon_group_id": 145071,
- "salon_group": {
- "id": 145071,
- "title": "Chain 1"
}
}
]Returns a list of card types that are available for issuance to a location client.
| Attribute | Type | Description |
|---|---|---|
| id | int | Card type identifier |
| title | string | Card type name |
| salon_group_id | int | ID of the chain where the card type was created |
| salon_group | object | An object that contains the "id" and "title" fields: identifier of the chain where the card type was created and the name of this chain |
| location_id required | number Example: 12345 location ID |
| phone required | number Example: 70001234567 Customer phone number |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
[- {
- "id": 10992,
- "title": "Cashback",
- "salon_group_id": 145071,
- "salon_group": {
- "id": 145071,
- "title": "Chain 1"
}
}, - {
- "id": 8230,
- "title": "Referral program",
- "salon_group_id": 145071,
- "salon_group": {
- "id": 145071,
- "title": "Chain 1"
}
}
]| chain_id required | integer Chain ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
[- {
- "id": 123,
- "title": "Loyalty card type"
}
]| Attribute | Type | Description | |----------------------|--------|----------------- ------------------------------| | loyalty_card_number | number | Loyalty card number | | loyalty_card_type_id | number | Loyalty card type identifier | | phone | number | Customer phone number in the format 70001234567 |
| location_id required | number Location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| loyalty_card_number | string Loyalty card number |
| loyalty_card_type_id | string Loyalty card type identifier |
| phone | number Customer phone number in the format 70001234567 |
{- "loyalty_card_number": "9090909",
- "loyalty_card_type_id": "8230",
- "phone": "79091552422"
}{- "id": 9250498,
- "balance": 0,
- "points": 0,
- "paid_amount": 16300,
- "sold_amount": 19320,
- "visits_count": 5,
- "number": 1010101,
- "type_id": 8230,
- "salon_group_id": 145071,
- "type": {
- "id": 8230,
- "title": "cashmesh",
- "salon_group_id": 145071
}, - "salon_group": {
- "id": 145071,
- "title": "Dough chain1."
}, - "programs": [
- {
- "id": 12720,
- "title": "cumulative cache paid",
- "value": 10,
- "loyalty_type_id": 7,
- "item_type_id": 0,
- "value_unit_id": 1,
- "group_id": 145071,
- "loyalty_type": {
- "id": 7,
- "title": "Cumulative cashback (paid)",
- "is_discount": false,
- "is_cashback": true,
- "is_static": false,
- "is_accumulative": true
}, - "rules": [
- {
- "id": 71149,
- "loyalty_program_id": 12720,
- "loyalty_type_id": 7,
- "value": 10,
- "parameter": 100
}
]
}
]
}| location_id required | number Location ID |
| card_id required | number loyalty card ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}Manual withdraw/deposit to loyalty card in location
| location_id required | number Example: 123 ID of a location. |
| card_id required | number Loyalty card ID |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| amount required | number Withdraw/deposit amount. Positive for deposit, negative for withdraw. |
| title | string Optional comment |
{- "amount": 100.5,
- "title": "string"
}{- "success": true,
- "data": {
- "id": 0,
- "balance": 0,
- "points": 0,
- "paid_amount": 0,
- "sold_amount": 0,
- "visits_count": 0,
- "number": "string",
- "type_id": 0,
- "salon_group_id": 0,
- "max_discount_percent": 0,
- "max_discount_amount": 0
}, - "meta": { }
}Manual withdraw/deposit to loyalty card in chain
| chain_id required | number Example: 123 ID of a chain. |
| card_id required | number Loyalty card ID |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
| amount required | number Withdraw/deposit amount. Positive for deposit, negative for withdraw. |
| title | string Optional comment |
{- "amount": 100.5,
- "title": "string"
}{- "success": true,
- "data": {
- "id": 0,
- "balance": 0,
- "points": 0,
- "paid_amount": 0,
- "sold_amount": 0,
- "visits_count": 0,
- "number": "string",
- "type_id": 0,
- "salon_group_id": 0,
- "max_discount_percent": 0,
- "max_discount_amount": 0
}, - "meta": { }
}Abonement (subscription) and certificate management including creation, freezing, and balance operations.
Returns a list of client's memberships by phone
| company_id required | number Location ID |
| phone required | number Customer phone number |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 659878,
- "number": 788376,
- "balance_string": "Surfing (x10)",
- "is_frozen": false,
- "freeze_period": 0,
- "period": 9999,
- "period_unit_id": 3,
- "status": {
- "id": 1,
- "title": "Released",
- "extended_title": "Released"
}, - "balance_container": {
- "links": [
- {
- "count": 10,
- "category": {
- "id": 3129591,
- "category_id": 1,
- "title": "Surfing"
}
}
]
}, - "type": {
- "id": 97804,
- "salon_group_id": 145071,
- "title": 89999,
- "period": 9999,
- "period_unit_id": 3,
- "allow_freeze": false,
- "freeze_limit": 0,
- "is_allow_empty_code": false,
- "is_united_balance": false,
- "united_balance_services_count": 0,
- "balance_container": {
- "links": [
- {
- "count": 10,
- "category": {
- "id": 3129591,
- "category_id": 1,
- "title": "Surfing"
}
}
]
}
}
}
], - "meta": {
- "count": 1
}
}Returns a list of memberships of an authorized user
| company_id required | number Location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 659878,
- "number": 788376,
- "balance_string": "Surfing (x10)",
- "is_frozen": false,
- "freeze_period": 0,
- "period": 9999,
- "period_unit_id": 3,
- "status": {
- "id": 1,
- "title": "Released",
- "extended_title": "Released"
}, - "balance_container": {
- "links": [
- {
- "count": 10,
- "category": {
- "id": 3129591,
- "category_id": 1,
- "title": "Surfing"
}
}
]
}, - "type": {
- "id": 97804,
- "salon_group_id": 145071,
- "title": 89999,
- "period": 9999,
- "period_unit_id": 3,
- "allow_freeze": false,
- "freeze_limit": 0,
- "is_allow_empty_code": false,
- "is_united_balance": false,
- "united_balance_services_count": 0,
- "balance_container": {
- "links": [
- {
- "count": 10,
- "category": {
- "id": 3129591,
- "category_id": 1,
- "title": "Surfing"
}
}
]
}
}
}
], - "meta": {
- "count": 1
}
}A list of membership types available at a location can be obtained by querying the location ID and membership type IDs.
The list is an array of membership types.
&ids[]={id}| location_id required | number location ID |
| ids[] | number Membership type ID (you can specify several additional parameters &ids[]={id} |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 12233,
- "salon_group_id": 123,
- "title": "Subscription with the possibility of freezing for 14 days",
- "period": 0,
- "period_unit_id": 0,
- "allow_freeze": true,
- "freeze_limit": 14,
- "is_allow_empty_code": false,
- "is_united_balance": false,
- "united_balance_services_count": 0
}
], - "meta": {
- "count": 1
}
}A list of membership types available at a location can be obtained by requesting the location ID.
The list can be filtered by membership type name by passing the title parameter. Pagination is supported, specified by the page and page_size parameters.
The list is an array of membership types.
Membership type has the following structure:
| Field | Type | Description |
|---|---|---|
| id | number | Membership type identifier |
| title | string | Membership type name |
| allow_freeze | boolean | Is it possible to freeze memberships? true - allowed, false - not allowed |
| freeze limit | number | Maximum total freezing period (days) |
| salon_group_id | number | Identifier of the chain in which the membership type is valid |
| period | number | Membership expiration date (0 if not set) |
| period_unit_id | number | Membership expiration unit (list of possible values, if not set - 0) |
| is_allow_empty_code | boolean | Allow the sale of a membership without a code? true - allow, false - do not allow |
| is_united_balance | boolean | Total or separate membership balance: true - total, false - separate |
| united_balance_services_count | number | Number of visits for total balance |
Measurement units of subscription type validity period
| Meaning | Description |
|---|---|
| 1 | Day |
| 2 | Week |
| 3 | Month |
| 4 | Year |
| location_id required | number location ID |
| title | string Membeship type name |
| page | number Page number |
| page_size | number The number of output lines per page. Maximum 100 |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Conetnt-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 12233,
- "salon_group_id": 123,
- "title": "Subscription with the possibility of freezing for 14 days",
- "period": 0,
- "period_unit_id": 0,
- "allow_freeze": true,
- "freeze_limit": 14,
- "is_allow_empty_code": false,
- "is_united_balance": false,
- "united_balance_services_count": 0
}, - {
- "id": 255789,
- "salon_group_id": 456,
- "title": "Subscription for 6 months",
- "period": 6,
- "period_unit_id": 3,
- "allow_freeze": false,
- "freeze_limit": 0,
- "is_allow_empty_code": false,
- "is_united_balance": false,
- "united_balance_services_count": 0
}
], - "meta": {
- "count": 2
}
}| chain_id required | number Example: 123 Chain ID. |
| created_after | string Example: created_after=2025-09-21T23:00:00.000+03:00 Creation date from (filter by creation date). |
| created_before | string Example: created_before=2025-09-21T23:00:00.000+03:00 Creation date by (filter by creation date). |
| abonements_ids | Array of numbers List of identifiers for the filter. |
| page | number Example: page=1 Page number. |
| count | number Example: count=25 Number of appointments per page. |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
[- {
- "success": true,
- "data": [
- {
- "id": 123,
- "number": 123456,
- "balance_string": "Services (x5)",
- "created_date": "2025-09-21T23:00:00.000+03:00",
- "activated_date": "2025-09-21T23:00:00.000+03:00",
- "is_frozen": false,
- "freeze_period": 0,
- "period": 0,
- "period_unit_id": 1,
- "status": {
- "id": 2,
- "title": "activated",
- "extended_title": "activated"
}, - "is_united_balance": false,
- "united_balance_services_count": 0,
- "balance_container": {
- "links": [
- {
- "count": 9,
- "category": {
- "id": 7182839,
- "category_id": 1,
- "title": "Services"
}
}
]
}, - "type": {
- "id": 896,
- "salon_group_id": 279982,
- "title": "Subscription for everything",
- "period": 0,
- "period_unit_id": 1,
- "allow_freeze": true,
- "freeze_limit": 0,
- "is_allow_empty_code": true,
- "is_united_balance": false,
- "united_balance_services_count": 0,
- "is_code_required": false,
- "balance_container": {
- "links": [
- {
- "count": 10,
- "category": {
- "id": 7182839,
- "category_id": 1,
- "title": "Services"
}
}
]
}
}
}, - {
- "id": 720,
- "number": 208867,
- "balance_string": "Some services (x10)",
- "created_date": "2025-09-21T23:00:00.000+03:00",
- "is_frozen": false,
- "freeze_period": 0,
- "period": 0,
- "period_unit_id": 1,
- "status": {
- "id": 3,
- "title": "Overdue",
- "extended_title": "Overdue"
}, - "is_united_balance": false,
- "united_balance_services_count": 0,
- "balance_container": {
- "links": [
- {
- "count": 10,
- "category": {
- "id": 7182839,
- "category_id": 1,
- "title": "Some services"
}
}
]
}, - "type": {
- "id": 897,
- "salon_group_id": 279982,
- "title": "Subscription for everything",
- "period": 0,
- "period_unit_id": 1,
- "allow_freeze": true,
- "freeze_limit": 0,
- "is_allow_empty_code": true,
- "is_united_balance": false,
- "united_balance_services_count": 0,
- "is_code_required": false,
- "balance_container": {
- "links": [
- {
- "count": 10,
- "category": {
- "id": 7182839,
- "category_id": 1,
- "title": "Some services"
}
}
]
}
}
}
], - "meta": {
- "count": 2
}
}
]Retrieves subscriptions that can be used to create a client schedule for a series of events.
This method returns subscriptions (abonements) that:
Use cases:
Note: Returns subscriptions with their types and availability intervals.
| location_id required | integer Example: 720441 Location ID |
| client_id required | integer Example: 146915197 Client ID |
| activity_id required | integer Example: activity_id=12345 Activity (group event) ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
{- "data": [
- {
- "id": "5248829",
- "type": "loyalty_abonement",
- "attributes": {
- "number": "690348",
- "balance": 10
}, - "relationships": {
- "loyalty_abonement_type": {
- "data": {
- "id": "489159",
- "type": "loyalty_abonement_type"
}
}
}
}
], - "included": [
- { }
]
}Validates a specific subscription for creating activity schedules.
Returns:
Use cases:
Note: Requires schedule_day_ids parameter to check specific dates.
| location_id required | integer Example: 720441 Location ID |
| client_id required | integer Example: 146915197 Client ID |
| abonement_id required | integer Example: 5248829 Subscription instance ID |
| activity_id required | integer Example: activity_id=12345 Activity (group event) ID |
| schedule_day_ids required | string Example: schedule_day_ids=1,2,3,4,5 Comma-separated list of schedule day IDs to check |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
{- "data": {
- "id": "check_1",
- "type": "loyalty_abonement_check",
- "attributes": {
- "last_booking_date": "2026-03-31T23:59:59+00:00",
- "available_visits": 10,
- "can_book_all_days": true,
- "bookable_day_ids": [
- 1,
- 2,
- 3,
- 4,
- 5
]
}
}
}Returns a list of client gift cards by phone
| Attribute | Type | Description |
|---|---|---|
| id | int | Gift card ID |
| number | string | Gift card code |
| balance | decimal | Current balance |
| default_balance | decimal | Initial balance |
| type_id | int | Gift card type identifier |
| status_id | int | Status ID |
| created_date | timestamp | Date of sale |
| expiration_date | datetime | Burn date |
| type | object | Object with gift card type information |
| status | object | An object with information about the current gift card status |
The type array contains the following objects:
| Attribute | Type | Description |
|---|---|---|
| id | int | Gift card type identifier |
| title | string | Type name |
| balance | decimal | Gift card denomination |
| is_multi | boolean | Is it available for multiple debits |
| company_group_id | int | ID of the chain where the certificate type was created |
| item_type_id | int | Restriction on the use of redemption points. 0 - no limit, 1 - services only, 2 - some services + all products, 3 - some services, 4 - products only |
| expiration_type_id | int | The ID of the expiration limit. 0 - unlimited, 1 - fixed date, 2 - fixed term |
| expiration_date | timestamp | Burn date of all gift cards. Populated with expiration_type_id = 1 |
| expiration_timeout | int | Validity period of gift card. Populated with expiration_type_id = 2 |
| expiration_timeout_unit_id | int | Time units. 1 - Day, 2 - Week, 3 - Month, 4 - Year |
| is_allow_empty_code | boolean | Sale without code |
| item_type | object | Object with item_type_id and its name |
| copmany_id required | number Location ID |
| phone required | number Customer phone number |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 409726,
- "number": 888,
- "balance": 9000,
- "default_balance": 9000,
- "type_id": 27841,
- "status_id": 2,
- "created_date": "2025-09-21T23:00:00.000+03:00",
- "expiration_date": "2025-09-21T23:00:00.000+03:00",
- "type": {
- "id": 27841,
- "title": "certificate 9000",
- "balance": 9000,
- "is_multi": true,
- "company_group_id": 128284,
- "item_type_id": 0,
- "expiration_type_id": 2,
- "expiration_timeout": 365,
- "expiration_timeout_unit_id": 1,
- "is_allow_empty_code": false,
- "item_type": {
- "id": 0,
- "title": "No limits"
}
}, - "status": {
- "id": 2,
- "title": "activated"
}
}
], - "meta": {
- "count": 1
}
}Returns a list of authorized user gift cards
| company_id required | number Location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 409726,
- "number": 888,
- "balance": 9000,
- "default_balance": 9000,
- "type_id": 27841,
- "status_id": 2,
- "created_date": "2025-09-21T23:00:00.000+03:00",
- "expiration_date": "2025-09-21T23:00:00.000+03:00",
- "type": {
- "id": 27841,
- "title": "certificate 9000",
- "balance": 9000,
- "is_multi": true,
- "company_group_id": 128284,
- "item_type_id": 0,
- "expiration_type_id": 2,
- "expiration_timeout": 365,
- "expiration_timeout_unit_id": 1,
- "is_allow_empty_code": false,
- "item_type": {
- "id": 0,
- "title": "No limits"
}
}, - "status": {
- "id": 2,
- "title": "activated"
}
}
], - "meta": {
- "count": 1
}
}A list of gift card types available at the location can be obtained by querying the location ID and gift card type IDs.
The list is an array of gift card types.
| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1,
- "title": "Fixed burn date certificate without application restrictions",
- "balance": 10,
- "is_multi": true,
- "company_group_id": 12,
- "item_type_id": 0,
- "expiration_type_id": 1,
- "expiration_date": "2025-09-21T23:00:00.000+03:00",
- "expiration_timeout": 0,
- "expiration_timeout_unit_id": 0,
- "is_allow_empty_code": true
}
], - "meta": {
- "count": 1
}
}A list of gift card types available at a location can be obtained by querying the location ID.
The list can be filtered by the name of the gift card type by passing the title parameter.
Pagination is supported, specified by the page and page_size parameters.
The list is an array of gift card types.
Gift card type has the following structure:
| Field | Type | Description |
|---|---|---|
| id | number | Gift card type identifier |
| title | string | Gift card type name |
| balance | number | Gift card denomination |
| is_multi | boolean | Write-off type: true - multiple write-off, false - single write-off |
| company_group_id | number | ID of the chain where the gift card type is valid |
| item_type_id | number | Application Constraint (list of possible values) |
| expiration_type_id | number | Expiration limit (list of possible values) |
| expiration_date | string | Fixed burn date in ISO8601 format (null if not set) |
| expiration_timeout | number | Gift card validity period from the date of sale (0 if not set) |
| expiration_timeout_unit_id | number | The unit of measurement of the validity period of the gift card from the moment of sale (list of possible values, if not set - 0) |
| is_allow_empty_code | boolean | Allow sale of gift card without code? true - allow, false - do not allow |
| Meaning | Description |
|---|---|
| 0 | Unlimited |
| 1 | Any services without products |
| 2 | Any products without services |
| 3 | Some services without products |
| 4 | Some services and any products |
Gift Card Type Expiration Limit
| Meaning | Description |
|---|---|
| 0 | No expiration date |
| 1 | Fixed date for all instances |
| 2 | Fixed period of validity from the date of sale |
Units of certificate type validity period
| Meaning | Description |
|---|---|
| 1 | Day |
| 2 | Week |
| 3 | Month |
| 4 | Year |
| location_id required | number location ID |
| title | string Gift card type name |
| page | number Page number |
| page_size | number The number of output lines per page. Maximum 100 |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | integer Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1,
- "title": "Fixed burn date certificate without application restrictions",
- "balance": 10,
- "is_multi": true,
- "company_group_id": 12,
- "item_type_id": 0,
- "expiration_type_id": 1,
- "expiration_date": "2025-09-21T23:00:00.000+03:00",
- "expiration_timeout": 0,
- "expiration_timeout_unit_id": 0,
- "is_allow_empty_code": true
}, - {
- "id": 11,
- "title": "Certificate valid for 6 months from the date of sale for any goods without services",
- "balance": 100,
- "is_multi": false,
- "company_group_id": 12,
- "item_type_id": 2,
- "expiration_type_id": 2,
- "expiration_timeout": 6,
- "expiration_timeout_unit_id": 3,
- "is_allow_empty_code": false
}
], - "meta": {
- "count": 2
}
}The method allows you to get a list of promotions that are active for the specified location.
| location_id required | number location ID |
| include | string The first_transaction_date value adds the date of the first stock transaction to the response. |
| type | string Enum: "discount_static" "discount_accumulative_visits" "discount_accumulative_sold" "discount_accumulative_paid" "cashback_static_sold" "cashback_static_paid" "cashback_accumulative_paid" "cashback_accumulative_sold" "cashback_accumulative_paid_visits" "cashback_accumulative_sold_visits" "cashback_sold_visits" "cashback_paid_visits" "package_discount" Promotion type |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer bearer_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 53591,
- "title": "100 rub discount on Altegio Implementation Consultation",
- "type": "discount_static",
- "loyalty_type_id": 1,
- "item_type_id": 4,
- "service_item_type": "custom_allowed",
- "good_item_type": "any_allowed",
- "value_unit_id": 2,
- "value_unit": "amount",
- "group_id": 502054,
- "usage_limit": 0,
- "visit_multiplicity": 1,
- "sold_items_multiplicity": 1,
- "current_package_progress": 0,
- "allowed_usages_amount": 0,
- "expiration_timeout": 0,
- "expiration_timeout_unit": "day",
- "expiration_notification_timeout": 0,
- "params_source_type": "loyalty_card",
- "on_changed_notification_template_id": 0,
- "on_expiration_notification_template_id": 0
}
], - "meta": {
- "count": 1
}
}List of transactions for loyalty promotions for this visit
| visit_id required | number Visit ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
[- {
- "id": 22989715,
- "status_id": 1,
- "amount": 100,
- "type_id": 1,
- "program_id": 12705,
- "card_id": 0,
- "salon_group_id": 145071,
- "item_id": 5048371,
- "item_type_id": 7,
- "item_record_id": 0,
- "goods_transaction_id": 96082477,
- "is_discount": true,
- "is_loyalty_withdraw": false,
- "type": {
- "id": 1,
- "title": "Promotion discount"
}, - "program": {
- "id": 12705,
- "title": "invited",
- "value": 10,
- "loyalty_type_id": 1,
- "item_type_id": 0,
- "value_unit_id": 1,
- "group_id": 145071
}
}, - {
- "id": 22994127,
- "status_id": 1,
- "amount": 100,
- "type_id": 4,
- "program_id": 19044,
- "card_id": 9234863,
- "salon_group_id": 145071,
- "item_id": 0,
- "item_type_id": 0,
- "item_record_id": 0,
- "goods_transaction_id": 0,
- "is_discount": false,
- "is_loyalty_withdraw": false,
- "type": {
- "id": 4,
- "title": "Referral program accrual"
}, - "program": {
- "id": 19044,
- "title": "inviter 2",
- "value": 100,
- "loyalty_type_id": 6,
- "item_type_id": 0,
- "value_unit_id": 2,
- "group_id": 145071
}
}
]1) - location ID1) - product ID (gift card/ membership)| location_id required | number Location ID |
| good_id required | number Product ID (membership/gift card) |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "code": 1
}, - "meta": [ ]
}The amount deducted will not exceed the available bonus balance. If the value is set to 0, no write-off transaction will occur
| location_id required | number Location ID |
| card_id required | number Client card ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| record_id required | number Appointment ID |
| visit_id required | number Visit ID |
| amount required | number Number of points to redeem |
{- "payment_transactions": [ ],
- "loyalty_transactions": [
- {
- "id": 22985556,
- "status_id": 1,
- "amount": 20,
- "type_id": 1,
- "program_id": 20802,
- "card_id": 9223622,
- "salon_group_id": 145071,
- "item_id": 5048384,
- "item_type_id": 7,
- "item_record_id": 0,
- "goods_transaction_id": 96063258,
- "is_discount": true,
- "is_loyalty_withdraw": false,
- "type": {
- "id": 1,
- "title": "Promotion Discount"
}
}
], - "kkm_transaction_details_container": {
- "last_operation_type": 1,
- "transactions": [ ]
}, - "items": [
- {
- "id": 96063258,
- "item_id": 5048384,
- "item_type_id": 7,
- "record_id": 0,
- "item_title": "test two",
- "amount": 1,
- "first_cost": 20,
- "manual_cost": 20,
- "discount": 0,
- "cost": 20,
- "master_id": 548096,
- "good_id": 5048384,
- "service_id": 0,
- "event_id": 0,
- "is_service": false,
- "is_event": false,
- "is_good": true
}, - {
- "id": 0,
- "item_id": 2560779,
- "item_type_id": 1,
- "record_id": 140878948,
- "item_title": "Deep bikini",
- "amount": 1,
- "first_cost": 3000,
- "manual_cost": 3000,
- "discount": 0,
- "cost": 3000,
- "master_id": 140878948,
- "good_id": 0,
- "service_id": 2560779,
- "event_id": 0,
- "is_service": true,
- "is_event": false,
- "is_good": false
}
]
}Cancellation of write-off from the loyalty card.
| location_id required | number Location ID |
| card_id required | number Client card ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| record_id required | number Appointment ID |
| visit_id required | number Visit ID |
{- "payment_transactions": [ ],
- "loyalty_transactions": [ ],
- "kkm_transaction_details_container": {
- "last_operation_type": 1,
- "transactions": [ ]
}, - "items": [
- {
- "id": 96063258,
- "item_id": 5048384,
- "item_type_id": 7,
- "record_id": 0,
- "item_title": "test two",
- "amount": 1,
- "first_cost": 20,
- "manual_cost": 20,
- "discount": 0,
- "cost": 20,
- "master_id": 548096,
- "good_id": 5048384,
- "service_id": 0,
- "event_id": 0,
- "is_service": false,
- "is_event": false,
- "is_good": true
}, - {
- "id": 0,
- "item_id": 2560779,
- "item_type_id": 1,
- "record_id": 140878948,
- "item_title": "Deep bikini",
- "amount": 1,
- "first_cost": 3000,
- "manual_cost": 3000,
- "discount": 0,
- "cost": 3000,
- "master_id": 140878948,
- "good_id": 0,
- "service_id": 2560779,
- "event_id": 0,
- "is_service": true,
- "is_event": false,
- "is_good": false
}
]
}Applying a promotion to a visit, it only makes sense if there is a visit
| location_id required | number Location ID |
| card_id required | number Client card ID |
| program_id required | number ID of the promotion linked to the card |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| record_id required | number Appointment ID |
| visit_id required | number Visit ID |
{- "record_id": 0,
- "visit_id": 0
}{- "payment_transactions": [ ],
- "loyalty_transactions": [
- {
- "id": 22985556,
- "status_id": 1,
- "amount": 20,
- "type_id": 1,
- "program_id": 20802,
- "card_id": 9223622,
- "salon_group_id": 145071,
- "item_id": 5048384,
- "item_type_id": 7,
- "item_record_id": 0,
- "goods_transaction_id": 96063258,
- "is_discount": true,
- "is_loyalty_withdraw": false,
- "type": {
- "id": 1,
- "title": "Promotion Discount"
}
}
], - "kkm_transaction_details_container": {
- "last_operation_type": 1,
- "transactions": [ ]
}, - "items": [
- {
- "id": 96063258,
- "item_id": 5048384,
- "item_type_id": 7,
- "record_id": 0,
- "item_title": "test two",
- "amount": 1,
- "first_cost": 20,
- "manual_cost": 20,
- "discount": 0,
- "cost": 20,
- "master_id": 548096,
- "good_id": 5048384,
- "service_id": 0,
- "event_id": 0,
- "is_service": false,
- "is_event": false,
- "is_good": true
}, - {
- "id": 0,
- "item_id": 2560779,
- "item_type_id": 1,
- "record_id": 140878948,
- "item_title": "Deep bikini",
- "amount": 1,
- "first_cost": 3000,
- "manual_cost": 3000,
- "discount": 0,
- "cost": 3000,
- "master_id": 140878948,
- "good_id": 0,
- "service_id": 2560779,
- "event_id": 0,
- "is_service": true,
- "is_event": false,
- "is_good": false
}
]
}Cancellation of the promotion applied to the visit.
| location_id required | number Location ID |
| card_id required | number Client card ID |
| program_id required | number ID of the promotion linked to the card |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| record_id required | number Appointment ID |
| visit_id required | number Visit ID |
{- "payment_transactions": [ ],
- "loyalty_transactions": [ ],
- "kkm_transaction_details_container": {
- "last_operation_type": 1,
- "transactions": [ ]
}, - "items": [
- {
- "id": 96063258,
- "item_id": 5048384,
- "item_type_id": 7,
- "record_id": 0,
- "item_title": "test two",
- "amount": 1,
- "first_cost": 20,
- "manual_cost": 20,
- "discount": 0,
- "cost": 20,
- "master_id": 548096,
- "good_id": 5048384,
- "service_id": 0,
- "event_id": 0,
- "is_service": false,
- "is_event": false,
- "is_good": true
}, - {
- "id": 0,
- "item_id": 2560779,
- "item_type_id": 1,
- "record_id": 140878948,
- "item_title": "Deep bikini",
- "amount": 1,
- "first_cost": 3000,
- "manual_cost": 3000,
- "discount": 0,
- "cost": 3000,
- "master_id": 140878948,
- "good_id": 0,
- "service_id": 2560779,
- "event_id": 0,
- "is_service": true,
- "is_event": false,
- "is_good": false
}
]
}Applying a referral program to a visit
| location_id required | number Location ID |
| chain_id required | number ID of the chain where the referral program is configured |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| record_id required | number Appointment ID |
| visit_id required | number Visit ID |
| referrer_phone required | number Phone number of the inviter |
{- "payment_transactions": [ ],
- "loyalty_transactions": [
- {
- "id": 22989715,
- "status_id": 1,
- "amount": 100,
- "type_id": 1,
- "program_id": 12705,
- "card_id": 0,
- "salon_group_id": 145071,
- "item_id": 5048371,
- "item_type_id": 7,
- "item_record_id": 0,
- "goods_transaction_id": 96082477,
- "is_discount": true,
- "is_loyalty_withdraw": false,
- "type": {
- "id": 1,
- "title": "Promotion discount"
}
}
], - "kkm_transaction_details_container": {
- "last_operation_type": 1,
- "transactions": [ ]
}, - "items": [
- {
- "id": 96082477,
- "item_id": 5048371,
- "item_type_id": 7,
- "record_id": 0,
- "item_title": "test",
- "amount": 1,
- "first_cost": 1000,
- "manual_cost": 1000,
- "discount": 0,
- "cost": 1000,
- "master_id": 548042,
- "good_id": 5048371,
- "service_id": 0,
- "event_id": 0,
- "is_service": false,
- "is_event": false,
- "is_good": true
}
]
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "id": 1,
- "salon_id": 4523464,
- "staff_limit": 5,
- "deactivation_date": "08.11.2019",
- "start_date": "07.05.2025",
- "name": "Start",
- "active": 1,
- "options": [
- {
- "id": 3,
- "title": "Online payment"
}
]
}, - "meta": [ ]
}The method allows location owner to get mutual settlements of a team member grouped by date.
| location_id required | number Example: 123 ID of a location. |
| team_member_id required | integer Example: 123 ID of a team member. |
| date_from required | string Example: date_from=2023-03-01 Start from date. |
| date_to required | string Example: date_to=2023-03-31 End to date. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "payroll_daily": [
- {
- "date": "2023-03-01",
- "payroll_sum": {
- "income": 0,
- "expense": 0,
- "balance": 240746.48
}
}
], - "currency": {
- "symbol": "$"
}
}, - "meta": {
- "count": 1
}
}The method allows location owner to get mutual settlements of a team member.
| location_id required | number Example: 123 ID of a location. |
| team_member_id required | integer Example: 123 ID of a team member. |
| date_from required | string Example: date_from=2023-03-01 Start from date. |
| date_to required | string Example: date_to=2023-03-31 End to date. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "total_sum": {
- "income": 0,
- "expense": 0,
- "balance": 240746.48
}, - "currency": {
- "symbol": "$"
}
}, - "meta": [ ]
}The method allows you to get salary calculation schemes count for a team member before trying to obtain calculation data.
| location_id required | number Example: 123 ID of a location. |
| team_member_id required | integer Example: 123 ID of a team member. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "staff_id": 1112684,
- "salary_schemes_count": 2
}, - "meta": [ ]
}The method allows location owner to search payroll calculations for the period for a team member.
| location_id required | number Example: 123 ID of a location. |
| team_member_id required | integer Example: 123 ID of a team member. |
| date_from required | string Example: date_from=2023-03-01 Start from date. |
| date_to required | string Example: date_to=2023-03-31 End to date. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": [
- {
- "id": 123,
- "company_id": 456,
- "staff_id": 789,
- "amount": 1000,
- "status": "confirmed",
- "date_create": "2023-03-03",
- "date_from": "2023-03-01",
- "date_to": "2023-03-02",
- "comment": "Calculation per day"
}
], - "meta": {
- "count": 1
}
}The method allows location owner to get details of a specific payroll calculation.
| location_id required | number Example: 123 ID of a location. |
| team_member_id required | integer Example: 123 ID of a team member. |
| calculation_id required | number Example: 789 ID of a salary calculation. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "id": 123,
- "company_id": 456,
- "staff_id": 789,
- "amount": 1000,
- "status": "confirmed",
- "date_create": "2023-03-03",
- "date_from": "2023-03-01",
- "date_to": "2023-03-02",
- "comment": "Calculation per day",
- "salary_items": [
- {
- "date": "2023-03-01",
- "time": "12:00",
- "item_id": 123,
- "item_type_slug": "record",
- "salary_sum": 10,
- "record_id": 123,
- "client_id": 456,
- "cost": 1000,
- "paid": {
- "money_sum": 900,
- "discount_sum": 30,
- "bonus_sum": 70,
- "certificate_sum": 0,
- "abonement_sum": 0,
- "deposit_sum": 0
}, - "salary_calculation_info": {
- "criteria_title": "Applied calculation criterium",
- "param_title": "Applied calculation parameter",
- "scheme_title": "Applied calculation scheme"
}, - "targets": [
- {
- "target_type_slug": "service",
- "target_id": 321,
- "title": "Cuttings",
- "cost": 1000,
- "net_cost": 500,
- "salary_sum": 10,
- "salary_promotion_sum": 1,
- "salary_calculation": {
- "type_slug": "percent",
- "value": 1.5,
- "description": "1.5% of cost"
}
}
], - "salary_discrepancy": {
- "reason": "updated_rule",
- "actual_sum": 15,
- "difference_sum": 5
}
}
], - "currency": {
- "id": 2,
- "iso": "USD",
- "name": "US Dollar",
- "symbol": "$",
- "is_symbol_after_amount": false
}
}, - "meta": [ ]
}The method allows location owner to get the calculation for the period for a team member grouped by date.
| location_id required | number Example: 123 ID of a location. |
| team_member_id required | integer Example: 123 ID of a team member. |
| date_from required | string Example: date_from=2023-03-01 Start from date. |
| date_to required | string Example: date_to=2023-03-31 End to date. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "period_calculation_daily": [
- {
- "date": "2023-03-01",
- "period_calculation": {
- "working_days_count": 32,
- "working_hours_count": 353,
- "group_services_count": 3,
- "services_count": 0,
- "services_sum": 0,
- "goods_sales_count": 0,
- "goods_sales_sum": 0,
- "total_sum": 0,
- "salary": 70600
}
}
], - "currency": {
- "symbol": "$"
}
}, - "meta": {
- "count": 1
}
}The method allows location owner to get the calculation for the period for a team member.
| location_id required | number Example: 123 ID of a location. |
| team_member_id required | integer Example: 123 ID of a team member. |
| date_from required | string Example: date_from=2023-03-01 Start from date. |
| date_to required | string Example: date_to=2023-03-31 End to date. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "working_days_count": 32,
- "working_hours_count": 353,
- "group_services_count": 3,
- "services_count": 0,
- "services_sum": 0,
- "goods_sales_count": 0,
- "goods_sales_sum": 0,
- "total_sum": 0,
- "salary": 70600,
- "currency": {
- "symbol": "$"
}
}, - "meta": [ ]
}The method allows you to get mutual settlements of a specific team member. In the user's access rights, the checkbox "Access to payroll only for a specific team member" must be specified.
| location_id required | number Example: 123 ID of a location. |
| team_member_id required | integer Example: 123 ID of a team member. |
| date_from required | string Example: date_from=2023-03-01 Start from date. |
| date_to required | string Example: date_to=2023-03-31 End to date. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "total_sum": {
- "income": 0,
- "expense": 0,
- "balance": 240746.48
}, - "currency": {
- "symbol": "$"
}
}, - "meta": [ ]
}The method allows you to get the calculation for the period for a specific team member. In the user's access rights, the checkbox "Access to payroll only for a specific team member" must be checked.
| location_id required | number Example: 123 ID of a location. |
| team_member_id required | integer Example: 123 ID of a team member. |
| date_from required | string Example: date_from=2023-03-01 Start from date. |
| date_to required | string Example: date_to=2023-03-31 End to date. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": {
- "working_days_count": 32,
- "working_hours_count": 353,
- "group_services_count": 3,
- "services_count": 0,
- "services_sum": 0,
- "goods_sales_count": 0,
- "goods_sales_sum": 0,
- "total_sum": 0,
- "salary": 70600,
- "currency": {
- "symbol": "$"
}
}, - "meta": [ ]
}The method allows you to get own salary calculation schemes for a specific team member. In the user's access rights, the checkbox "Access to payroll only for a specific team member" must be specified.
| location_id required | number Example: 123 ID of a location. |
| team_member_id required | integer Example: 123 ID of a team member. |
| Accept required | string Example: application/vnd.api.v2+json Should be equal to |
| Content-Type required | string Example: application/json Should be equal to |
{- "success": true,
- "data": [
- {
- "staff_id": 1112684,
- "date_start": "2025-09-21T23:00:00.000+03:00",
- "date_end": "2025-09-21T23:00:00.000+03:00",
- "salary_scheme": {
- "id": 28681,
- "title": "Service 20%"
}
}, - {
- "staff_id": 1112684,
- "date_start": "2025-09-21T23:00:00.000+03:00",
- "salary_scheme": {
- "id": 28680,
- "title": "Service 30%"
}
}
], - "meta": {
- "count": 2
}
}| field_category required | string Example: record Field category.
|
| location_id required | integer location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1,
- "salon_id": 1,
- "custom_field": {
- "id": 1,
- "code": "my_text_field",
- "show_in_ui": true,
- "title": "test field",
- "user_can_edit": true,
- "type": {
- "code": "text",
- "title": "Text"
}
}
}
], - "meta": [ ]
}To add a field, the user must be part of the Chain associated with the location and have the appropriate access rights in the following section:
Settings → Access → Additional Fields → Create additional fields
| field_category required | string Example: record Field category.
|
| location_id required | integer location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| type required | string Field type |
| code required | string Field ID |
| title required | string Field name |
| user_can_edit required | boolean Can the user edit the field |
| show_in_ui required | boolean Whether to show the field in the interface |
{- "type": "text",
- "code": "my_text_field",
- "title": "test field",
- "user_can_edit": true,
- "show_in_ui": true
}{- "success": true,
- "data": {
- "id": 1,
- "salon_id": 1,
- "custom_field": {
- "id": 1,
- "code": "my_text_field",
- "show_in_ui": true,
- "title": "test field",
- "user_can_edit": true,
- "type": {
- "code": "text",
- "title": "Text"
}
}
}, - "meta": [ ]
}To update a field, the user must be part of the Chain associated with the location and have the appropriate access rights in the following section
Settings → Access → Additional Fields → Modify additional fields
| field_category required | string Example: record Field category.
|
| location_id required | integer location ID |
| field_id required | integer field ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| type required | string Field type |
| code required | string Field ID |
| title required | string Field name |
| user_can_edit required | boolean Can the user edit the field |
| show_in_ui required | boolean Whether to show the field in the interface |
{- "type": "text",
- "code": "my_text_field",
- "title": "test field",
- "user_can_edit": true,
- "show_in_ui": true
}{- "success": true,
- "data": null,
- "meta": {
- "message": "Saved"
}
}To remove a field, the user must be part of the Chain associated with the location and have the appropriate access rights in the following section:
Settings → Access → Additional Fields → Remove additional fields
| field_category required | string Example: record Field category.
|
| location_id required | integer location ID |
| field_id required | integer field ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": null,
- "meta": {
- "message": "Deleted"
}
}To use the api and activate access to the settings in the user interface, you need to activate the integration by sending the "Enable integration" request. After a successful connection, access to the section with routing settings will be opened in the chain user interface.
To disable the integration, you can use the "Disable integration" method. After the integration is disabled, access to the user interface settings section is closed, the requests "Call notification" and "Call information saving" are not processed.
To display notifications about an incoming call, the "Call notification" method is used, the call type ("incoming", "outgoing", "internal") is specified in the parameters, but currently notifications are displayed only for the "incoming" value. Notifications are displayed for users defined based on routing settings. When specifying the "user" and "diversion" parameters at the same time, "user" is the priority when searching for routes.
The information about the call is automatically saved to the chain history and to the history of chain locations in accordance with the call routing settings.
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
Request bodies
| command required | string Slug of operation 'setup' |
| type required | string Operation type, in this case 'enable' |
| crm_token required | string CRM-token from the Telephony-Integration in the client's chain section |
{- "command": "setup",
- "type": "enable",
- "crm_token": "7cf262d6-1656-43f9-86ac-2826bdc125d2"
}{- "success": true,
- "meta": {
- "message": "Accepted"
}
}This endpoint is designed to get a list of calls in a location, taking into account filters and pagination
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| salon_id required | number Location ID. |
| date_from required | string Sample start date. |
| date_to required | string Sample start end. |
| phone | string Phone number. |
| types | Array of strings Items Enum: "incoming" "outgoing" "internal" Call types list |
| statuses | Array of strings Items Enum: "success" "missed" "cancel" "busy" "notallowed" "notavailable" "notfound" Call statuses list |
| page | number Page number |
| limit | number <= 1000 Amount of elements on page |
{- "salon_id": 615243,
- "date_from": "2023-01-01",
- "date_to": "2023-02-01",
- "phone": 79111234567,
- "types": [
- "incoming",
- "internal"
], - "statuses": [
- "success",
- "cancel"
], - "page": 1,
- "limit": 25
}{- "success": true,
- "data": [
- {
- "id": 8923525,
- "client_id": 51342134,
- "caller_phone": 791112345678,
- "duration": 244,
- "status": "success",
- "type": "outgoing",
- "call_date": "2023-01-17T23:52:21+00:00"
}, - {
- "id": 66795308,
- "client_id": 0,
- "caller_phone": 791112345678,
- "record_link": "",
- "duration": 0,
- "status": "missed",
- "type": "incoming",
- "call_date": "2023-01-17T12:31:12+00:00"
}
]
}The location chain object has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | Location chain ID |
| title | string | Location chain name |
| locations | array | List of chain locations |
| access | object | Object with access rights for chain management |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 509,
- "title": "Chain of salons in New York",
- "companies": [
- {
- "id": 38726,
- "title": "Location in New York"
}, - {
- "id": 39287,
- "title": "Location in New York"
}
], - "access": {
- "settings_access": "1",
- "clients_access": "1",
- "users_access": "1",
- "loyalty_access": "1",
- "loyalty_cards_manual_transactions_access": "1",
- "chain_services_access": "1"
}
}, - {
- "id": 508,
- "title": "Chain of salons in New York",
- "companies": [
- {
- "id": 38545,
- "title": "Location in New York"
}, - {
- "id": 38704,
- "title": "Location in New York"
}
], - "access": {
- "settings_access": "1",
- "clients_access": "1",
- "users_access": "1",
- "loyalty_access": "1",
- "loyalty_cards_manual_transactions_access": "1",
- "chain_services_access": "1"
}
}
]
}43877) - ID of the location chain| chain_id required | number Chain ID |
| phone required | string Example: phone=14264037640 Phone to filter clients, required parameter |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token.User user_token |
{- "success": true,
- "data": {
- "salon_group_id": 312,
- "phone": "+1-315-555-0175",
- "clients": [
]
}, - "meta": [ ]
}Chain-level loyalty program management including programs, transactions, and message templates.
Retrieves all subscription types available in the chain.
Note: Requires chain-level permissions.
| chain_id required | integer Example: 706028 Chain ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
{- "success": true,
- "data": [
- {
- "id": 777,
- "salon_group_id": 333,
- "category_id": null,
- "title": "10-visit subscription",
- "period": 10,
- "period_unit_id": 3,
- "allow_freeze": true,
- "freeze_limit": 30,
- "freeze_limit_unit_id": 1,
- "is_booking_when_frozen_allowed": false,
- "is_allow_empty_code": false,
- "is_united_balance": true,
- "is_united_balance_unlimited": false,
- "is_code_required": false,
- "balance_edit_type_id": 1,
- "cost": 1000,
- "chain_price_min": 1000,
- "chain_price_max": 1500,
- "is_chain": true,
- "expiration_type_id": 1,
- "expiration_type_title": "On sale",
- "category": null,
- "weight": 0,
- "abonements_count": 0,
- "is_online_sale_enabled": false,
- "online_sale_title": "10-visit subscription",
- "online_sale_description": "Sold online with discount",
- "online_sale_price": 550,
- "service_price_correction": true,
- "united_balance_services_count": 10,
- "autoactivation_time": 10,
- "autoactivation_time_unit_id": 1,
- "attached_location_ids": [
- 1,
- 2,
- 3
], - "attached_salon_ids": [
- 1,
- 2,
- 3
], - "is_archived": false,
- "date_archived": null,
- "availability": [
- {
- "week_days": [
- 1,
- 2,
- 3
], - "intervals": [
- {
- "from": 3600,
- "to": 7200
}, - {
- "from": 10800,
- "to": 14400
}
]
}, - {
- "week_days": [
- 6,
- 7
], - "intervals": [
- {
- "from": 36000,
- "to": 72000
}
]
}
], - "balance_container": {
- "links": [
- {
- "count": 10,
- "is_unlimited": false,
- "service": {
- "id": 45,
- "is_category": false,
- "category_id": 90,
- "title": "Service in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": {
- "id": 90,
- "is_category": true,
- "category_id": 1,
- "title": "First service category in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": [
- { }
]
}
}, - "category": {
- "id": 91,
- "is_category": true,
- "category_id": 1,
- "title": "Second service category in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": [
- { }
]
}
}
]
}
}
], - "meta": {
- "total_count": 5
}
}Creates a new subscription type at the chain level. Subscription types define reusable packages (e.g., "10 visits", "Monthly unlimited") that can be sold across multiple locations in the chain.
Important API Differences:
services and service_categories must be objects (key-value pairs), not arrays{"service_id": count} not [service_id]Note: Requires chain-level permissions.
| chain_id required | integer Example: 1 Chain ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| title required | string Subscription type name |
| salon_group_id required | integer Chain ID (API uses salon_group_id parameter name) |
| cost required | number <float> Subscription price |
| location_ids | Array of integers List of location IDs where this subscription type is available |
| period | integer Validity period duration |
| period_unit_id | integer Enum: 1 2 3 4 Period unit type: 1 = day, 2 = week, 3 = month, 4 = year |
| allow_freeze | boolean Default: false Whether subscription can be frozen |
| freeze_limit | integer Maximum total freeze period |
| freeze_limit_unit_id | integer Enum: 1 2 3 4 Freeze period unit: 1 = day, 2 = week, 3 = month, 4 = year |
| service_price_correction | boolean Default: false Whether service price can be adjusted when using subscription |
| expiration_type_id | integer Enum: 1 2 3 Activation type: 1 = on sale, 2 = on first use, 3 = from specific date |
| is_allow_empty_code | boolean Default: true Personal vs shared subscription.
|
| is_united_balance required | boolean Balance type: true = unified balance, false = separate balance |
| united_balance_services_count required | integer Number of visits for unified balance |
| balance_edit_type_id | integer Enum: 0 1 2 Balance adjustment permission: 0 = prohibited, 1 = only at sale location, 2 = at all locations |
| is_online_sale_enabled | boolean Default: false Whether online sale is enabled. If true, online_sale_price becomes required. |
| online_sale_title | string Subscription title for online sale |
| online_sale_description | string Subscription description for online sale |
| online_sale_price | number <float> Price for online sale (required if is_online_sale_enabled = true) |
| online_image | string Image URL for online sale |
| autoactivation_period | integer Maximum autoactivation period |
| autoactivation_time_in_days | integer Time units for autoactivation |
| autoactivation_time_unit_id | integer Enum: 1 2 3 4 Autoactivation time unit: 1 = days, 2 = weeks, 3 = months, 4 = years |
| is_archived | boolean Default: false Whether subscription type is archived |
| category | string Default: "standard" Subscription category type (always "standard") |
| salon_ids | Array of integers List of location IDs where this subscription type is available |
object Object with service IDs as keys and usage count as values. For separate balance: count = number of visits per service. For unified balance: use empty object {}. Important: This is an object (key-value pairs), NOT an array. | |
required | object Object with service category IDs as keys and usage count as values. For separate balance: count = number of visits per category. For unified balance: count value is ignored (set to any number or 0). Important: This is an object (key-value pairs), NOT an array. |
| delete_online_image | boolean Default: false Whether to delete existing online sale image |
Array of objects Time-based availability rules. Empty array = available anytime. |
{- "title": "Fitness 10-pack",
- "salon_group_id": 1,
- "cost": 500,
- "location_ids": [
- 123,
- 456
], - "period": 30,
- "period_unit_id": 3,
- "allow_freeze": true,
- "freeze_limit": 14,
- "freeze_limit_unit_id": 1,
- "service_price_correction": true,
- "expiration_type_id": 1,
- "is_allow_empty_code": true,
- "is_united_balance": false,
- "united_balance_services_count": 10,
- "balance_edit_type_id": 2,
- "is_online_sale_enabled": false,
- "online_sale_title": "Fitness Pack - 10 sessions",
- "online_sale_description": "Perfect for beginners. Valid for 3 months.",
- "online_sale_price": 450,
- "autoactivation_period": 3,
- "autoactivation_time_in_days": 10,
- "autoactivation_time_unit_id": 1,
- "is_archived": false,
- "category": "standard",
- "salon_ids": [
- 720441,
- 703092
], - "services": {
- "13160808": 5,
- "13160809": 3
}, - "service_categories": {
- "13160806": 10
}, - "delete_online_image": false,
- "availability": [
- {
- "week_days": [
- 1,
- 2,
- 3
], - "intervals": [
- {
- "from": 28800,
- "to": 64800
}
]
}
]
}{- "success": true,
- "data": {
- "id": 777,
- "salon_group_id": 333,
- "category_id": null,
- "title": "10-visit subscription",
- "period": 10,
- "period_unit_id": 3,
- "allow_freeze": true,
- "freeze_limit": 30,
- "freeze_limit_unit_id": 1,
- "is_booking_when_frozen_allowed": false,
- "is_allow_empty_code": false,
- "is_united_balance": true,
- "is_united_balance_unlimited": false,
- "is_code_required": false,
- "balance_edit_type_id": 1,
- "cost": 1000,
- "chain_price_min": 1000,
- "chain_price_max": 1500,
- "is_chain": true,
- "expiration_type_id": 1,
- "expiration_type_title": "On sale",
- "category": null,
- "weight": 0,
- "abonements_count": 0,
- "is_online_sale_enabled": false,
- "online_sale_title": "10-visit subscription",
- "online_sale_description": "Sold online with discount",
- "online_sale_price": 550,
- "service_price_correction": true,
- "united_balance_services_count": 10,
- "autoactivation_time": 10,
- "autoactivation_time_unit_id": 1,
- "attached_location_ids": [
- 1,
- 2,
- 3
], - "attached_salon_ids": [
- 1,
- 2,
- 3
], - "is_archived": false,
- "date_archived": null,
- "availability": [
- {
- "week_days": [
- 1,
- 2,
- 3
], - "intervals": [
- {
- "from": 3600,
- "to": 7200
}, - {
- "from": 10800,
- "to": 14400
}
]
}, - {
- "week_days": [
- 6,
- 7
], - "intervals": [
- {
- "from": 36000,
- "to": 72000
}
]
}
], - "balance_container": {
- "links": [
- {
- "count": 10,
- "is_unlimited": false,
- "service": {
- "id": 45,
- "is_category": false,
- "category_id": 90,
- "title": "Service in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": {
- "id": 90,
- "is_category": true,
- "category_id": 1,
- "title": "First service category in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": [
- { }
]
}
}, - "category": {
- "id": 91,
- "is_category": true,
- "category_id": 1,
- "title": "Second service category in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": [
- { }
]
}
}
]
}
}, - "meta": [ ]
}Retrieves detailed information about a specific subscription type.
Note: Requires chain-level permissions.
| chain_id required | integer Example: 1 Chain ID |
| loyalty_abonement_type_id required | integer Example: 468039 Subscription type ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
{- "success": true,
- "data": {
- "id": 777,
- "salon_group_id": 333,
- "category_id": null,
- "title": "10-visit subscription",
- "period": 10,
- "period_unit_id": 3,
- "allow_freeze": true,
- "freeze_limit": 30,
- "freeze_limit_unit_id": 1,
- "is_booking_when_frozen_allowed": false,
- "is_allow_empty_code": false,
- "is_united_balance": true,
- "is_united_balance_unlimited": false,
- "is_code_required": false,
- "balance_edit_type_id": 1,
- "cost": 1000,
- "chain_price_min": 1000,
- "chain_price_max": 1500,
- "is_chain": true,
- "expiration_type_id": 1,
- "expiration_type_title": "On sale",
- "category": null,
- "weight": 0,
- "abonements_count": 0,
- "is_online_sale_enabled": false,
- "online_sale_title": "10-visit subscription",
- "online_sale_description": "Sold online with discount",
- "online_sale_price": 550,
- "service_price_correction": true,
- "united_balance_services_count": 10,
- "autoactivation_time": 10,
- "autoactivation_time_unit_id": 1,
- "attached_location_ids": [
- 1,
- 2,
- 3
], - "attached_salon_ids": [
- 1,
- 2,
- 3
], - "is_archived": false,
- "date_archived": null,
- "availability": [
- {
- "week_days": [
- 1,
- 2,
- 3
], - "intervals": [
- {
- "from": 3600,
- "to": 7200
}, - {
- "from": 10800,
- "to": 14400
}
]
}, - {
- "week_days": [
- 6,
- 7
], - "intervals": [
- {
- "from": 36000,
- "to": 72000
}
]
}
], - "balance_container": {
- "links": [
- {
- "count": 10,
- "is_unlimited": false,
- "service": {
- "id": 45,
- "is_category": false,
- "category_id": 90,
- "title": "Service in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": {
- "id": 90,
- "is_category": true,
- "category_id": 1,
- "title": "First service category in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": [
- { }
]
}
}, - "category": {
- "id": 91,
- "is_category": true,
- "category_id": 1,
- "title": "Second service category in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": [
- { }
]
}
}
]
}
}, - "meta": [ ]
}Updates an existing subscription type. You can update basic information (title, cost, period) without modifying the service/category links.
Note: To preserve existing services, pass empty arrays for
services and service_categories fields.
| chain_id required | integer Example: 1 Chain ID |
| loyalty_abonement_type_id required | integer Example: 468039 Subscription type ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| title required | string Subscription type name |
| salon_group_id required | integer Chain ID (API uses salon_group_id parameter name) |
| cost required | number <float> Subscription price |
| location_ids | Array of integers List of location IDs where this subscription type is available |
| period | integer Validity period duration |
| period_unit_id | integer Enum: 1 2 3 4 Period unit type: 1 = day, 2 = week, 3 = month, 4 = year |
| allow_freeze | boolean Default: false Whether subscription can be frozen |
| freeze_limit | integer Maximum total freeze period |
| freeze_limit_unit_id | integer Enum: 1 2 3 4 Freeze period unit: 1 = day, 2 = week, 3 = month, 4 = year |
| service_price_correction | boolean Default: false Whether service price can be adjusted when using subscription |
| expiration_type_id | integer Enum: 1 2 3 Activation type: 1 = on sale, 2 = on first use, 3 = from specific date |
| is_allow_empty_code | boolean Default: true Personal vs shared subscription.
|
| is_united_balance required | boolean Balance type: true = unified balance, false = separate balance |
| united_balance_services_count required | integer Number of visits for unified balance |
| balance_edit_type_id | integer Enum: 0 1 2 Balance adjustment permission: 0 = prohibited, 1 = only at sale location, 2 = at all locations |
| is_online_sale_enabled | boolean Default: false Whether online sale is enabled |
| online_sale_title | string Subscription title for online sale |
| online_sale_description | string Subscription description for online sale |
| online_sale_price | number <float> Price for online sale |
| online_image | string Image URL for online sale |
| autoactivation_period | integer Maximum autoactivation period |
| autoactivation_time_in_days | integer Time units for autoactivation |
| autoactivation_time_unit_id | integer Enum: 1 2 3 4 Autoactivation time unit: 1 = days, 2 = weeks, 3 = months, 4 = years |
| is_archived | boolean Default: false Whether subscription type is archived |
| services | Array of integers List of service IDs. Pass empty array to preserve existing services. |
| service_categories required | Array of integers List of service category IDs. Pass empty array to preserve existing categories. |
Array of objects Time-based availability rules. Empty array = available anytime. |
{- "title": "Updated Fitness 10-pack",
- "salon_group_id": 1,
- "cost": 550,
- "location_ids": [
- 123,
- 456
], - "period": 90,
- "period_unit_id": 1,
- "allow_freeze": true,
- "freeze_limit": 30,
- "freeze_limit_unit_id": 1,
- "service_price_correction": true,
- "expiration_type_id": 1,
- "is_allow_empty_code": true,
- "is_united_balance": false,
- "united_balance_services_count": 10,
- "balance_edit_type_id": 2,
- "is_online_sale_enabled": false,
- "online_sale_title": "Updated Fitness Pack",
- "online_sale_description": "Updated description",
- "online_sale_price": 500,
- "autoactivation_period": 3,
- "autoactivation_time_in_days": 10,
- "autoactivation_time_unit_id": 1,
- "is_archived": false,
- "services": [ ],
- "service_categories": [ ],
- "availability": [
- {
- "week_days": [
- 1,
- 2,
- 3
], - "intervals": [
- {
- "from": 28800,
- "to": 64800
}
]
}
]
}{- "success": true,
- "data": {
- "id": 777,
- "salon_group_id": 333,
- "category_id": null,
- "title": "10-visit subscription",
- "period": 10,
- "period_unit_id": 3,
- "allow_freeze": true,
- "freeze_limit": 30,
- "freeze_limit_unit_id": 1,
- "is_booking_when_frozen_allowed": false,
- "is_allow_empty_code": false,
- "is_united_balance": true,
- "is_united_balance_unlimited": false,
- "is_code_required": false,
- "balance_edit_type_id": 1,
- "cost": 1000,
- "chain_price_min": 1000,
- "chain_price_max": 1500,
- "is_chain": true,
- "expiration_type_id": 1,
- "expiration_type_title": "On sale",
- "category": null,
- "weight": 0,
- "abonements_count": 0,
- "is_online_sale_enabled": false,
- "online_sale_title": "10-visit subscription",
- "online_sale_description": "Sold online with discount",
- "online_sale_price": 550,
- "service_price_correction": true,
- "united_balance_services_count": 10,
- "autoactivation_time": 10,
- "autoactivation_time_unit_id": 1,
- "attached_location_ids": [
- 1,
- 2,
- 3
], - "attached_salon_ids": [
- 1,
- 2,
- 3
], - "is_archived": false,
- "date_archived": null,
- "availability": [
- {
- "week_days": [
- 1,
- 2,
- 3
], - "intervals": [
- {
- "from": 3600,
- "to": 7200
}, - {
- "from": 10800,
- "to": 14400
}
]
}, - {
- "week_days": [
- 6,
- 7
], - "intervals": [
- {
- "from": 36000,
- "to": 72000
}
]
}
], - "balance_container": {
- "links": [
- {
- "count": 10,
- "is_unlimited": false,
- "service": {
- "id": 45,
- "is_category": false,
- "category_id": 90,
- "title": "Service in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": {
- "id": 90,
- "is_category": true,
- "category_id": 1,
- "title": "First service category in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": [
- { }
]
}
}, - "category": {
- "id": 91,
- "is_category": true,
- "category_id": 1,
- "title": "Second service category in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": [
- { }
]
}
}
]
}
}, - "meta": [ ]
}Deletes a subscription type from the chain.
Warning: This action cannot be undone. Active subscriptions using this type may be affected.
| chain_id required | integer Example: 1 Chain ID |
| loyalty_abonement_type_id required | integer Example: 468039 Subscription type ID to delete |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
{- "success": true,
- "data": null,
- "meta": [ ]
}Creates a copy of an existing subscription type with a new ID.
The cloned subscription type will:
Note: Requires chain-level permissions.
| chain_id required | integer Example: 1 Chain ID |
| loyalty_abonement_type_id required | integer Example: 489159 Subscription type ID to clone |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
Empty body required (or omit entirely)
{ }{- "success": true,
- "data": {
- "id": 777,
- "salon_group_id": 333,
- "category_id": null,
- "title": "10-visit subscription",
- "period": 10,
- "period_unit_id": 3,
- "allow_freeze": true,
- "freeze_limit": 30,
- "freeze_limit_unit_id": 1,
- "is_booking_when_frozen_allowed": false,
- "is_allow_empty_code": false,
- "is_united_balance": true,
- "is_united_balance_unlimited": false,
- "is_code_required": false,
- "balance_edit_type_id": 1,
- "cost": 1000,
- "chain_price_min": 1000,
- "chain_price_max": 1500,
- "is_chain": true,
- "expiration_type_id": 1,
- "expiration_type_title": "On sale",
- "category": null,
- "weight": 0,
- "abonements_count": 0,
- "is_online_sale_enabled": false,
- "online_sale_title": "10-visit subscription",
- "online_sale_description": "Sold online with discount",
- "online_sale_price": 550,
- "service_price_correction": true,
- "united_balance_services_count": 10,
- "autoactivation_time": 10,
- "autoactivation_time_unit_id": 1,
- "attached_location_ids": [
- 1,
- 2,
- 3
], - "attached_salon_ids": [
- 1,
- 2,
- 3
], - "is_archived": false,
- "date_archived": null,
- "availability": [
- {
- "week_days": [
- 1,
- 2,
- 3
], - "intervals": [
- {
- "from": 3600,
- "to": 7200
}, - {
- "from": 10800,
- "to": 14400
}
]
}, - {
- "week_days": [
- 6,
- 7
], - "intervals": [
- {
- "from": 36000,
- "to": 72000
}
]
}
], - "balance_container": {
- "links": [
- {
- "count": 10,
- "is_unlimited": false,
- "service": {
- "id": 45,
- "is_category": false,
- "category_id": 90,
- "title": "Service in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": {
- "id": 90,
- "is_category": true,
- "category_id": 1,
- "title": "First service category in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": [
- { }
]
}
}, - "category": {
- "id": 91,
- "is_category": true,
- "category_id": 1,
- "title": "Second service category in location",
- "online_sale_title": "",
- "is_chain": false,
- "chain_price_min": 0,
- "chain_price_max": 0,
- "category": [
- { }
]
}
}
]
}
}, - "meta": [ ]
}Retrieves a list of certificate types at the chain level.
Returns all certificate types configured for the chain with optional filtering and pagination.
Query Parameters:
title - Filter by certificate type name (partial match)page - Page number (default: 1)page_size - Items per page (default: 10, max: 100)Item Type Restrictions:
Expiration Types:
Expiration Units:
| chain_id required | integer Example: 706028 Chain ID |
| title | string Example: title=Gift Filter by certificate type name (partial match) |
| page | integer Default: 1 Example: page=1 Page number |
| page_size | integer <= 100 Default: 10 Example: page_size=10 Items per page (max 100) |
| Accept required | string Default: application/vnd.api.v2+json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
{- "success": true,
- "data": [
- {
- "id": 289056,
- "title": "Gift Certificate 1000",
- "balance": 1000,
- "is_multi": true,
- "company_group_id": 706028,
- "category_id": null,
- "weight": 1,
- "item_type_id": 0,
- "expiration_type_id": 2,
- "expiration_date": null,
- "expiration_timeout": 6,
- "expiration_timeout_unit_id": 3,
- "balance_edit_type_id": 1,
- "is_allow_empty_code": false,
- "is_serial_number_limited": false,
- "is_archived": false,
- "date_archived": null,
- "online_sale_is_enabled": false,
- "online_sale_title": "Gift Certificate 1000",
- "online_sale_description": "",
- "online_sale_price": 0,
- "online_sale_image": null,
- "released_total": 0,
- "item_type": {
- "id": 0,
- "title": "All services and products"
}, - "service_ids": [ ],
- "salon_ids": [
- 720441
]
}
], - "meta": {
- "total_count": 1
}
}Creates a new certificate type at the chain level.
Certificate types define gift certificate templates that can be sold across multiple locations.
Item Type Restrictions:
Expiration Types:
Expiration Units:
Balance Edit Types:
Note: After creation, certificate products are automatically created in warehouse.
| chain_id required | integer Example: 706028 Chain ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| title required | string Certificate type name |
| balance required | number Certificate face value |
| is_multi required | boolean true = multiple use, false = single use |
| item_type_id required | integer Enum: 0 1 2 3 4 Usage restrictions (0-4) |
| is_allow_empty_code required | boolean Allow selling without code? |
| category_id | integer or null Service category restriction (null = no restriction) |
| balance_edit_type_id required | integer Enum: 1 2 Balance editability (1 = editable, 2 = not editable) |
| service_ids required | Array of integers Specific service IDs (empty if no restriction) |
| salon_ids required | Array of integers Location IDs where certificate is valid |
required | object Expiration settings |
required | object Online sale settings |
{- "title": "Gift Certificate 1000",
- "balance": 1000,
- "is_multi": true,
- "item_type_id": 0,
- "is_allow_empty_code": false,
- "category_id": null,
- "balance_edit_type_id": 1,
- "service_ids": [ ],
- "salon_ids": [
- 720441
], - "expiration": {
- "type_id": 2,
- "date": "2026-12-31T23:59:59+00:00",
- "timeout": 6,
- "timeout_unit_id": 3
}, - "online_sale": {
- "is_enabled": false,
- "title": "Gift Certificate",
- "description": "Perfect gift for any occasion",
- "price": 1000
}
}{- "success": true,
- "data": {
- "id": 289056,
- "title": "Gift Certificate 1000",
- "balance": 1000,
- "is_multi": true,
- "company_group_id": 706028,
- "category_id": null,
- "weight": 1,
- "item_type_id": 0,
- "expiration_type_id": 2,
- "expiration_date": null,
- "expiration_timeout": 6,
- "expiration_timeout_unit_id": 3,
- "balance_edit_type_id": 1,
- "is_allow_empty_code": false,
- "is_serial_number_limited": false,
- "is_archived": false,
- "date_archived": null,
- "online_sale_is_enabled": false,
- "online_sale_title": "Gift Certificate 1000",
- "online_sale_description": "",
- "online_sale_price": 0,
- "online_sale_image": null,
- "released_total": 0,
- "item_type": {
- "id": 0,
- "title": "All services and products"
}, - "service_ids": [ ],
- "salon_ids": [
- 720441
]
}, - "meta": [ ]
}Retrieves a specific certificate type by ID at the chain level.
Returns complete certificate type configuration including expiration rules, restrictions, and online sale settings.
| chain_id required | integer Example: 706028 Chain ID |
| type_id required | integer Example: 289056 Certificate type ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
{- "success": true,
- "data": {
- "id": 289056,
- "title": "Gift Certificate 1000",
- "balance": 1000,
- "is_multi": true,
- "company_group_id": 706028,
- "category_id": null,
- "weight": 1,
- "item_type_id": 0,
- "expiration_type_id": 2,
- "expiration_date": null,
- "expiration_timeout": 6,
- "expiration_timeout_unit_id": 3,
- "balance_edit_type_id": 1,
- "is_allow_empty_code": false,
- "is_serial_number_limited": false,
- "is_archived": false,
- "date_archived": null,
- "online_sale_is_enabled": false,
- "online_sale_title": "Gift Certificate 1000",
- "online_sale_description": "",
- "online_sale_price": 0,
- "online_sale_image": null,
- "released_total": 0,
- "item_type": {
- "id": 0,
- "title": "All services and products"
}, - "service_ids": [ ],
- "salon_ids": [
- 720441
]
}, - "meta": [ ]
}Updates an existing certificate type at the chain level.
All fields from creation are required. Use GET first to retrieve current values, then modify needed fields and send complete object.
Note: Cannot update certificate types that have already been issued.
| chain_id required | integer Example: 706028 Chain ID |
| type_id required | integer Example: 289056 Certificate type ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| title required | string Certificate type name |
| balance required | number Certificate face value |
| is_multi required | boolean true = multiple use, false = single use |
| item_type_id required | integer Enum: 0 1 2 3 4 Usage restrictions (0-4) |
| is_allow_empty_code required | boolean Allow selling without code? |
| category_id | integer or null Service category restriction (null = no restriction) |
| balance_edit_type_id required | integer Enum: 1 2 Balance editability (1 = editable, 2 = not editable) |
| service_ids required | Array of integers Specific service IDs (empty if no restriction) |
| salon_ids required | Array of integers Location IDs where certificate is valid |
required | object Expiration settings |
required | object Online sale settings |
{- "title": "Gift Certificate 1500",
- "balance": 1500,
- "is_multi": true,
- "item_type_id": 0,
- "is_allow_empty_code": false,
- "category_id": null,
- "balance_edit_type_id": 1,
- "service_ids": [ ],
- "salon_ids": [
- 720441
], - "expiration": {
- "type_id": 2,
- "date": "2026-12-31T23:59:59+00:00",
- "timeout": 6,
- "timeout_unit_id": 3
}, - "online_sale": {
- "is_enabled": false,
- "title": "Gift Certificate",
- "description": "Perfect gift for any occasion",
- "price": 1500
}
}{- "success": true,
- "data": {
- "id": 289056,
- "title": "Gift Certificate 1500",
- "balance": 1500,
- "is_multi": true,
- "company_group_id": 706028,
- "category_id": null,
- "weight": 1,
- "item_type_id": 0,
- "expiration_type_id": 2,
- "expiration_date": null,
- "expiration_timeout": 6,
- "expiration_timeout_unit_id": 3,
- "balance_edit_type_id": 1,
- "is_allow_empty_code": false,
- "is_serial_number_limited": false,
- "is_archived": false,
- "date_archived": null,
- "online_sale_is_enabled": false,
- "online_sale_title": "Gift Certificate 1500",
- "online_sale_description": "",
- "online_sale_price": 0,
- "online_sale_image": null,
- "released_total": 0,
- "item_type": {
- "id": 0,
- "title": "All services and products"
}, - "service_ids": [ ],
- "salon_ids": [
- 720441
]
}, - "meta": [ ]
}Freezes a subscription (abonement) until the specified date.
The subscription's expiration date will be extended by the freeze period. Frozen subscriptions cannot be used for bookings.
Requirements:
allow_freeze: truefreeze_limit from subscription typeNote: Requires chain-level permissions.
| chain_id required | integer Example: 706028 Chain ID |
| abonement_id required | integer Example: 123 Subscription ID to freeze |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| freeze_till required | string <date-time> Date until which the subscription will be frozen (ISO 8601 format) |
{- "freeze_till": "2025-12-31T23:59:59+00:00"
}{- "success": true,
- "data": {
- "id": 123,
- "number": "123456",
- "is_frozen": true,
- "freeze_period": 14,
- "freeze_till": "2025-12-31T23:59:59+00:00"
}, - "meta": [ ]
}Removes the freeze from a subscription (abonement).
The subscription's expiration date will remain extended by the freeze period that was already applied during the freeze.
Note: Requires chain-level permissions.
| chain_id required | integer Example: 706028 Chain ID |
| abonement_id required | integer Example: 123 Subscription ID to unfreeze |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
Empty body required (or omit entirely)
{ }{- "success": true,
- "data": {
- "id": 123,
- "number": "123456",
- "is_frozen": false,
- "freeze_period": 14
}, - "meta": [ ]
}Modifies the remaining visit count for a subscription (abonement).
For unified balance subscriptions:
united_balance_services_count to set total visitsFor separate balance subscriptions:
services_balance_count array with service_id and balance for each service/categoryUse cases:
Note: Requires chain-level permissions.
| chain_id required | integer Example: 706028 Chain ID |
| abonement_id required | integer Example: 123 Subscription ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| united_balance_services_count | integer New visit count for unified balance subscriptions |
Array of objects New balance for separate balance subscriptions (per service/category) |
{- "united_balance_services_count": 10,
- "services_balance_count": [
- {
- "service_id": 13160808,
- "balance": 5
}, - {
- "service_id": 13160809,
- "balance": 3
}
]
}{- "success": true,
- "data": {
- "id": 123,
- "united_balance_services_count": 10,
- "balance_container": { }
}, - "meta": [ ]
}Modifies the validity period (duration) of a subscription (abonement).
This changes how long the subscription remains active before expiring.
Period units:
Use cases:
Note: Requires chain-level permissions.
| chain_id required | integer Example: 706028 Chain ID |
| abonement_id required | integer Example: 123 Subscription ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token}, User {user_token} |
| period required | integer Duration value |
| period_unit_id required | integer Enum: 1 2 3 4 Period unit: 1 = day, 2 = week, 3 = month, 4 = year |
{- "period": 90,
- "period_unit_id": 1
}{- "success": true,
- "data": {
- "id": 123,
- "period": 90,
- "period_unit_id": 1,
- "expiration_date": "2026-03-31T23:59:59+00:00"
}, - "meta": [ ]
}| chain_id required | integer Chain ID |
| include | string Enum: "applicable_items" "rules" "companies" "loyalty_card_types" "on_changed_notification_template" "on_expiration_notification_template" Include additional resources in the answer |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| title required | string Share name |
| type required | string Enum: "discount_static" "discount_accumulative_visits" "discount_accumulative_sold" "discount_accumulative_paid" "cashback_static_sold" "cashback_static_paid" "cashback_accumulative_paid" "cashback_accumulative_sold" "cashback_accumulative_paid_visits" "cashback_accumulative_sold_visits" "cashback_sold_visits" "cashback_paid_visits" "package_discount" Promotion type |
| service_item_type required | string Enum: "any_allowed" "not_allowed" "custom_allowed" Type of application to services |
| good_item_type required | string Enum: "any_allowed" "not_allowed" "custom_allowed" Type of application to products |
| value_unit required | string Enum: "percent" "amount" Bonus or discount measurement unit (percentage, fixed amount) |
| usage_limit | integer <int32> Limit on the number of applications (only for cashback) |
| visit_multiplicity | integer <int32> Multiplicity of application by visits (only for cashback) |
| sold_items_multiplicity | integer <int32> How many services you need to pay to get a discount on promotional services (only for the promotion type "Discount by condition") |
| expiration_timeout | integer <int32> Expiration date of bonuses or discounts |
| expiration_timeout_unit | string Enum: "day" "week" "month" "year" The unit of measurement for the expiration date of bonuses or discounts |
| expiration_notification_timeout | integer <int32> How many days before the bonus or discount expires, a notification must be sent to the client |
| params_source_type | string Enum: "loyalty_card" "active_companies" "chain" Where to get the client's history to calculate the size of the bonus or discount (for accumulation promotions or conditional discounts) |
| history_start_date | string <date> From what date to take into account the client's history to calculate the size of the bonus or discount (for accumulative promotions or conditional discounts) |
| loyalty_card_type_ids | Array of integers <int32> [ items <int32 > ] Identifiers of types of cards for which the promotion is valid |
object (loyalty_notification_message_template_request) Body of the request to bind the loyalty notification template | |
object (loyalty_notification_message_template_request) Body of the request to bind the loyalty notification template | |
required | Array of objects (Root Type for LoyaltyProgramRuleRequest) Rules for determining the value of the bonus or discount (only one rule is allowed for fixed promotions) |
| company_ids required | Array of integers <int32> [ items <int32 > ] Identifiers of locations where the promotion is valid |
| allowed_service_ids | Array of integers <int32> [ items <int32 > ] Service and service category identifiers (if application type is set for some services) |
| allowed_good_ids | Array of integers <int32> [ items <int32 > ] Item IDs (if application type is set for some items) |
| allowed_good_category_ids | Array of integers <int32> [ items <int32 > ] Product category identifiers (if application type is set for some products) |
{- "title": "Cumulative discount for some services and not for goods",
- "type": "discount_accumulative_paid",
- "service_item_type": "custom_allowed",
- "good_item_type": "not_allowed",
- "allowed_service_ids": [
- 53,
- 92
], - "allowed_good_ids": [ ],
- "allowed_good_category_ids": [ ],
- "value_unit": "percent",
- "usage_limit": 0,
- "visit_multiplicity": 0,
- "sold_items_multiplicity": 0,
- "expiration_timeout": 6,
- "expiration_timeout_unit": "month",
- "expiration_notification_timeout": 7,
- "params_source_type": "chain",
- "history_start_date": "2025-09-21",
- "loyalty_card_type_ids": [
- 51,
- 29
], - "on_changed_notification_template": {
- "type": "custom",
- "body": "Your discount has changed"
}, - "on_expiration_notification_template": {
- "type": "big"
}, - "rules": [
- {
- "parameter": 10,
- "value": 2.5,
- "service_id": 0
}, - {
- "parameter": 30,
- "value": 7.5,
- "service_id": 0
}
], - "company_ids": [
- 49
]
}{- "id": 34,
- "title": "Cumulative discount for some services and not for goods",
- "type": "discount_accumulative_paid",
- "service_item_type": "custom_allowed",
- "good_item_type": "not_allowed",
- "value_unit": "percent",
- "usage_limit": 0,
- "visit_multiplicity": 0,
- "sold_items_multiplicity": 0,
- "expiration_timeout": 6,
- "expiration_timeout_unit": "month",
- "expiration_notification_timeout": 7,
- "params_source_type": "chain",
- "history_start_date": "2025-09-21",
- "on_changed_notification_template_id": 55,
- "on_expiration_notification_template_id": 84,
- "loyalty_card_types": [
- {
- "id": 51,
- "title": "Card type 1"
}, - {
- "id": 29,
- "title": "Card type 2"
}
], - "on_changed_notification_template": {
- "id": 55,
- "type": "custom",
- "body": "Your discount has changed",
- "message_type": "loyalty_discount_changed"
}, - "on_expiration_notification_template": {
- "id": 84,
- "type": "big",
- "body": "Detailed text about discount burning",
- "message_type": "loyalty_discount_expiration"
}, - "rules": [
- {
- "id": 94,
- "parameter": 10,
- "value": 2.5,
- "loyalty_program_id": 34,
- "loyalty_type_id": 3,
- "service_id": 0
}, - {
- "id": 74,
- "parameter": 30,
- "value": 7.5,
- "loyalty_program_id": 34,
- "loyalty_type_id": 3,
- "service_id": 0
}
], - "companies": [
- {
- "id": 49,
- "title": "Location",
- "country": "United States",
- "country_id": 5,
- "city": "New York",
- "city_id": 83,
- "phone": "+1-315-555-0175",
- "timezone": "America/New_York",
- "address": "Location address",
- "coordinate_lat": 40.73061,
- "coordinate_lng": 18.63
}
], - "applicable_items": [
- {
- "id": 53,
- "title": "Service category 1",
- "is_service": true,
- "is_category": true
}, - {
- "id": 92,
- "title": "Service category 2",
- "is_service": true,
- "is_category": true
}
]
}| chain_id required | integer Chain ID |
| loyalty_program_id required | integer Promotion ID |
| include | string Enum: "applicable_items" "rules" "companies" "loyalty_card_types" "on_changed_notification_template" "on_expiration_notification_template" Include additional resources in the answer |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "id": 34,
- "title": "Cumulative discount for some services and not for goods",
- "type": "discount_accumulative_paid",
- "service_item_type": "custom_allowed",
- "good_item_type": "not_allowed",
- "value_unit": "percent",
- "usage_limit": 0,
- "visit_multiplicity": 0,
- "sold_items_multiplicity": 0,
- "expiration_timeout": 6,
- "expiration_timeout_unit": "month",
- "expiration_notification_timeout": 7,
- "params_source_type": "chain",
- "history_start_date": "2025-09-21",
- "on_changed_notification_template_id": 55,
- "on_expiration_notification_template_id": 84,
- "loyalty_card_types": [
- {
- "id": 51,
- "title": "Card type 1"
}, - {
- "id": 29,
- "title": "Card type 2"
}
], - "on_changed_notification_template": {
- "id": 55,
- "type": "custom",
- "body": "Your discount has changed",
- "message_type": "loyalty_discount_changed"
}, - "on_expiration_notification_template": {
- "id": 84,
- "type": "big",
- "body": "Detailed text about discount burning",
- "message_type": "loyalty_discount_expiration"
}, - "rules": [
- {
- "id": 94,
- "parameter": 10,
- "value": 2.5,
- "loyalty_program_id": 34,
- "loyalty_type_id": 3,
- "service_id": 0
}, - {
- "id": 74,
- "parameter": 30,
- "value": 7.5,
- "loyalty_program_id": 34,
- "loyalty_type_id": 3,
- "service_id": 0
}
], - "companies": [
- {
- "id": 49,
- "title": "Location",
- "country": "United States",
- "country_id": 5,
- "city": "New York",
- "city_id": 83,
- "phone": "+1-315-555-0175",
- "timezone": "America/New_York",
- "address": "Location address",
- "coordinate_lat": 40.73061,
- "coordinate_lng": 18.63
}
], - "applicable_items": [
- {
- "id": 53,
- "title": "Service category 1",
- "is_service": true,
- "is_category": true
}, - {
- "id": 92,
- "title": "Service category 2",
- "is_service": true,
- "is_category": true
}
]
}| chain_id required | integer Chain ID |
| loyalty_program_id required | integer Promotion ID |
| include | string Enum: "applicable_items" "rules" "companies" "loyalty_card_types" "on_changed_notification_template" "on_expiration_notification_template" Include additional resources in the answer |
| title | string Share name |
| usage_limit | integer <int32> Limit on the number of applications (only for cashback) |
| expiration_timeout | integer <int32> Expiration date of bonuses or discounts |
| expiration_timeout_unit | string Enum: "day" "week" "month" "year" The unit of measurement for the expiration date of bonuses or discounts |
| expiration_notification_timeout | integer <int32> How many days before the bonus or discount expires, a notification must be sent to the client |
| loyalty_card_type_ids | Array of integers <int32> [ items <int32 > ] Identifiers of types of cards for which the promotion is valid |
object (loyalty_notification_message_template_request) Body of the request to bind the loyalty notification template | |
object (loyalty_notification_message_template_request) Body of the request to bind the loyalty notification template | |
Array of objects (Root Type for LoyaltyProgramRuleRequest) Rules for determining the value of the bonus or discount (only one rule is allowed for fixed promotions) | |
| company_ids | Array of integers <int32> [ items <int32 > ] Identifiers of locations where the promotion is valid |
| allowed_service_ids | Array of integers <int32> [ items <int32 > ] Service and service category identifiers (if application type is set for some services) |
| allowed_good_ids | Array of integers <int32> [ items <int32 > ] Item IDs (if application type is set for some items) |
| allowed_good_category_ids | Array of integers <int32> [ items <int32 > ] Product category identifiers (if application type is set for some products) |
{- "title": "Cumulative discount for some services and not for goods",
- "allowed_service_ids": [
- 53,
- 92
], - "allowed_good_ids": [ ],
- "allowed_good_category_ids": [ ],
- "usage_limit": 0,
- "expiration_timeout": 6,
- "expiration_timeout_unit": "month",
- "expiration_notification_timeout": 7,
- "loyalty_card_type_ids": [
- 51,
- 29
], - "on_changed_notification_template": {
- "type": "custom",
- "body": "Your discount has changed"
}, - "on_expiration_notification_template": {
- "type": "big"
}, - "rules": [
- {
- "parameter": 10,
- "value": 2.5,
- "service_id": 0
}, - {
- "parameter": 30,
- "value": 7.5,
- "service_id": 0
}
], - "company_ids": [
- 49
]
}{- "id": 34,
- "title": "Cumulative discount for some services and not for goods",
- "type": "discount_accumulative_paid",
- "service_item_type": "custom_allowed",
- "good_item_type": "not_allowed",
- "value_unit": "percent",
- "usage_limit": 0,
- "visit_multiplicity": 0,
- "sold_items_multiplicity": 0,
- "expiration_timeout": 6,
- "expiration_timeout_unit": "month",
- "expiration_notification_timeout": 7,
- "params_source_type": "chain",
- "history_start_date": "2025-09-21",
- "on_changed_notification_template_id": 55,
- "on_expiration_notification_template_id": 84,
- "loyalty_card_types": [
- {
- "id": 51,
- "title": "Card type 1"
}, - {
- "id": 29,
- "title": "Card type 2"
}
], - "on_changed_notification_template": {
- "id": 55,
- "type": "custom",
- "body": "Your discount has changed",
- "message_type": "loyalty_discount_changed"
}, - "on_expiration_notification_template": {
- "id": 84,
- "type": "big",
- "body": "Detailed text about discount burning",
- "message_type": "loyalty_discount_expiration"
}, - "rules": [
- {
- "id": 94,
- "parameter": 10,
- "value": 2.5,
- "loyalty_program_id": 34,
- "loyalty_type_id": 3,
- "service_id": 0
}, - {
- "id": 74,
- "parameter": 30,
- "value": 7.5,
- "loyalty_program_id": 34,
- "loyalty_type_id": 3,
- "service_id": 0
}
], - "companies": [
- {
- "id": 49,
- "title": "Location",
- "country": "United States",
- "country_id": 5,
- "city": "New York",
- "city_id": 83,
- "phone": "+1-315-555-0175",
- "timezone": "America/New_York",
- "address": "Location address",
- "coordinate_lat": 40.73061,
- "coordinate_lng": 18.63
}
], - "applicable_items": [
- {
- "id": 53,
- "title": "Service category 1",
- "is_service": true,
- "is_category": true
}, - {
- "id": 92,
- "title": "Service category 2",
- "is_service": true,
- "is_category": true
}
]
}| chain_id required | integer Chain ID |
| loyalty_program_id required | integer Promotion ID |
| include | string Enum: "applicable_items" "rules" "companies" "loyalty_card_types" "on_changed_notification_template" "on_expiration_notification_template" Include additional resources in the answer |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| chain_id required | integer Chain ID |
| created_after required | string <date> Sample start date in Y-m-d format |
| created_before required | string <date> Sample end date in Y-m-d format |
| types | Array of strings Items Enum: "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" Types of loyalty transactions included in the selection: 1 - Promotion discount, 2 - Loyalty program accrual, 3 - Loyalty card withdrawal, 4 - Referral program accrual, 5 - Manual replenishment, 6 - Manual withdrawal, 7 - Overdue points withdrawal , 8 - Withdrawal from the gift card, 9 - Use of the membership, 10 - Recalculation of the cost of the membership, 11 - Withdrawal from the personal account |
| company_ids | Array of integers Loyalty transaction affiliate IDs included in the sample |
| visit_ids | Array of integers Loyalty transaction visit IDs included in the sample |
| page | integer Selection page |
| count | integer Number of results per selection page |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 0,
- "visit_id": 0,
- "status_id": 0,
- "amount": 0.1,
- "type_id": 0,
- "card_id": 0,
- "program_id": 0,
- "certificate_id": 0,
- "abonement_id": 0,
- "salon_group_id": 0,
- "item_id": 0,
- "item_type_id": 0,
- "item_record_id": 0,
- "goods_transaction_id": 0,
- "services_transaction_id": 0,
- "is_discount": true,
- "is_loyalty_withdraw": true,
- "type": {
- "id": 0,
- "title": "string"
}
}
], - "meta": {
- "count": 0
}
}| chain_id required | integer Chain ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
[- {
- "id": 12,
- "type": "small",
- "message_type": "loyalty_discount_expiration",
- "body": "Your discount expires tomorrow"
}
]Fiscal integration for tax compliance. Manage fiscal transactions, print fiscal receipts, and configure tax systems.
Filters
| Parameter | Description |
|---|---|
| page | Page number |
| editable_length | Number of clients per page |
| type | Operation type |
| status | Operation status |
| start_date | Period start date |
| end_date | Period end date |
Types of all transactions with cash register
| Meaning | Description |
|---|---|
| 0 | Sales operation – Active for documents of type Visit |
| 1 | Sale return operation – Active for documents of type Visit |
| 2 | Correction operation |
| 4 | Shift opening operation – Opens a new POS shift |
| 5 | Shift closing operation – Closes the current POS shift |
| 9 | Get POS status – Retrieves the current status of the POS device |
| 11 | Get POS team status – Retrieves the status of all POS devices connected to the team |
| 12 | Correction operation |
| 13 | Print X-report – Prints a non-fiscal summary report of the current shift |
| 6 | Cash deposit – Registers a cash-in transaction in the POS |
| 7 | Cash withdrawal – Registers a cash-out transaction in the POS |
Statuses of All POS Operations
| Meaning | Description |
|---|---|
| 0 | Connection error with POS – Unable to establish a connection with the POS device |
| 1 | Success – Operation completed successfully |
| 2 | Sent for printing – The request has been sent to the POS and is waiting for print completion |
| 3 | Runtime error – An error occurred while processing the operation on the POS device |
| 4 | Status check error – Failed to retrieve the current status of the POS |
| 5 | Waiting for POS readiness – Operation is pending until the POS device becomes ready |
Document Types
| Meaning | Description |
|---|---|
| 1 | Sale of products |
| 2 | Provision of services |
| 3 | Arrival of products |
| 4 | Products write-off |
| 5 | Transfer of products |
| 6 | Inventory |
| 7 | Visit |
| 8 | Consumables write-off |
| 9 | Deposit replenishment |
| location_id required | number location ID |
| page | number Example: page=1 Page number |
| editable_length | number Example: editable_length=25 Number of customers per page |
| type | number Example: type=20 Type of transaction |
| status | number Example: status=6 Operation status |
| start_date | number Example: start_date=20251201 Period start date |
| end_date | number Example: end_date=20251231 Period end date |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer access_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1059,
- "print_date": "2025-09-21T23:00:00.000+03:00",
- "printed_count": 1,
- "sum": 10,
- "type": {
- "id": 1,
- "title": "Sales return operation"
}, - "status": {
- "id": 3,
- "title": "Runtime error"
}, - "document": {
- "id": 2045,
- "type": 7,
- "type_title": "Visit"
}, - "cashier": {
- "id": 746310,
- "name": "Jack Smith"
}
}
], - "meta": {
- "count": 1
}
}Types of all transactions with cash register
| Meaning | Description |
|---|---|
| 0 | Sale operation (active for documents with types "Visit" and "Deposit replenishment") |
| 1 | Sale return operation (active for documents with types "Visit" and "Deposit replenishment") |
| 2 | Correction operation |
| 4 | Shift opening operation – Opens a new POS shift |
| 5 | Shift closing operation – Closes the current POS shift |
| 9 | Get POS status – Retrieves the current status of the POS device |
| 11 | Get POS team status – Retrieves the status of all POS devices connected to the team |
| 12 | Correction operation |
| 13 | Print X-report – Prints a non-fiscal summary report of the current shift |
| 6 | Cash deposit – Registers a cash-in transaction in the POS |
| 7 | Cash withdrawal – Registers a cash-out transaction in the POS |
Document Types
| Meaning | Description |
|---|---|
| 1 | Sale of products |
| 2 | Provision of services |
| 3 | Arrival of products |
| 4 | Products write-off |
| 5 | Transfer of products |
| 6 | Inventory |
| 7 | Visit |
| 8 | Consumables write-off |
| 9 | Deposit replenishment |
| location_id required | number Location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| document_id required | number Document ID |
| type required | number type of operation with cash register (see table of types of all operations) |
| is_pos_enabled | boolean enable POS terminal (default false) |
{- "success": true,
- "data": {
- "kkm_type": 0,
- "kkm_transactions": [
- {
- "id": 1954,
- "print_date": "2025-09-21T23:00:00.000+03:00",
- "printed_count": 0,
- "sum": 0,
- "type": {
- "id": 0,
- "title": "Sale operation"
}, - "status": {
- "id": 2,
- "title": "Sent for printing"
}, - "document": {
- "id": 164,
- "type": 9,
- "type_title": "Deposit replenishment"
}, - "cashier": {
- "id": 1138453,
- "name": "Jack Smith"
}
}
], - "status": 2,
- "bill_json": [
- [ ]
]
}, - "meta": [ ]
}A list of tax systems and VAT available for a country can be obtained by requesting the country ID for which the list is to be obtained. The country ID can be obtained from list of countries.
The list is an array of tax systems with a nested VAT array for each tax system.
The taxation system has the following structure:
| Field | Type | Description |
|---|---|---|
| title | string | Name of taxation system |
| slug | string | Code name for the taxation system |
| vats | Array of objects(Vat[]) | List of available VAT for the taxation system |
VAT has the following structure:
| Field | Type | Description |
|---|---|---|
| title | string | Title VAT |
| slug | string | Code name VAT |
| country_id required | number Example: 1 Country ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": [
- {
- "title": "General DOS",
- "slug": "ru_osn",
- "vats": [
- {
- "title": "0%",
- "slug": "ru_vat_0"
}, - {
- "title": "10%",
- "slug": "ru_vat_10"
}, - {
- "title": "20%",
- "slug": "ru_vat_20"
}, - {
- "title": "is not a subject to a tax",
- "slug": "ru_vat_none"
}
]
}, - {
- "title": "Simplified simplified tax system (Income)",
- "slug": "ru_usn",
- "vats": [
- {
- "title": "is not a subject to a tax",
- "slug": "ru_vat_none"
}
]
}, - {
- "title": "Simplified simplified tax system (Income minus Expense)",
- "slug": "ru_usnr",
- "vats": [
- {
- "title": "is not a subject to a tax",
- "slug": "ru_vat_none"
}
]
}, - {
- "title": "Single tax on imputed income UTII",
- "slug": "ru_envd",
- "vats": [
- {
- "title": "is not a subject to a tax",
- "slug": "ru_vat_none"
}
]
}, - {
- "title": "Unified agricultural tax UST",
- "slug": "ru_esn",
- "vats": [
- {
- "title": "is not a subject to a tax",
- "slug": "ru_vat_none"
}
]
}, - {
- "title": "Patent taxation system",
- "slug": "ru_psn",
- "vats": [
- {
- "title": "is not a subject to a tax",
- "slug": "ru_vat_none"
}
]
}
], - "meta": {
- "count": 6
}
}| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Conetnt-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{ }{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
| id | string Unique ID of the sales document |
| date | string <date-time> Date and time the document was sent for printing (in ISO-8601 format) |
| document_id | integer <int32> Internal document identifier in the Altegio system |
| type | string Enum: "sale" "return" Document type (list of possible values) |
| print_receipt | boolean Whether to print a paper check at the checkout during fiscalization |
object Client entity | |
Array of objects List of positions in the check | |
Array of objects List of fees applied per check | |
| tax | string Type of taxation system (slug from the list of taxation systems) |
object The Essence of a Cashier | |
object Options for the connected POS terminal | |
| callback_url | string Link to update fiscal status |
| custom_text | string Arbitrary text for printing on a receipt |
{- "id": "d72fece5-6825-4895-9395-0133195612a4",
- "date": "2025-09-21T23:00:00.000+03:00",
- "document_id": 239083104,
- "type": "sale",
- "print_receipt": true,
- "positions": [
- {
- "type": "service",
- "title": "Consultation",
- "price": 13.19,
- "quantity": 1,
- "discount_amount": 2.54,
- "vat": "ru_vat_10",
- "payment_method": "payment",
- "barcode": "12345"
}
], - "payments": [
- {
- "type": "card",
- "sum": 5.55
}, - {
- "type": "cash",
- "sum": 4.55
}, - {
- "type": "prepaid",
- "sum": 0.55
}
], - "tax": "ru_osn",
- "cashier": {
- "uid": "4895-9395-0133195612a4",
- "name": "John Smith",
- "position": "Cashier"
}, - "pos": {
- "enabled": true,
- "slip_count": 2
}, - "custom_text": "some custom text"
}{- "id": "d72fece5-6825-4895-9395-0133195612a4",
- "status": "success",
- "code": 0,
- "message": "OK"
}Utility endpoints for validation, GDPR, image management, licensing, and tips configuration.
The transferred phone number is checked for compliance with Altegio rules.
| phone required | string Checked phone number |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "is_valid": true
}, - "meta": [ ]
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": {
- "agreement": {
- "content": "text of the agreement"
}
}, - "meta": [ ]
}The response object has the following fields:
| Field | Type | Description |
|---|---|---|
| image_binded | boolean | Status of linking images to an entity |
| image_group | object | Image group object |
| entity required | string Example: "master" entity name (master/service) |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string form-data |
| Authorization required | string Bearer partner_token, User user_token |
| company_id | number Location ID for image binding (for entity=service) |
| service_id | number Service ID for image binding (for entity=service) |
| master_id | number team member ID for image binding (for entity=master) |
| image required | string transferred image (image/jpeg, image/png) |
{- "success": true,
- "data": {
- "image_binded": false,
- "image_group ": {
- "id": 72256,
- "entity": "",
- "entity_id": 0,
- "images": {
- "basic": {
- "id": 186826,
- "width": "373",
- "height": "280",
- "type": "jpeg",
- "image_group_id": 72256,
- "version": "basic"
}
}
}
}, - "meta": [ ]
}The response object has the following fields:
| Field | Type | Description |
|---|---|---|
| success | boolean | Deletion result |
| entity required | string entity name (master/service) |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string form-data |
| Authorization required | string Bearer partner_token, User user_token |
| image_group_id required | number Image group ID to delete |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| record_token required | string Short appointment token |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "success": true,
- "data": {
- "is_review_submitted": false,
- "page_title": "Leave feedback",
- "master": {
- "id": 58961,
- "name": "Alexey Uvarov",
- "company_id": 28939,
- "specialization": "Permanent Makeup, Artistic Tattoo",
- "rating": 5,
- "show_rating": true,
- "prepaid": "forbidden",
- "position": {
- "id": 2185,
- "title": "Master PM"
}
}, - "company": {
- "id": 28939,
- "title": "\"Eyes-n-Lips\" New York",
- "address": "New York, 787 Jackson Drive"
}, - "tips": [ ],
- "record": {
- "id": 8219891,
- "payed_cost": 2000,
- "date": "2017-08-11T15:00:00+0000"
}, - "currency": {
- "id": 1,
- "iso": "RUB",
- "name": "US Dollar",
- "symbol": "USD",
- "is_symbol_after_amount": true
}, - "agreement_links": {
}, - "language": {
- "id": 1,
- "locale": "en-US",
- "iso": "usa"
}
}, - "meta": [ ]
}| record_token required | string Short appointment token |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| rating required | integer <int32> Rating for the review (number of stars from 1 to 5) |
| text | string Feedback text |
| tips_amount | number <double> Tip amount |
| redirect_prefix | string The prefix part of the url that will be redirected to after returning from the payment form |
{- "rating": 5,
- "text": "Excellent master!",
- "tips_amount": 22.5,
}{- "success": true,
- "meta": [ ]
}| location_id required | integer location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 3120,
- "location_id": 4564,
- "staff_id": 1071804,
- "hash": "1a27116c-726d-4cec-a7dd-7bd6d669a8c1",
- "status": 1,
- "status_title": "new settings",
- "is_enabled": false,
- "landing_external": "https://app.alteg.io/tips/external/4564/1a27116c-726d-4cec-a7dd-7bd6d669a8c1/",
- "staff": {
- "id": 1071804,
- "name": "Testimonials Location Business Example",
- "specialization": "Reviews"
}
}, - {
- "id": 1,
- "location_id": 4564,
- "staff_id": 37695,
- "hash": "abf52f53-e94c-41e8-9f76-93485fd76e5e",
- "status": 1,
- "status_title": "new settings",
- "is_enabled": false,
- "landing_external": "https://app.alteg.io/tips/external/4564/abf52f53-e94c-41e8-9f76-93485fd76e5e/",
- "staff": {
- "id": 37695,
- "name": "Kim Kardashian",
- "specialization": "Cosmetologist-makeup artist",
- "user": {
- "id": 746310,
- "name": "James Smith",
- "phone": "+1-315-555-0175"
}, - "position": {
- "id": 452,
- "title": "Masseur"
}
}
}
]
}| location_id required | integer location id |
| master_tips_settings_id required | integer tip settings id |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1,
- "location_id": 253859,
- "staff_id": 742418,
- "hash": "ba816199-eecf-4bd2-9f1d-db470545bfaf",
- "status": 3,
- "status_title": "pending account",
- "is_enabled": true,
- "landing_external": "https://app.alteg.io/tips/external/253859/ba816199-eecf-4bd2-9f1d-db470545bfaf/",
- "invite_sms_sent": false,
- "staff": {
- "id": 742418,
- "name": "Fusa",
- "specialization": "team member",
- "employee": {
- "id": 733043,
- "phone": "+1-315-555-0175"
}, - "position": {
- "id": 103883,
- "title": "Yogist"
}
}
}, - {
- "id": 152763,
- "location_id": 253859,
- "staff_id": 743018,
- "hash": "b7c81cab-290a-4b0a-ad05-9c4b98ef3565",
- "status": 4,
- "status_title": "everything is set",
- "is_enabled": true,
- "landing_external": "https://app.alteg.io/tips/external/253859/b7c81cab-290a-4b0a-ad05-9c4b98ef3565/",
- "invite_sms_sent": false,
- "staff": {
- "id": 743018,
- "name": "Natasha M",
- "specialization": "manicurist",
- "employee": {
- "id": 733547,
- "phone": "+1-315-555-0175"
}, - "user": {
- "id": 6259059,
- "name": "Alice Smith",
- "phone": "+1-315-555-0175"
}, - "position": {
- "id": 103731,
- "title": "Manicurist"
}
}
}
], - "meta": {
- "count": 2
}
}| master_tips_settings_id required | integer tip settings id |
| location_id required | number location ID |
| Accept required | string application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 1,
- "location_id": 253859,
- "staff_id": 742418,
- "hash": "ba816199-eecf-4bd2-9f1d-db470545bfaf",
- "status": 3,
- "status_title": "pending account",
- "is_enabled": true,
- "landing_external": "https://app.alteg.io/tips/external/253859/ba816199-eecf-4bd2-9f1d-db470545bfaf/",
- "invite_sms_sent": false,
- "staff": {
- "id": 742418,
- "name": "Fusa",
- "specialization": "team member",
- "employee": {
- "id": 733043,
- "phone": "+1-315-555-0175"
}, - "user": {
- "id": 1553930,
- "name": "James Smith",
- "phone": "+1-315-555-0175"
}, - "position": {
- "id": 103883,
- "title": "Yogist"
}
}
}, - {
- "id": 152763,
- "location_id": 253859,
- "staff_id": 743018,
- "hash": "b7c81cab-290a-4b0a-ad05-9c4b98ef3565",
- "status": 4,
- "status_title": "everything is set",
- "is_enabled": true,
- "landing_external": "https://app.alteg.io/tips/external/253859/b7c81cab-290a-4b0a-ad05-9c4b98ef3565/",
- "invite_sms_sent": false,
- "staff": {
- "id": 743018,
- "name": "Natasha M",
- "specialization": "manicurist",
- "employee": {
- "id": 733547,
- "phone": "+1-315-555-0175"
}, - "user": {
- "id": 6259059,
- "name": "Alice Smith",
- "phone": "+1-315-555-0175"
}, - "position": {
- "id": 103731,
- "title": "Manicurist"
}
}
}
], - "meta": {
- "count": 2
}
}Application marketplace integration for third-party applications.
Integration workflow:
This endpoint retrieves a list of locations that have connected a specific application, along with detailed information about each.
| application_id required | number Application ID |
| page required | number Page number |
| count required | number <= 1000 Number of elements per page |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "success": true,
- "data": [
- {
- "id": 1050,
- "title": "La Visage",
- "public_title": "La Visage Beauty",
- "short_descr": "Beauty saloon",
- "active": 1,
- "phone": "+1-315-555-0175",
- "phones": [
- "+1-315-555-0175"
], - "country_id": 7,
- "schedule": "",
- "country": "United States",
- "city_id": 181,
- "city": "New York",
- "timezone": -5,
- "timezone_name": "America/New_York",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": 40.73061,
- "coordinate_lon": -73.935242,
- "phone_confirmation": true,
- "active_staff_count": 2,
- "next_slot": "2023-03-23T10:10:00+0300",
- "app_ios": "",
- "app_android": "",
- "currency_short_title": "$",
- "reminds_sms_disabled": false,
- "reminds_sms_default": 1,
- "group_priority": 900,
- "bookform_group_priority": 0,
- "description": "<p>Welcome to La Visage</p>",
- "photos": [ ],
- "booking_widget_promo": null
}
], - "meta": [ ]
}Retrieves list of tariffs for the application.
Note: For marketplace partners only.
| application_id required | integer Example: 123 Application ID |
| Accept required | string Default: application/vnd.api.v2+json |
| Authorization required | string Bearer {partner_token} |
{- "success": true,
- "data": [
- {
- "id": 89,
- "title": "1 month",
- "options": [
- {
- "id": 123,
- "title": "Solo professional",
- "overall_price": 500,
- "duration_in_months": 1,
- "currency_iso": "USD",
- "staff_amount": 1,
- "free_period_in_months": 0
}
]
}
], - "meta": [ ]
}Sets a payment discount for specific locations when they pay through Altegio platform.
Note: This endpoint is intended for marketplace partners only. Requires marketplace partner authorization.
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token} |
| salon_ids required | Array of integers List of location IDs to apply discount |
| application_id required | integer Application ID from marketplace |
| discount required | number <float> Discount amount (percentage or fixed amount depending on configuration) |
{- "salon_ids": [
- 123,
- 456
], - "application_id": 123,
- "discount": 15.54
}{- "success": true,
- "data": { },
- "meta": [ ]
}Generates a payment link for application payment through Altegio platform.
Note: For marketplace partners only.
| salon_id required | integer Example: salon_id=123 Location ID |
| application_id required | integer Example: application_id=456 Application ID |
| discount | number <float> Example: discount=15.55 Discount percentage (optional) |
| Accept required | string Default: application/vnd.api.v2+json |
| Authorization required | string Bearer {partner_token} |
{- "success": true,
- "meta": [ ]
}Updates available notification channels for the application.
Note: Only for Chat Bots and SMS Aggregators category applications. For marketplace partners only.
| Accept required | string Default: application/vnd.api.v2+json |
| Content-Type required | string Default: application/json |
| Authorization required | string Bearer {partner_token} |
| salon_id required | integer Location ID |
| application_id required | integer Application ID |
| channel_slug required | string Enum: "sms" "whatsapp" Channel to update availability for |
| is_available required | boolean Channel availability flag |
{- "salon_id": 123,
- "application_id": 456,
- "channel_slug": "sms",
- "is_available": true
}{- "success": true,
- "data": { },
- "meta": [ ]
}This endpoint is used to retrieve information about the application's installation status in a specific location.
| location_id required | number Location ID |
| application_id required | number Application ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "success": true,
- "data": {
- "logs": [
- {
- "changed_at": "2022-06-27 12:20:02",
- "status_from": "uninstalled",
- "status_to": "pending",
- "source": "marketplace"
}, - {
- "changed_at": "2022-06-27 12:22:02",
- "status_from": "pending",
- "status_to": "active",
- "source": "partner_api"
}
], - "payments": [
- {
- "id": 1523,
- "payment_sum": 1523.12,
- "payment_date": "2022-06-27 12:22:02",
- "is_refunded": false,
- "period_from": "2022-06-27 00:00:00",
- "period_to": "2022-07-27 00:00:00"
}
], - "connection_status": {
- "status": "active",
- "created_at": "2022-06-27 12:20:02"
}
}
}This endpoint is used by the partner service to uninstall the application from a specific location.
| location_id required | number Location ID |
| application_id required | number Application ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "success": true,
- "data": null,
- "meta": { }
}The integration settings of the partner service must be sent to this address. Once received, the application will be configured and installed for the corresponding location.
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| salon_id required | number Location ID. |
| application_id required | number Application ID. |
| api_key | number API-key for messaging module. |
| webhook_urls | Array of strings Webhooks array |
{- "salon_id": 123,
- "application_id": 123,
- "api_key": "2f181e2a-5c22-4ae7-9d9b-07104f312c28",
}{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}After completing registration, the user must be redirected to this URL in the browser, along with any required data needed by the partner service.
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| salon_id required | number Location ID. |
| application_id required | number Application ID. |
| api_key | number API-key for messaging module. |
| webhook_urls | Array of strings Webhooks array |
{- "salon_id": 123,
- "application_id": 123,
- "api_key": "2f181e2a-5c22-4ae7-9d9b-07104f312c28",
}{- "success": true
}A webhook notification must be sent to this address to inform Altegio of a successful payment made on the partner service’s side.
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| salon_id required | number Location ID. |
| application_id required | number Application ID. |
| currency_iso required | string Currency ISO (e.g.: USD, EUR, BYN) |
| payment_sum required | number Payment amount. |
| payment_date required | string Date and time of payment. |
| period_from required | string Date from which the paid period begins (inclusive). |
| period_to required | string Date from which the paid period ends (inclusive). |
{- "salon_id": 123,
- "application_id": 123,
- "currency_iso": "EUR",
- "payment_sum": 990.99,
- "payment_date": "2022-01-01 10:10:00",
- "period_from": "2022-01-01 10:10:00",
- "period_to": "2022-02-01 10:10:00"
}{- "success": true,
- "data": {
- "id": 123
}
}Chargeback Notice
| payment_id required | number Example: 123 Payment ID. |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}This endpoint is used to send the list of SMS sender names available to the user. The user will be able to choose from any of the provided sender names.
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| salon_id required | number Location ID. |
| application_id required | number Application ID |
| short_names required | Array of strings Array of SMS names |
{- "salon_id": 123,
- "application_id": 123,
- "short_names": [
- "Altegio",
- "AL"
]
}{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}Note: This is not a callable endpoint.
This section describes how Altegio sends webhook notifications when specific events occur in the application-to-location lifecycle. The following event types are currently supported:
You can configure the webhook URL for receiving these events in your Altegio Developer Account.
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| salon_id required | number Location ID. |
| application_id required | number Application ID. |
| event required | string Enum: "uninstall" "freeze" Event Slug. |
| partner_token required | string Bearer token of the developer's location (to verify the origin of the webhook) |
{- "salon_id": 123,
- "application_id": 123,
- "event": "uninstall",
- "partner_token": "yasdfkjah2328aj"
}{- "success": false,
- "data": null,
- "meta": {
- "message": "Authentication needed."
}
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": {
- "active": 0,
- "salon": 1,
- "service_category": 0,
- "service": 1,
- "good": 1,
- "master": 1,
- "client": 1,
- "record": 1,
- "goods_operations_sale": 1,
- "goods_operations_receipt": 1,
- "goods_operations_consumable": 1,
- "goods_operations_stolen": 1,
- "goods_operations_move": 1,
- "finances_operation": 1
}, - "meta": [ ]
}| location_id required | number location ID |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
| urls required | Array of arrays List of addresses to send notifications to |
| active required | number 1 - notifications are active, 0 - not active |
| salon | number 1 - send events by location entity, 0 - do not send |
| service_category | number 1 - send events by service category entity, 0 - do not send |
| service | number 1 - send events by service entity, 0 - do not send |
| good | number 1 - send events by product entity, 0 - don't send |
| master | number 1 - send events by team member entity, 0 - don't send |
| client | number 1 - send events by client entity, 0 - don't send |
| record | number 1 - send events by record entity, 0 - do not send |
| goods_operations_sale | number 1 - send events by the item sale entity, 0 - do not send |
| goods_operations_receipt | number 1 - send events by the entity arrival of goods, 0 - do not send |
| goods_operations_consumable | number 1 - send events by the consumable write-off entity, 0 - do not send |
| goods_operations_stolen | number 1 - send events by the item write-off entity, 0 - do not send |
| goods_operations_move | number 1 - send events by the item movement entity, 0 - no send |
| finances_operation | number 1 - send events by entity financial operation, 0 - no send |
| self_sending | number 1 - The webhook creator will receive events triggered by their own actions, 0 - The webhook creator will not receive events triggered by their own actions |
{- "active": 0,
- "salon": 1,
- "service_category": 0,
- "service": 1,
- "good": 1,
- "master": 1,
- "client": 1,
- "record": 1,
- "goods_operations_sale": 1,
- "goods_operations_receipt": 1,
- "goods_operations_consumable": 1,
- "goods_operations_stolen": 1,
- "goods_operations_move": 1,
- "finances_operation": 1,
- "self_sending": 0
}{- "success": true,
- "data": {
- "active": 0,
- "salon": 1,
- "service_category": 0,
- "service": 1,
- "master": 1,
- "client": 1,
- "record": 1,
- "goods_operations_sale": 1,
- "goods_operations_receipt": 1,
- "goods_operations_consumable": 1,
- "goods_operations_stolen": 1,
- "goods_operations_move": 1,
- "finances_operation": 1
}, - "meta": [ ]
}Reference data including countries, cities, business types, and industry classifications.
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": [
- {
- "id": 7,
- "title": "USA",
- "full_title": "United States",
- "iso_code": "US",
- "phone_code": "1",
- "phone_template": "+1 xxx-xxx-xxxx",
- "phone_example": "+1 201-123-4567",
- "currency": "$",
- "exchange": 32.99,
- "lang_id": 2,
- "group_type": 1
}, - {
- "id": 56,
- "title": "France",
- "full_title": "France",
- "iso_code": "FR",
- "phone_code": "33",
- "phone_template": "+33 x xx xx xx xx",
- "phone_example": "+33 1 23 45 67 89",
- "currency": "€",
- "exchange": 11.18,
- "lang_id": 8,
- "group_type": 1
}
], - "meta": [ ]
}| country_id | number Country ID to get cities from |
| company_id | number Location ID. If passed, the city of the location will also be returned, regardless of whether it belongs to the specified country or not |
| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token |
{- "success": true,
- "data": [
- {
- "id": 2,
- "country_id": 1,
- "title": "New York"
}, - {
- "id": 1040,
- "country_id": 30,
- "title": "Belfast"
}, - {
- "id": 1201,
- "country_id": 38,
- "title": "București"
}, - {
- "id": 1334,
- "country_id": 31,
- "title": "Budapest"
}
], - "meta": [ ]
}| Accept required | string Example: application/vnd.api.v2+json e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer partner_token, User user_token |
{- "success": true,
- "data": [
- {
- "id": 10,
- "title": "Domestic services",
- "types": [
- {
- "id": 31,
- "title": "Studio",
- "business_group_id": 10
}
]
}, - {
- "id": 1,
- "title": "beauty",
- "types": [
- {
- "id": 1,
- "title": "Beauty Salons",
- "business_group_id": 1
}, - {
- "id": 25,
- "title": "Spa",
- "business_group_id": 1
}
]
}
], - "meta": {
- "count": 10
}
}