How do I manage employees with the Amelia API
Use the employees endpoints to create and manage employee profiles, assign services, define working hours, set default locations, and retrieve or delete employees.
You can review all endpoints and ready-made examples in the Amelia API Postman collection.
How do I add an employee with the Amelia API?
Use this endpoint to create a new employee. To make the employee visible on the booking form, you must provide both serviceList and weekDayList. If your system has locations, locationId is required to set the employee’s default location.
- Method: POST
- Path:
/users/providers
Base path
{{your_site_URL}}/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1
Authorization
- All Amelia endpoints use API key authorization via a request header named Amelia.
Required properties
- firstName (
string); employee first name - lastName (
string); employee last name - email (
string); employee email, must be unique - locationId (
integer); default location ID, required if locations exist in the system - serviceList (
array); assigned services, required for front end visibility - weekDayList (
array); working hours, required for front end visibility
Optional properties
- status (
string); possible values:visible,hidden, defaultvisible - externalId (
integer); WordPress user ID linked to the employee - countryPhoneIso (
string); country phone ISO used with the phone number - phone (
string); phone number - zoomUserId (
string); Zoom user ID - note (
string); internal note - description (
string); description - pictureFullPath (
string); profile picture path - pictureThumbPath (
string); profile thumbnail path - specialDayList (
array); special day working hours - dayOffList (
array); days off - sendEmployeePanelAccessEmail (
boolean); send employee panel access email after creation - descriptionHtml (
string); description in HTML - timeZone (
string); employee timezone, WordPress timezone is used by default
Example
Request
curl --location 'https://example-site.com/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers' \
--header 'Content-Type: application/json' \
--header 'Amelia: YOUR_API_KEY' \
--data-raw '{
"status": "visible",
"firstName": "Ana",
"lastName": "Jovanović",
"email": "ana.jovanovic@example.test",
"externalId": "",
"locationId": 1,
"phone": "",
"countryPhoneIso": "rs",
"zoomUserId": "",
"note": "",
"description": "",
"pictureFullPath": "",
"pictureThumbPath": "",
"serviceList": [
{
"id": 4,
"price": 45,
"minCapacity": 1,
"maxCapacity": 1,
"customPricing": "{\"enabled\":false,\"durations\":{}}"
},
{
"id": 2,
"price": 20,
"minCapacity": 1,
"maxCapacity": 1,
"customPricing": "{\"enabled\":false,\"durations\":{}}"
}
],
"weekDayList": [
{
"dayIndex": 1,
"startTime": "09:00:00",
"endTime": "17:00:00",
"timeOutList": [],
"periodList": [
{
"startTime": "09:00:00",
"endTime": "17:00:00",
"locationId": null,
"periodLocationList": [
{ "id": null, "locationId": 2 }
],
"periodServiceList": []
}
]
},
{
"dayIndex": 2,
"startTime": "09:00:00",
"endTime": "17:00:00",
"timeOutList": [],
"periodList": [
{
"startTime": "09:00:00",
"endTime": "17:00:00",
"locationId": null,
"periodLocationList": [],
"periodServiceList": []
}
]
},
{
"dayIndex": 3,
"startTime": "09:00:00",
"endTime": "17:00:00",
"timeOutList": [],
"periodList": [
{
"startTime": "09:00:00",
"endTime": "17:00:00",
"locationId": null,
"periodLocationList": [],
"periodServiceList": []
}
]
},
{
"dayIndex": 4,
"startTime": "09:00:00",
"endTime": "17:00:00",
"timeOutList": [],
"periodList": [
{
"startTime": "09:00:00",
"endTime": "17:00:00",
"locationId": null,
"periodLocationList": [],
"periodServiceList": []
}
]
},
{
"dayIndex": 5,
"startTime": "09:00:00",
"endTime": "17:00:00",
"timeOutList": [],
"periodList": [
{
"startTime": "09:00:00",
"endTime": "17:00:00",
"locationId": null,
"periodLocationList": [],
"periodServiceList": []
}
]
}
],
"specialDayList": [
{
"startDate": "2026-03-18",
"endDate": "2026-03-18",
"periodList": [
{
"startTime": "13:00:00",
"endTime": "14:30:00",
"periodLocationList": [
{ "locationId": 2 },
{ "locationId": 1 }
],
"periodServiceList": [
{ "serviceId": 2 }
]
}
]
}
],
"dayOffList": [
{
"name": "Annual leave",
"startDate": "2026-04-17",
"endDate": "2026-04-17",
"repeat": 0
}
],
"sendEmployeePanelAccessEmail": true,
"descriptionHtml": "",
"timeZone": "Europe/Belgrade"
}'
Response
{
"message": "Successfully added new user.",
"data": {
"user": {
"id": 88,
"firstName": "Ana",
"lastName": "Jovanović",
"email": "ana.jovanovic@example.test",
"type": "provider",
"status": "visible",
"countryPhoneIso": "rs",
"timeZone": "Europe/Belgrade"
},
"sendEmployeePanelAccessEmail": false,
"password": null
}
}
How do I update an employee with the Amelia API?
Use this endpoint to update employee details. Send only the properties you want to change.
- Method: POST
- Path:
/users/providers/{{provider_id}}
Base path
{{your_site_URL}}/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1
Authorization
- All Amelia endpoints use API key authorization via a request header named Amelia.
Optional properties
- firstName (
string); first name - lastName (
string); last name - email (
string); email, must be unique - locationId (
integer); default location - serviceList (
array); assigned services - weekDayList (
array); working hours - status (
string);visibleorhidden - externalId (
integer); linked WordPress user ID - countryPhoneIso (
string); country ISO - phone (
string); phone number - zoomUserId (
string); Zoom user ID - note (
string); internal note - description (
string); description - pictureFullPath (
string); picture path - pictureThumbPath (
string); thumbnail path - specialDayList (
array); special days - dayOffList (
array); days off - sendEmployeePanelAccessEmail (
boolean); send employee panel access email - descriptionHtml (
string); description in HTML - timeZone (
string); timezone
Example
Request
curl --location 'https://example-site.com/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers/88' \
--header 'Content-Type: application/json' \
--header 'Amelia: YOUR_API_KEY' \
--data-raw '{
"lastName": "Marković",
"serviceList": [
{ "id": 4, "price": 45, "minCapacity": 1, "maxCapacity": 6, "customPricing": "{\"enabled\":false,\"durations\":{}}" },
{ "id": 2, "price": 20, "minCapacity": 1, "maxCapacity": 1, "customPricing": "{\"enabled\":false,\"durations\":{}}" }
]
}'
Response
{
"message": "Successfully",
"data": {
"user": {
"id": 88,
"firstName": "Ana",
"lastName": "Marković",
"email": "ana.jovanovic@example.test",
"type": "provider",
"status": "visible"
}
}
}
How do I retrieve an employee with the Amelia API?
Use this endpoint to retrieve details for a single employee.
- Method: GET
- Path:
/users/providers/{{provider_id}}
Base path
{{your_site_URL}}/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1
Authorization
- All Amelia endpoints use API key authorization via a request header named Amelia.
Example
Request
curl --location 'https://example-site.com/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers/88' \
--header 'Amelia: YOUR_API_KEY'
Response
{
"message": "Successfully retrieved user.",
"data": {
"user": {
"id": 88,
"firstName": "Ana",
"lastName": "Marković",
"email": "ana.jovanovic@example.test",
"type": "provider",
"status": "visible",
"timeZone": "Europe/Belgrade"
}
}
}
How do I check whether an employee can be deleted safely with the Amelia API?
Use this endpoint to check whether the employee has future appointments that would prevent deletion.
- Method: GET
- Path:
/users/providers/effect/{{provider_id}}
Base path
{{your_site_URL}}/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1
Authorization
- All Amelia endpoints use API key authorization via a request header named Amelia.
Example
Request
curl --location 'https://example-site.com/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers/effect/88' \
--header 'Amelia: YOUR_API_KEY'
Response
{
"message": "Successfully retrieved message.",
"data": {
"valid": true,
"message": ""
}
}
How do I retrieve employees with the Amelia API?
Use this endpoint to retrieve a list of employees. You can filter results by page, search term, services, and locations.
- Method: GET
- Path:
/users/providers
Base path
{{your_site_URL}}/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1
Authorization
- All Amelia endpoints use API key authorization via a request header named Amelia.
Optional query parameters
- page (
integer); page number - search (
string); searches first name, last name, email, and note - services (
array); service filters, for exampleservices[0]=2 - location (
array); location filters
Example
Request
curl --location 'https://example-site.com/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers&page=1&search=ana&services[0]=2&location=1' \
--header 'Amelia: YOUR_API_KEY'
Response
{
"message": "Successfully retrieved users.",
"data": {
"users": [
{
"id": 3,
"firstName": "Milica",
"lastName": "Nikolić",
"email": "milica.nikolic@example.test",
"type": "provider",
"status": "visible",
"externalId": 6,
"activity": "available"
},
{
"id": 88,
"firstName": "Ana",
"lastName": "Marković",
"email": "ana.jovanovic@example.test",
"type": "provider",
"status": "visible",
"timeZone": "Europe/Belgrade",
"activity": "available"
}
],
"countFiltered": 2,
"countTotal": 6
}
}
How do I delete an employee with the Amelia API?
Use this endpoint to delete an employee.
- Method: POST
- Path:
/users/providers/delete/{{provider_id}}
Base path
{{your_site_URL}}/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1
Authorization
- All Amelia endpoints use API key authorization via a request header named Amelia.
Example
Request
curl --location --request POST 'https://example-site.com/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers/delete/88' \
--header 'Amelia: YOUR_API_KEY'
Response
{
"message": "Successfully deleted user.",
"data": []
}