Download OpenAPI specification:
This is an official document describing the interaction with the Altegio online booking service. API allows third-party developers to perform most operations with the Altegio platform. 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/v1If 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.
All dates in the API are represented as strings in ISO 8601 format.
"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 you to work with the main entities of the platform:
Company Represents a business entity within the system.
User Users can manage one or more companies, depending on their assigned access rights. Not all users have access to all settings. To modify specific settings, a user API key with the appropriate privileges is required.
Service category All services offered by a company are organized into service categories.
Service Appointments are typically made for specific services provided by employees within a company. Each service includes parameters such as a price range and duration.
Employee Appointments are usually booked with a specific employee or resource (e.g., yoga room or massage table).
Work Schedule Each employee has a work schedule - time intervals during which the employee works with clients.
Time Slots Available time intervals during which an appointment can be scheduled with an employee.
Appointment The time interval at which a particular employee provides services to a specific client. The employee is busy during an appointment.
Client The person who schedules or receives services from the company.
There are four main structures used for working with data in the Altegio API:
Entity An individual item with unique properties and parameters, such as those listed above. Entities can be retrieved, modified, or deleted.
Entity Collection A group of entities, such as a list of companies or a list of services offered by companies. Entities can be added to or removed from a collection.
Communication entity Defines relationships between entities—for example, the link between an employee and a service, indicating that the employee provides that specific service. Communication entities can also have their own properties, such as an individual service price set for a particular employee.
Collection of Communication Entities A set of relationships between entities, such as a list of services offered by an employee along with their associated properties. You can add or manage relationships within the collection.
Returns a list of user roles along with permissions for each role.
| company_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": "Staff 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.
| company_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": "Staff 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.
| company_id required | number Example: 123 ID of a location. |
| user_id required | number Example: 123 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": 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.
| company_id required | number Example: 123 ID of a location. |
| user_id required | number Example: 123 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 |
| user_role | string Enum: "worker" "administrator" "accountant" "manager" "owner" Name of role |
Array of items List of user permissions values | |
| staff_id | number staff 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": { }
}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.
| company_id required | number Example: 123 ID of a location. |
| user_id required | number Example: 123 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 |
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.
| company_id required | number Example: 123 ID of a location. |
| user_id required | number Example: 123 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 |
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": { }
}This feature allows you to easily manage schedules for appointments (currently not supported) and events.
You can create multiple schedule series for different days of the week and customize each one to suit your needs. For each series, you can define specific staff, time slots, labels, resource instances, and more.
Search for a schedule based on the appointment or event linked to it, or based on the associated appointment or event.
| company_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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "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.
| company_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. |
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",
- "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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "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.
| company_id required | number Example: 123 ID of a location. |
| schedule_id required | number 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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "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.
| company_id required | number Example: 123 ID of a location. |
| schedule_id required | number 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.
| company_id required | number Example: 123 ID of a location. |
| schedule_id required | number 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 staff 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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "deleted_at": null,
- "event_status": "stable",
- "event_datetime": "2022-01-24 14: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.
| company_id required | number Example: 123 ID of a location. |
| schedule_id required | number 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 staff 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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "deleted_at": null,
- "event_status": "stable",
- "event_datetime": "2022-01-24 14: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.
| company_id required | number Example: 123 ID of a location. |
| schedule_id required | number 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.
| company_id required | number Example: 123 ID of a location. |
| schedule_id required | number 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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "deleted_at": null,
- "event_status": "stable",
- "event_datetime": "2022-01-24 14: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
}
}Creates a client schedule with a series of appointments for events, based on an existing schedule..
| company_id required | number Example: 123 ID of a location. |
| schedule_id required | number 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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "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.
| company_id required | number Example: 123 ID of a location. |
| schedule_id required | number 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-01 12:12:12",
- "updated_at": "2022-01-01 12:12:12",
- "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.
| company_id required | number Example: 123 ID of a location. |
| schedule_id required | number 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": { }
}Setting up notifications via the wizard in the notification showcase involves several steps:
After completing registration, the user must be redirected to this URL in the browser, along with any required data needed by the partner service.
| 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."
}
}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.
| 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."
}
}A webhook notification must be sent to this address to inform Altegio of a successful payment made on the partner service’s side.
| 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
}
}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.
| 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.
| 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"
}This endpoint is used to retrieve information about the application's installation status in a specific location.
| salon_id required | number Location ID |
| application_id required | number Application ID |
{- "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.
| salon_id required | number Location ID |
| application_id required | number Application ID |
{- "success": true,
- "data": null,
- "meta": { }
}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 |
{- "success": true,
- "data": [
- {
- "id": "1050",
- "title": "La Visage",
- "short_descr": "Beauty saloon",
- "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.730610",
- "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": "R",
- "group_priority": 900
}, - {
- "id": "1051",
- "title": "La Visage 2",
- "short_descr": "Beauty saloon",
- "active": "1",
- "phone": "+1-315-555-0175",
- "country_id": 7,
- "country": "United States",
- "city_id": 181,
- "city": "New York",
- "timezone_name": "America/New_York",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": "40.730610",
- "coordinate_lon": "-73.935242",
- "phone_confirmation": false,
- "active_staff_count": 3,
- "next_slot": "2023-03-23T10:10:00+0300",
- "app_ios": "",
- "app_android": "",
- "currency_short_title": "R",
- "group_priority": 901
}
], - "meta": { }
}To enable SMS sending, the operator must provide the API endpoint (url_operator) to which Altegio will send the relevant requests.
API requests are authorized using the RFC 6749 Resource Owner Password Credentials Grant method. Each request must include an Authorization HTTP header containing an access token in the following format:
Authorization: Bearer
If an error occurs while sending an SMS, the response will include the appropriate HTTP status code. In some cases, a descriptive error message will also be included in the response body. All API methods may return the following error codes: |
| 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 |
| destination_params required | object an object containing the send ID and phone number parameters |
| from required | string Sender name |
| text required | string departure text |
| type required | string sending type (sms, viber) |
| dispatch_type required | string mailing type (service - service, adds - advertising) |
| delivery_callback_url required | string url to which message statuses are sent |
[- {
- "id": "232674",
- "ext_id": "609aff0fca92466d6a1747dd83f05943a8c9600d"
}, - {
- "id": "232674",
- "error_code": 32,
- "error_message": "explicit error message"
}
]When a user changes their password, their API key is regenerated. As a result, reauthorization is required using the new API key.
| Attribute | Type | Description |
|---|---|---|
| login | string | The user's phone number in the format 380000000000, or their email address. |
| password | string | User password |
| 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"
}{- "id": 123456,
- "user_token": "wec23fh8cDfFV4432fc352456",
- "name": "James Smith",
- "phone": "+1-315-555-0175",
- "login": "j.smith",
- "is_approved": true
}When a user of an online account changes their password, their API key will change and a new authorization will be required
| Attribute | Type | Description |
|---|---|---|
| login | string | The visitor's phone number in the format 380000000000, or their email address. |
| password | string | Visitor password |
| 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"
}{- "id": 123456,
- "user_token": "wec23fh8cDfFV4432fc352456",
- "name": "James Smith",
- "phone": "+1-315-555-0175",
- "login": "j.smith",
}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 staff 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/specialist/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 booking form 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": {
- "steps": [
- {
- "step": "master",
- "title": "Choose a specialist",
- "num": 2,
- "hidden": "0",
- "default": -1
}, - {
- "step": "service",
- "title": "Choose a service",
- "num": 1,
- "hidden": "1",
- "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:
| langCode 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 wizard",
- "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 master",
- "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": "Employee 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 employee",
- "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 specialist",
- "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 professionals:",
- "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": "Employee",
- "genitive": "employee"
}, - "service": "Service",
- "time": "Time"
}, - "master": {
- "master": "Specialist",
- "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 specialist",
- "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 specialist",
- "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"
}James) - Client name| company_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"
}
}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, specialists...) |
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 specialist the client wants to book with (0 if Any specialist 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 staff members available for booking. Occurs if a default staff 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.
| company_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, specialists...) |
{- "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 entry, 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, specialists...) |
| 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 specialist the client wants to book with (0 if any specialist 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 staff members. Returned with HTTP status 422 and error code 436. No staff members are available at the selected time (commonly occurs when using a default staff 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.
| company_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, specialist) |
{- "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": [ ]
}| company_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.730610",
- "coordinate_lon": "-73.935242"
}, - "staff": {
- "id": 924,
- "name": "Alice",
- "spec": "about eu",
- "show_rating": "1",
- "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"
}
}| company_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.730610",
- "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": "Specialist 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
}| company_id required | number location ID |
| activity_id required | number 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": [ ]
}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 staff member/organization |
| working_dates | array of dates | An array of dates when the staff 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 staff 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:
| company_id required | number location ID |
| service_ids[] | string Service ID. Filter by the list of service identifiers |
| staff_id | number Example: staff_id=0 staff member ID. Filter by staff 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": {
- "9": [
- "4",
- "5",
- "8",
- "9",
- "12",
- "13",
- "16",
- "17",
- "20",
- "21",
- "24",
- "25",
- "28",
- "29",
- "30"
], - "10": [
- "1",
- "4",
- "5",
- "8",
- "9",
- "12",
- "13",
- "16",
- "17",
- "20",
- "21",
- "24",
- "25"
]
}, - "booking_dates": [
- "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",
- "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",
- "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",
- "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"
], - "working_days": {
- "9": [
- "4",
- "5",
- "8",
- "9",
- "12",
- "13",
- "16",
- "17",
- "20",
- "21",
- "24",
- "25",
- "28",
- "29",
- "30"
], - "10": [
- "1",
- "4",
- "5",
- "8",
- "9",
- "12",
- "13",
- "16",
- "17",
- "20",
- "21",
- "24",
- "25"
]
}, - "working_dates": [
- "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",
- "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",
- "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",
- "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 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 staff member is set) |
| image | string | Image services |
If you need to get the services provided by a specific specialist, then you need to use the filter by specialist. The following filters are available:
| company_id required | number Example: 4564 location ID |
| staff_id | number Example: staff_id=0 staff member ID. Filter by staff member ID Default: 0 |
| datetime | number Example: datetime=`` 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 specialist 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": [ ]
}The staff 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:
| company_id required | number location ID |
| staff_id required | number staff 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-21T23:00:00.000+03:00",
- "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": [ ]
}Each object from the array of staff members available for booking has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | staff member ID |
| name | string | staff member name |
| specialization | string | staff member specialization |
| position | object | staff member position |
| bookable | boolean | Does the staff member have sessions available for booking |
| weight | number | staff member weight. When withdrawing, staff members are sorted by weight, heavier first |
| show_rating | number | Whether to show staff member's rating (1 - show, 0 - don't show) |
| rating | number | staff member rating |
| votes_count | number | Number of votes rated staff member |
| comments_count | number | Number of comments to a staff member |
| avatar | string | Path to staff member avatar file |
| information | string | Additional information about the staff 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:
| company_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": "1",
- "rating": "3",
- "votes_count": "1",
- "comments_count": "0",
- "weight": "11",
- "information": "<span></span>",
- "seance_date": "2025-09-21T23:00:00.000+03:00",
- "seances": [ ]
}, - {
- "id": "32",
- "name": "Peter",
- "bookable": false,
- "specialization": "Therapist",
- "position": [ ],
- "show_rating": "1",
- "rating": "4",
- "votes_count": "1",
- "comments_count": "0",
- "weight": "8",
- "information": "<span></span>"
}
], - "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:
| company_id required | number location ID |
| date required | string date in iso8601 format. Filter by booking date (eg '2015-09-30') |
| staff_id required | number Example: 0 staff member ID. Filter by staff 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": [ ]
}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"
}| 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 |
When a user of an online account changes their password, their API key will change and a new authorization will be required
| Attribute | Type | Description |
|---|---|---|
| login | string | The visitor's phone number in the format 380000000000, or their email address. |
| password | string | Visitor password |
| 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"
}{- "id": 123456,
- "user_token": "wec23fh8cDfFV4432fc352456",
- "name": "James Smith",
- "phone": "+1-315-555-0175",
- "login": "j.smith",
}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"
}
}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": [ ]
}Updating a specialist’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",
}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",
- "short_descr": "Beauty saloon",
- "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.730610",
- "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": "R",
- "group_priority": 900
}, - {
- "id": "1051",
- "title": "La Visage 2",
- "short_descr": "Beauty saloon",
- "active": "1",
- "phone": "+1-315-555-0175",
- "country_id": 7,
- "country": "United States",
- "city_id": 181,
- "city": "New York",
- "timezone_name": "America/New_York",
- "address": "New York, 787 Jackson Drive",
- "coordinate_lat": "40.730610",
- "coordinate_lon": "-73.935242",
- "phone_confirmation": false,
- "active_staff_count": 3,
- "next_slot": "2023-03-23T10:10:00+0300",
- "app_ios": "",
- "app_android": "",
- "currency_short_title": "R",
- "group_priority": 901
}
], - "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.730610",
- "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.730610",
- "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.
| 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.730610",
- "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
| 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.730610",
- "coordinate_lon": "-73.935242",
- "description": "The <strong>James Smith</strong> location",
- "business_type_id": 1,
- "short_descr": "Beauty studio"
}{- "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.730610",
- "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": { }
}Delete a 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."
}
}| 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 staff 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": [ ]
}| company_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": [ ]
}| company_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 staff 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": [ ]
}| company_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 |
| 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"
}
]
}
]| company_id required | number location ID |
| id required | number Service Category ID |
| staff_id | number staff member ID (to get categories associated with a staff 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
}
}Get a list of service categories
| company_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": [ ]
}Method to create a service
| company_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 staff members who provide the service, along with the duration of the service for each staff 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": "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
}
]
}, - "meta": [ ]
}1) - company ID1) - service ID| company_id required | number location ID |
| service_id required | number Service ID, if you need to work with a specific service. |
| staff_id | number staff member ID, if you want to filter by staff 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.00",
- "price_max": "1000.00",
- "discount": "0",
- "comment": "",
- "weight": "2",
- "active": "1",
- "api_id": "",
- "staff": [ ]
}, - {
- "id": "83169",
- "title": "Men's haircut",
- "category_id": "83167",
- "price_min": "1300.00",
- "price_max": "1300.00",
- "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": "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
}
}Method to change the service
| company_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 staff 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": [ ]
}| company_id required | number location ID |
| service_id required | number Service ID, if you need to work with a specific service. |
| staff_id | number staff member ID, if you want to filter by staff 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.00",
- "price_max": "1000.00",
- "duration": "3600",
- "discount": "0",
- "comment": "",
- "weight": "2",
- "active": "1",
- "api_id": "",
- "staff": [ ]
}, - {
- "id": "83169",
- "title": "Men's haircut",
- "category_id": "83167",
- "price_min": "1300.00",
- "price_max": "1300.00",
- "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": "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
| company_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 staff members who provide the service, along with the duration of the service for each staff 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": "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
}
]
}, - "meta": [ ]
}Method to remove a service
| company_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 |
Creates an employee service link with provided duration and bill of materials.
| company_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 staff 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.
| company_id required | number Example: 123 ID of a location. |
| service_id required | number Example: 123 ID of service. |
| master_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.
| company_id required | number Example: 123 ID of a location. |
| service_id required | number Example: 123 ID of service. |
| master_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": { }
}1) - company ID| company_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": [ ]
}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.
| company_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"
}
}| 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 |
| 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
}
}1) - company ID1) - Page number20) - Number of clients per page| company_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 |
| id | number Example: 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-21T23:00:00.000+03:00",
- "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": 0,
- "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
}
}| company_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 |
| custom_fields | 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": [ ]
}| company_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": [ ]
}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 |
| company_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
}
}| company_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.
| company_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-31 12:34:56",
- "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": "staff member"
}
}, - "company": {
- "id": 123,
- "title": "My branch office."
}
}
], - "records": [
- {
- "id": 123,
- "comment": "Comment to post",
- "date": "2021-01-31 12:34:56",
- "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": "staff 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
}
}
}
}Returns a list of a comments for a client and a files in a client details uploads history.
| company_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-01 12:12:12",
- "update_date": "2023-01-01 12:12:12",
- "type": "default",
- "text": "Comment for a client",
- "files": [ ],
}
], - "meta": {
- "count": 10
}
}Creates a new text comment for a client.
| company_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-01 12:12:12",
- "update_date": "2023-01-01 12:12:12",
- "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.
| company_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": { }
}| company_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": 0,
- "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": [ ]
}| company_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 |
| custom_fields | 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": [ ]
}| company_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 |
Use this to retrieve appointments for a specific staff 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
| company_id required | number location ID |
| page | number Example: page=1 Page number |
| count | number Example: count=50 Number of appointments per page |
| staff_id | number Example: staff_id=7572 staff member ID, if you only need appointments for a specific staff 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 Example: include_consumables=0 Flag for including a list of consumables by appointments in the response |
| include_finance_transactions | number Example: include_finance_transactions=0 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-16 16: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-16 16: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 staff 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"] }
| company_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 staff 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-21 02:45: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-21 02:45: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 staff 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
}
}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.730610",
- "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": 1,
- "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
}
}| company_id required | number location ID |
| record_id required | number Appointment ID |
| include_consumables | number Example: include_consumables=0 |
| include_finance_transactions | number Example: include_finance_transactions=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 |
{- "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 staff 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
| company_id required | number location ID |
| record_id required | number Appointment ID |
| include_consumables | number Example: include_consumables=0 |
| include_finance_transactions | number Example: include_finance_transactions=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 |
| staff_id | number staff 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": [ ]
}| company_id required | number location ID |
| record_id required | number Appointment ID |
| include_consumables | number Example: include_consumables=0 |
| include_finance_transactions | number Example: include_finance_transactions=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 |
| visit_id required | number Example: 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": {
- "attendance": 1,
- "datetime": "2025-09-21T23:00:00.000+03:00",
- "comment": 0,
- "records": [
- {
- "id": 37955315,
- "company_id": 4564,
- "staff_id": 55436,
- "services": [ ],
- "events": [ ],
- "goods_transactions": [ ],
- "staff": {
- "id": 55436,
- "name": "Kevin Spacey",
- "specialization": "Specialist in manicure and pedicure",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "rating": 4.89,
- "votes_count": 0
}, - "client": {
- "id": 4240788,
- "name": "dev1",
- "phone": 71000000001,
- "card": "000000415",
- "email": "",
- "success_visits_count": 58,
- "fail_visits_count": 9
}, - "date": "2025-09-21T23:00:00.000+03:00",
- "datetime": "2025-09-21T23:00:00.000+03:00",
- "create_date": "2025-03-22T17:55:14+0300",
- "comment": "",
- "online": false,
- "visit_attendance": 1,
- "attendance": 1,
- "confirmed": 1,
- "seance_length": 3600,
- "length": 3600,
- "sms_before": 1,
- "sms_now": 1,
- "sms_now_text": "",
- "email_now": 1,
- "notified": 0,
- "master_request": 0,
- "api_id": "0",
- "from_url": "",
- "review_requested": 0,
- "visit_id": 8260852,
- "created_user_id": 999290,
- "deleted": 0,
- "paid_full": 0,
- "prepaid": 0,
- "prepaid_confirmed": 0,
- "last_change_date": "2025-03-28T17:46:48+0300",
- "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"
}
]
}
]
}, - "meta": [ ]
}Block "kkm_transaction_details_container"
Flag "last_operation_type"
| Meaning | Description |
|---|---|
| 0 | Print return receipt |
| 1 | Print sales receipt |
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 |
| salon_id required | number Example: Location ID |
| record_id required | number Example: Appointment ID |
| visit_id required | number Example: Visit ID |
| Accept required | string e.g. application/vnd.api.v2+json |
| Content-Type required | string application/json |
| Authorization required | string Bearer access_token, User user_token |
{- "success": true,
- "data": {
- "payment_transactions": [
- {
- "id": 6023813,
- "document_id": 8172806,
- "date": "2025-09-21T23:00:00.000+03:00",
- "type_id": 5,
- "expense_id": 5,
- "account_id": 32299,
- "amount": 10,
- "client_id": 4241492,
- "master_id": 0,
- "supplier_id": 0,
- "comment": "",
- "item_id": 1162679,
- "target_type_id": 1,
- "record_id": 13136569,
- "goods_transaction_id": 0,
- "expense": {
- "id": 5,
- "title": "Provision of services"
}, - "account": {
- "id": 32299,
- "title": "Deposits (payment in cash)"
}, - "client": {
- "id": "4241492",
- "name": "ModulKassaClient",
- "phone": "+1-315-555-0175"
}, - "master": [ ],
- "supplier": [ ]
}
], - "loyalty_transactions": [
- {
- "id": 10614,
- "status_id": 1,
- "amount": 0.5,
- "type_id": 2,
- "program_id": 145,
- "card_id": 20013,
- "salon_group_id": 646,
- "item_id": 0,
- "item_type_id": 0,
- "item_record_id": 0,
- "goods_transaction_id": 0,
- "is_discount": false,
- "is_loyalty_withdraw": false,
- "type": {
- "id": 2,
- "title": "Loyalty programs"
}
}
], - "kkm_transaction_details_container": {
- "last_operation_type": 0,
- "transactions": [
- {
- "id": 1047,
- "print_date": "2025-09-21T23:00:00.000+03:00",
- "printed_count": 1,
- "sum": 13,
- "type": {
- "id": 0,
- "title": "Sale operation"
}, - "status": {
- "id": 1,
- "title": "Successfully"
}, - "document": {
- "id": 2045,
- "type": 7,
- "type_title": "Visit"
}, - "cashier": {
- "id": 746310,
- "name": "Jack Smith"
}
}
]
}, - "items": [
- {
- "id": 0,
- "item_id": 1162679,
- "item_type_id": 1,
- "record_id": 13136569,
- "item_title": "Haircut at the TOP-master",
- "amount": 2,
- "first_cost": 20,
- "manual_cost": 10,
- "discount": 50,
- "cost": 10,
- "master_id": 13136569,
- "good_id": 0,
- "service_id": 1162679,
- "event_id": 0,
- "is_service": true,
- "is_event": false,
- "is_good": false
}
]
}, - "meta": [ ]
}| visit_id required | number Example: Visit ID |
| record_id required | number Example: 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 |
| attendance required | number Visit status (2 - The user confirmed the appointment, 1 - The user came, the services were provided, 0 - the user is waiting, -1 - the user did not show) |
| comment required | string A comment |
Array of objects Array of objects of new commodity transactions | |
| deleted_transaction_ids | Array of objects Array of instance IDs |
Array of objects Array of commodity transactions objects | |
Array of objects Array of objects with services | |
| fast_payment | number Quick payment 1 - cash, 2 - cashless, 129 - cash and print, 130 - cashless and print |
| visit_id required | number Example: 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 |
| company_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 staff member ID |
| capacity required | number Capacity |
| resource_instance_ids | Array of numbers Array of resource instance IDs |
| force required | boolean Ignore errors (busy master/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": [ ]
}| company_id required | number location ID |
| activity_id required | number 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": [ ]
}| company_id required | number location ID |
| activity_id required | number 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 staff member ID |
| capacity required | number Capacity |
| resource_instance_ids | Array of numbers Array of resource instance IDs |
| force required | boolean Ignore errors (busy master/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": [ ]
}| company_id required | number location ID |
| activity_id required | number 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"
}
}| company_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
}
}| company_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": [ ]
}| company_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": [ ]
}| company_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": 0,
- "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
}
}| company_id required | number Example: 4564 location ID |
| staff_id | number staff 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 staff 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": "Kim Kardashian",
- "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
| company_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
}
}| company_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": [ ]
}| company_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": [ ]
}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
| company_id required | number Example: 1 |
| activity_id required | number 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": 1,
- "prepaid": "allowed",
- "position": [ ]
}, - "records": [ ],
- "labels": [ ]
}
], - "meta": {
- "count": 2
}
}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 staff member relative to that date
| company_id required | number location ID |
| date required | string date in iso8601 format. Filter by appointment date (eg '2015-09-30') |
| staff_id | number staff 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 comment object has the following fields:
| Field | Type | Description |
|---|---|---|
| id | number | Comment ID |
| salon_id | number | location ID |
| type | number | 1 - comment to the specialist, 0 - to the salon |
| master_id | number | Specialist 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) |
| company_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') |
| staff_id | number staff 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": [ ]
}| company_id required | number location ID |
| staff_id required | number staff member ID, specify when creating a review for a staff 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": [ ]
}location User object
| company_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": [ ]
}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 |
| company_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
}
}| company_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."
}
}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 |
| company_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": [ ]
}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 |
| company_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": [ ]
}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 |
| company_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!
| company_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"
}
}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: staff 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
| company_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 Example: account_id=0 Checkout ID |
| supplier_id | number Example: supplier_id=0 Supplier ID |
| client_id | number Example: client_id=0 Client ID |
| user_id | number Example: user_id=0 User ID |
| master_id | number Example: master_id=0 staff member ID |
| type | number Example: type=0 transaction type |
| real_money | number Example: real_money=0 Indicates whether this is a real-money (fiat) transaction |
| deleted | number Example: deleted=0 whether the transaction was deleted |
| start_date | number Example: start_date='' period start date |
| end_date | number Example: end_date='' period end date |
| balance_is | number Example: balance_is=0 0 - any balance, 1 - positive, 2 - negative |
| document_id | number Example: document_id=0 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.00",
- "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
| company_id required | number location ID |
| record_id | number Example: record_id=0 Appointment ID |
| visit_id | number Example: visit_id=0 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.00",
- "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": [ ]
}| company_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 staff 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": "Transaction comment",
- "date": "2025-09-21T23:00:00.000+03: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": [ ]
}| company_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.00",
- "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": [ ]
}| company_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 staff 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.00",
- "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": [ ]
}| company_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 |
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.
| company_id required | number Example: 12345 location ID |
[- {
- "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 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 |
| group_id required | number Chain ID |
| 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 |
{- "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
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 cards of an authorized user with programs, filtering cards by location chain / location
| group_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
}
]
}
]
}| 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 |
| 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 |
| 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": "01010101",
- "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
}
]
}
]
}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": { }
}| 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"
}
]Manual withdraw/deposit to loyalty card in location
| company_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": { }
}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 |
| company_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"
}
}
]Applying a promotion to a visit, it only makes sense if there is a visit
| company_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.
| company_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
}
]
}The amount deducted will not exceed the available bonus balance. If the value is set to 0, no write-off transaction will occur
| company_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.
| company_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 referral program to a visit
| company_id required | number Location ID |
| group_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
}
]
}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
}
}
]| company_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": [ ]
}| company_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 staff 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": [ ]
}| 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
}
}| company_id required | number location ID |
| entity required | number Category object (0 - general tags, 1 - customer tags, 2 - appointment tags) |
| 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": "241625",
- "salon_id": "68570",
- "title": "The staff member is important",
- "color": "#ff2828",
- "icon": "lock",
- "entity": "2",
- "deleted": "0",
- "not_editable": "1"
}, - {
- "id": "241626",
- "salon_id": "68570",
- "title": "The staff member is not important",
- "color": "#009800",
- "icon": "unlock",
- "entity": "2",
- "deleted": "0",
- "not_editable": "1"
}
]| 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 |
| 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": [ ]
}| company_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": [ ]
}| company_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"
}
}| company_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"
}
}| company_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
}
}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 |
| company_id required | number location ID |
| search_term | string Search query by name, article number or barcode |
| max_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
}
}##№ 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) |
| company_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
}
}| company_id required | number location ID |
| parent_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": [ ]
}| company_id required | number location ID |
| 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": [ ]
}| company_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
}
}The method allows you to create a product category.
| company_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": [ ]
}The method allows you to edit the product category
| company_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
| company_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 |
| company_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": [ ]
}| company_id required | number Location ID |
| staffId required | number staff member ID |
| serviceId 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": [ ]
}| company_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": [ ]
}| company_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 |
| 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
}
}| company_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 |
| 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
}
}| company_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": [ ]
}| company_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.00",
- "discount": "10.00",
- "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": [ ]
}| company_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 staff 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": [ ]
}| company_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": 1,
- "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 |
| company_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 staff 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": [ ]
}| company_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 |
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.
| company_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 4, transfer 5) |
| comment | string A comment |
| create_date required | string <date-time> Document creation date |
| master_id | number staff 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.730610",
- "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": [ ]
}| company_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.730610",
- "coordinate_lon": "-73.935242",
- "zip": "",
- "phones": [ ],
- "site": "www.example.com"
}, - "user": {
- "id": "999290",
- "name": "User name",
- "phone": "+1-315-555-0175"
}
}, - "meta": [ ]
}| company_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.730610",
- "coordinate_lon": "-73.935242",
- "zip": "",
- "phones": [ ],
- "site": "www.example.com"
}, - "user": {
- "id": "999290",
- "name": "User name",
- "phone": "+1-315-555-0175"
}
}, - "meta": [ ]
}| company_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.730610",
- "coordinate_lon": "-73.935242",
- "zip": "",
- "phones": [ ],
- "site": "www.example.com"
}, - "user": {
- "id": "999290",
- "name": "User name",
- "phone": "+1-315-555-0175"
}
}, - "meta": [ ]
}| company_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 |
| 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": [ ]
}| 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
}
}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.
| salon_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 staff 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.730610",
- "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": [ ]
}| company_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
}
}| 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": "1",
- "title": "USA",
- "full_title": "United States",
- "phone_code": "1",
- "phone_template": "+1 xxx xxx-xx-xx",
- "phone_example": "+1 760 230-63-78",
- "currency": "USD",
- "exchange": "1"
}, - {
- "id": "2",
- "title": "Latvia",
- "full_title": "Latvian republic",
- "phone_code": "371",
- "phone_template": "+371 xx xxx xxx",
- "phone_example": "+371 21 654 987",
- "currency": "EUR",
- "exchange": "50"
}
], - "meta": [ ]
}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"
}
}
]
}start_date: Report date
master_id: staff member ID
| company_id required | integer location ID |
| start_date | string Example: start_date='' period start date |
| master_id | integer Example: master_id=0 staff 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": [ ]
}| field_category required | string Example: record Field category.
|
| company_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.
|
| company_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.
|
| company_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.
|
| company_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"
}
}| 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
}| company_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 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": [ ]
}| 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"
}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 |
| countryId 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 |
{ }| 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"
}
]| 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 (Root Type for LoyaltyNotificationMessageTemplateRequest) Body of the request to bind the loyalty notification template | |
object (Root Type for LoyaltyNotificationMessageTemplateRequest) 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-21T23:00:00.000+03:00",
- "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-21T23:00:00.000+03:00",
- "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.730610",
- "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-21T23:00:00.000+03:00",
- "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.730610",
- "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 (Root Type for LoyaltyNotificationMessageTemplateRequest) Body of the request to bind the loyalty notification template | |
object (Root Type for LoyaltyNotificationMessageTemplateRequest) 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-21T23:00:00.000+03:00",
- "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.730610",
- "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 |
| 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
}
}1) - location ID1) - product ID (gift card/ membership)| company_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": [ ]
}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 |
| company_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
}
}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}| company_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 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 |
| company_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
}
}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.
| company_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
}
}The method allows you to get a list of promotions that are active for the specified location.
| company_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
}
}The method allows you to get statistics on returning, new and lost customers
| company_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-21T23:00:00.000+03:00",
- "new_count": 0,
- "old_count": 0
}, - {
- "date": "2025-09-21T23:00:00.000+03:00",
- "new_count": 0,
- "old_count": 0
}
]
}, - "meta": [ ]
}The method allows you to get statistics on revenue.
| company_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-21T23:00:00.000+03:00",
- "new_sum": 0,
- "old_sum": 0
}, - {
- "date": "2025-09-21T23:00:00.000+03:00",
- "new_sum": 0,
- "old_sum": 0
}
]
}, - "meta": [ ]
}The method allows you to get the return statistics for a staff member
| company_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 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 specialist 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 specialist was specified when appointment (false if "any specialist" 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 staff 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 | staff member ID |
| name | string | staff member name |
| specialization | string | staff member specialization |
| position | object | staff member position |
| show_rating | number | Whether to show staff member's rating (1 - show, 0 - don't show) |
| rating | number | staff member rating |
| votes_count | number | Number of votes rated staff member |
| comments_count | number | Number of comments to a staff member |
| avatar | string | Path to staff member avatar file |
| 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.730610",
- "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": "Specialist 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
}, - {
- "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.730610",
- "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": "Specialist 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
}
], - "meta": [ ]
}Creates a new employee with a minimal set of parameters.
| company_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 staff member. |
| specialization required | string Specialization of a staff member. |
| position_id required | number or null ID of a position that should be linked to a staff member. |
| phone_number required | string or null Phone number of a user that should be linked to a staff member (without "+", 9 to 15 digits). |
| user_email required | string <email> Email address of the user to be created or linked to the staff 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": "Specialist",
- "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": { }
}| company_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 staff member name |
| specialization | string staff member specialization |
| weight | number staff member weight. staff members are sorted by weight on exit, heavier first |
| information | string staff member information (HTML format) |
| api_id | string External staff member ID |
| hidden | number Display status in online appointment, 1 - hidden, 0 - not hidden |
| fired | number The staff 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": 0,
- "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": [ ]
}| company_id required | number Location ID |
| staff_id required | number staff member ID, if you need to work with a specific staff 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": "staff member 1",
- "company_id": 176275,
- "specialization": "specialist",
- "position": {
- "id": 1,
- "title": "Administrator"
}, - "fired": 0,
- "status": 0,
- "hidden": 0,
- "user_id": 12345
}
], - "meta": {
- "total_count": 1
}
}| company_id required | number location ID |
| staff_id required | number staff member ID, if you need to work with a specific staff 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": "0",
- "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": "0",
- "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": "0",
- "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": [ ]
}| company_id required | number location ID |
| staff_id required | number staff 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 staff member name |
| specialization | string staff member specialization |
| weight | number staff member weight. staff members are sorted by weight on exit, heavier first |
| information | string staff member information (HTML format) |
| api_id | string External staff member ID |
| hidden | number Display status in online appointment, 1 - hidden, 0 - not hidden |
| fired | number The staff 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": 0,
- "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": [ ]
}| company_id required | number location ID |
| staff_id required | number staff 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 |
43877) - ID of the location chain| group_id required | number Location chain ID |
| phone required | string Example: phone='79264037640' 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": [ ]
}| 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": 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
}
}| company_id required | number location ID |
| staff_id required | number staff member ID. |
| start_date required | number Example: '' Period start date |
| end_date required | number Example: '' 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": [ ]
}| company_id required | number location ID |
| staff_id required | number staff 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 |
| date required | string date |
| is_working required | boolean Working date or not |
| slots required | object Array of (from, to) working hours |
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 |
| company_id required | number location ID |
| date required | string date in iso8601 format. Filter by appointment date (eg '2015-09-30') |
| staff_id required | number staff 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": [ ]
}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 |
| company_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='' Period start date |
| end_date | number Example: end_date='' 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 |
| company_id required | number Location ID |
| 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": [ ]
}| document_id required | integer Sales Document ID |
| company_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 | integer Sales Document ID |
| payment_transaction_id required | integer transaction ID |
| company_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 |
| company_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 | number Document ID |
| company_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": [ ]
}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
| 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-17 23:52:21"
}, - {
- "id": 66795308,
- "client_id": 0,
- "caller_phone": "791112345678",
- "record_link": "",
- "duration": 0,
- "status": "missed",
- "type": "incoming",
- "call_date": "2023-01-17 12:31:12"
}
]
}| chain_id required | number Example: 123 Chain ID. |
| abonementId required | number Example: 123 Membership ID. |
| freeze_till required | string The date until which the membership will be frozen. |
{- "freeze_till": "string"
}[- {
- "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"
}
}
]
}
}
}
], - "meta": {
- "count": 1
}
}
]| chain_id required | number Example: 123 Chain ID. |
| abonementId required | number Example: 123 Membership ID. |
[- {
- "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"
}
}
]
}
}
}
], - "meta": {
- "count": 1
}
}
]| chain_id required | number Example: 123 Chain ID. |
| abonementId required | number Example: 123 Membership ID. |
| period required | number Period duration |
| period_unit_id required | number Period type (1 - day, 2 - week, 3 - month, 4 - year) |
{- "period": 0,
- "period_unit_id": 0
}[- {
- "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"
}
}
]
}
}
}
], - "meta": {
- "count": 1
}
}
]| chain_id required | number Example: 123 Chain ID. |
| abonementId required | number Example: 123 Membership ID. |
| united_balance_services_count required | number Number of services for a membership with a pooled balance |
required | Array of objects Transfer service amount for a membership with a separate balance |
{- "united_balance_services_count": 0,
- "services_balance_count": [
- {
- "service_id": 0,
- "balance": 0
}
]
}[- {
- "success": false,
- "meta": {
- "message": "Can't change balance"
}
}
]| 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
}
}
]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
}
}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
}
}| 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": [ ]
}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 staff 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 |
| 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": [ ]
}| recordToken required | string Short appointment token |
{- "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": 1,
- "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": [ ]
}| recordToken required | string Short appointment token |
| 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": [ ]
}| company_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"
}
}
}
]
}| master_tips_settings_id required | integer tip settings id |
| 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": 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": "specialist",
- "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
}
}| company_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": "specialist",
- "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
}
}The method allows location owner to search payroll calculations for the period for a staff member.
| company_id required | number Example: 123 ID of a location. |
| staff_id required | number Example: 123 ID of a staff 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.
| company_id required | number Example: 123 ID of a location. |
| staff_id required | number Example: 123 ID of a staff 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 you to get salary calculation schemes count for a staff member before trying to obtain calculation data.
| company_id required | number Example: 123 ID of a location. |
| staff_id required | number Example: 123 ID of a staff 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 get mutual settlements of a staff member.
| company_id required | number Example: 123 ID of a location. |
| staff_id required | number Example: 123 ID of a staff 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 location owner to get mutual settlements of a staff member grouped by date.
| company_id required | number Example: 123 ID of a location. |
| staff_id required | number Example: 123 ID of a staff 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 the calculation for the period for a staff member.
| company_id required | number Example: 123 ID of a location. |
| staff_id required | number Example: 123 ID of a staff 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 location owner to get the calculation for the period for a staff member grouped by date.
| company_id required | number Example: 123 ID of a location. |
| staff_id required | number Example: 123 ID of a staff 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 you to get mutual settlements of a specific staff member. In the user's access rights, the checkbox "Access to payroll only for a specific staff member" must be specified.
| company_id required | number Example: 123 ID of a location. |
| staff_id required | number Example: 123 ID of a staff 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 own salary calculation schemes for a specific staff member. In the user's access rights, the checkbox "Access to payroll only for a specific staff member" must be specified.
| company_id required | number Example: 123 ID of a location. |
| staff_id required | number Example: 123 ID of a staff 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
}
}The method allows you to get the calculation for the period for a specific staff member. In the user's access rights, the checkbox "Access to payroll only for a specific staff member" must be checked.
| company_id required | number Example: 123 ID of a location. |
| staff_id required | number Example: 123 ID of a staff 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 notification settings in a location.
| company_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.
| company_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)
| company_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": [ ]
}The method allows you to create a product
| 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 |
| 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": 1,
- "critical_amount": 0,
- "desired_amount": 0,
- "actual_amounts": [
- {
- "storage_id": "987",
- "amount": "1000000"
}
], - "last_change_date": "2017-01-01T12:00:00+0400"
}
], - "meta": [ ]
}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)
| company_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": 1,
- "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.
| company_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": 1,
- "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
| company_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 |
| 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": {
- "confirm_number": false,
- "any_master": true,
- "seance_delay_step": 90,
- "activity_online_record_clients_count_max": 1
}, - "meta": [ ]
}| 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 |
| confirm_number required | boolean Confirm customer number via SMS |
| any_master required | boolean "Any staff member" mode |
| seance_delay_step required | integer [ 0 .. 1380 ] Delay to the next session, in minutes from 0 to 23 hours (inclusive) in increments of 30 minutes |
| activity_online_record_clients_count_max required | integer [ 1 .. 255 ] Maximum number of seats in one group event |
{- "confirm_number": false,
- "any_master": true,
- "seance_delay_step": 90,
- "activity_online_record_clients_count_max": 1
}{- "success": true,
- "data": {
- "confirm_number": false,
- "any_master": true,
- "seance_delay_step": 90,
- "activity_online_record_clients_count_max": 1
}, - "meta": [ ]
}| 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": [ ]
}| 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": [ ]
}| company_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": [ ]
}| company_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 staff member ID |
| master_step_hide | boolean Default: false staff 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": [ ]
}| company_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": [ ]
}| company_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 |
| company_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 staff member ID |
| master_step_hide required | boolean staff 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 a list of current positions in the location
| company_id required | number location ID |
{- "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.
| company_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 the main indicators of the location for the selected period and compare with the previous period of the same duration
| company_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) |
| staff_id | integer ID of the location staff member whose work needs to be analyzed |
| position_id | integer location position ID to analyze the work of all staff members belonging to the same position |
| user_id | integer The user ID of the location whose work you want to analyze |
{- "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
}| company_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) |
| staff_id | integer ID of the location staff member whose work needs to be analyzed |
| position_id | integer location position ID to analyze the work of all staff members belonging to the same position |
| user_id | integer The user ID of the location whose work you want to analyze |
[- {
- "label": "Revenue",
- "data": [
- [
- "2025-09-21T23:00:00.000+03:00",
- 1000
], - [
- "2025-09-21T23:00:00.000+03:00",
- 500
]
]
}
]| company_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) |
| staff_id | integer ID of the location staff member whose work needs to be analyzed |
| user_id | integer User ID of the location whose work you want to analyze |
[- {
- "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
]
]
}
]| company_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) |
| staff_id | integer ID of the location staff member whose work needs to be analyzed |
| user_id | integer The user ID of the location whose work you want to analyze |
[- {
- "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
]
]
}
]| company_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) |
| staff_id | integer ID of the location staff member whose work needs to be analyzed |
| user_id | integer The user ID of the location whose work you want to analyze |
[- {
- "label": "Administrator",
- "data": 10
}, - {
- "label": "Widget",
- "data": 30
}
]| company_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) |
| staff_id | integer ID of the location staff member whose work needs to be analyzed |
| user_id | integer The user ID of the location whose work you want to analyze |
[- {
- "label": "Customer expectation",
- "data": 10
}, - {
- "label": "The client came",
- "data": 30
}, - {
- "label": "Customer confirmed",
- "data": 5
}, - {
- "label": "Client didn't come",
- "data": 2
}
]