Skip to content

Create a New Appointment

Request

Creates a standard Appointment or an Appointment in a Group Event.

For a standard Appointment, staff_id, services, client, datetime, and seance_length are required.

For a Group Event Appointment, activity_id and client are required. The API obtains staff_id, services, datetime, and seance_length from the Group Event.

To set custom Appointment Fields, pass an object in custom_fields, with each key matching a field code configured for the Location. The Business User must have both custom_fields_record_values_read_access and custom_fields_record_values_edit_access.

Security
BearerPartnerUser
Path
location_idnumberrequired

location ID

Example:24699
Headers
Acceptstringrequired

e.g. application/vnd.api.v2+json

Example:application/vnd.api.v2+json
Content-Typestringrequired

application/json

Authorizationstringrequired

Bearer partner_token, User user_token

Bodyapplication/jsonrequired
One of:

Request body for creating or fully updating an Appointment.

activity_idinteger
Value:0
team_member_idnumber

Team Member ID

servicesArray of objects

Service parameters (id, cost, discount)

clientobject

Client parameters (phone, name, email)

save_if_busyboolean

Whether to keep the appointment if the time is busy or non-working, or give an error

datetimestring, (date-time)

Date and time of appointment

seance_lengthnumber

Appointment duration in seconds. Includes technical_break_duration. To add a technical break without reducing the service time, increase seance_length by the break delta.

send_smsboolean

Whether to send SMS with the details of the appointment to the client

commentstring

Appointment Comment

sms_remain_hoursnumber

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_hoursnumber

Specifies how many hours before the visit an email reminder should be sent to the client. Set to 0 if no reminder is needed.

attendancenumber

Appointment status (2 - User confirmed the appointment, 1 - User came, services provided, 0 - user waiting, -1 - user did not show)

api_idstring

External system ID

custom_colorstring

Appointment color

record_labelsArray of strings

Array of post category IDs

technical_break_durationnumber or null
One of:

Technical break duration in seconds.

  • Must be in multiples of 300 (5-minute intervals)
  • Maximum value is 3600 (1 hour)
  • If null or not provided, uses location default from Settings → Appointment Log → Technical Breaks
[ 0 .. 3600 ]
number
custom_fieldsobject

Custom Appointment Field values keyed by field code.

The Business User must have both custom_fields_record_values_read_access and custom_fields_record_values_edit_access. When updating an Appointment, supplying custom_fields does not make the request partial: resend the required main fields for the applicable Appointment type.

curl -i -X POST \
  https://developer.alteg.io/_mock/en/b2b-v1/openapi/locations/24699/appointments \
  -H 'Accept: application/vnd.api.v2+json' \
  -H 'Authorization: Bearer <YOUR_Bearer {PartnerToken}, User {UserToken}_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "activity_id": 0,
    "team_member_id": 8886,
    "services": [
      {
        "id": 331,
        "first_cost": 9000,
        "discount": 50,
        "cost": 4500
      },
      {
        "id": 333,
        "first_cost": 2000,
        "discount": 10,
        "cost": 1800
      }
    ],
    "client": {
      "phone": "+13155550175",
      "name": "James Smith",
      "email": "j.smith@example.com"
    },
    "save_if_busy": false,
    "datetime": "2026-09-21T23:00:00.000-05: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"
      ]
    }
  }'

Responses

Created

Bodyapplication/json
successboolean

Execution success status (true)

Example:true
dataArray of objects

Array of objects with data

Example:
[ { "id": 2, "company_id": 4564, "staff_id": 9, "services": [ … ], "goods_transactions": [], "staff": { … }, "date": "2026-09-21T23:00:00.000-05:00", "datetime": "2026-09-21T23:00:00.000-05:00", "create_date": "2026-01-16T20:35:11-0500", "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": "2026-01-16T20:35:15-0500", "custom_color": "", "custom_font_color": "", "record_labels": [], "activity_id": 0, "custom_fields": {}, "documents": [ … ], "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": { … }, "date": "2026-09-21T23:00:00.000-05:00", "datetime": "2026-09-21T23:00:00.000-05:00", "create_date": "2026-01-16T20:35:11-0500", "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": "2026-01-09T20:45:30-0500", "custom_color": "f44336", "custom_font_color": "#ffffff", "record_labels": [ … ], "activity_id": 0, "custom_fields": {}, "documents": [ … ], "consumables": [], "finance_transactions": [] } ]
metaobject

Metadata (contains the page number and the number of appointments per page)

Example:
{ "page": 1, "total_count": 10 }
Response
{ "success": true, "data": [ { … }, { … } ], "meta": { "page": 1, "total_count": 10 } }