Limited time discount Book Smarter This Christmas
Up to 50%Off

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.

Info Note
API endpoints are available only in Elite license plans. Using the API requires coding skills and is not covered by standard plugin support.

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, default visible
  • 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

				
					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"
}'

				
			
				
					{
  "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); visible or hidden
  • 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

				
					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\":{}}" }
  ]
}'

				
			
				
					{
  "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

				
					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'

				
			
				
					{
  "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

				
					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'

				
			
				
					{
  "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 example services[0]=2
  • location (array); location filters

Example

				
					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'

				
			
				
					{
  "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

				
					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'

				
			
				
					{
  "message": "Successfully deleted user.",
  "data": []
}