EMIS Health Appointments API
The appointments API from EMIS Health — 17 operation(s) for appointments.
The appointments API from EMIS Health — 17 operation(s) for appointments.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/emis-health-appointments-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Partner Appointments API
version: '1.2'
tags:
- name: appointments
paths:
/api/v1/appointments/BookAppointment:
get:
tags:
- appointments
description: This call books a patient into the specified appointment slot
operationId: BookAppointment
parameters:
- name: reason
in: query
description: The reason for making the appointment
required: true
schema:
type: string
- name: bookedBy
in: query
description: DBID of staff making the appointment
required: true
schema:
type: string
format: uuid
- name: bookingNote
in: query
description: Optional booking note for the appointment
schema:
type: string
- name: slotId
in: query
description: The ID of the appointment slot
required: true
schema:
type: integer
format: int32
- name: patientNumber
in: query
description: The numeric patient identifier
required: true
schema:
type: integer
format: int32
- name: applicationId
in: header
description: The applicationId (aka party key) will be provided by your assurance lead
required: true
schema:
type: string
responses:
'500':
description: Internal error
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'400':
description: Bad request - adjust URL or parameters
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'401':
description: Authentication token not valid
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'404':
description: Not found
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'415':
description: Media type not valid for URL
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'200':
description: Details of appointment booked
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.Appointment.BookedAppointmentType'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.Appointment.BookedAppointmentType'
security:
- bearer: []
- OAuth2CodeEMIS-X-GP-PAPI:
- papi-appt.write
/api/v1/appointments/CancelAppointment:
get:
tags:
- appointments
description: This call removes a patient from a specified appointment slot
operationId: CancelAppointment
parameters:
- name: slotId
in: query
description: The ID of the appointment slot
required: true
schema:
type: integer
format: int32
- name: patientNumber
in: query
description: The numeric patient identifier
required: true
schema:
type: integer
format: int32
- name: applicationId
in: header
description: The applicationId (aka party key) will be provided by your assurance lead
required: true
schema:
type: string
responses:
'500':
description: Internal error
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'400':
description: Bad request - adjust URL or parameters
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'401':
description: Authentication token not valid
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'404':
description: Not found
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'415':
description: Media type not valid for URL
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'200':
description: Details of appointment cancelled
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.Appointment.BookedAppointmentType'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.Appointment.BookedAppointmentType'
security:
- bearer: []
- OAuth2CodeEMIS-X-GP-PAPI:
- papi-appt.write
/api/v1/appointments/GetAppointmentConfiguration:
get:
tags:
- appointments
description: This call is used to retrieve a site's appointment configuration settings, including slot types, session holders, staff holidays, and practice holidays. The date filter bounds the staff and practice holidays to avoid returning large amounts of historical data.
operationId: GetAppointmentConfiguration
parameters:
- name: startDate
in: query
description: Lower date filter in the format dd/mm/yyyy
required: true
schema:
type: string
format: date-time
- name: endDate
in: query
description: Upper date filter in the format dd/mm/yyyy
required: true
schema:
type: string
format: date-time
- name: applicationId
in: header
description: The applicationId (aka party key) will be provided by your assurance lead
required: true
schema:
type: string
responses:
'500':
description: Internal error
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'400':
description: Bad request - adjust URL or parameters
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'401':
description: Authentication token not valid
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'404':
description: Not found
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'415':
description: Media type not valid for URL
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'200':
description: Retrieves the appointment configuration within a given time frame
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.AppointmentConfiguration.AppointmentConfiguration'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.AppointmentConfiguration.AppointmentConfiguration'
security:
- bearer: []
- OAuth2CodeEMIS-X-GP-PAPI:
- papi-appt.read
/api/v1/appointments/GetAppointmentSessions:
get:
tags:
- appointments
description: This call returns a list of appointment sessions within a given timeframe. The maximum window to retrieve sessions is 90 days.
operationId: GetAppointmentSessions
parameters:
- name: slotType
in: query
description: Slot type as returned from GetAppointmentConfiguration - if empty, returns all
schema:
type: string
- name: startDate
in: query
description: Lower date filter in the format dd/mm/yyyy
required: true
schema:
type: string
format: date-time
- name: endDate
in: query
description: Upper date filter in the format dd/mm/yyyy
required: true
schema:
type: string
format: date-time
- name: applicationId
in: header
description: The applicationId (aka party key) will be provided by your assurance lead
required: true
schema:
type: string
responses:
'500':
description: Internal error
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'400':
description: Bad request - adjust URL or parameters
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'401':
description: Authentication token not valid
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'404':
description: Not found
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'415':
description: Media type not valid for URL
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'200':
description: Details of appointment sessions retrieved
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.AppointmentSessions.AppointmentSessionList'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.AppointmentSessions.AppointmentSessionList'
security:
- bearer: []
- OAuth2CodeEMIS-X-GP-PAPI:
- papi-appt.read
/api/v1/appointments/GetArrivedPatients:
get:
tags:
- appointments
description: This call returns a list of patients whose current status is 'arrived'. This status is normally set to indicate that the patient has arrived and is in the waiting area, ready to be called by the clinician.
operationId: GetArrivedPatients
parameters:
- name: minutesBefore
in: query
description: How many minutes before the query time to search
required: true
schema:
type: integer
format: int32
- name: minutesWithin
in: query
description: How many minutes within the query time to search
required: true
schema:
type: integer
format: int32
- name: applicationId
in: header
description: The applicationId (aka party key) will be provided by your assurance lead
required: true
schema:
type: string
responses:
'500':
description: Internal error
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'400':
description: Bad request - adjust URL or parameters
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'401':
description: Authentication token not valid
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'404':
description: Not found
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'415':
description: Media type not valid for URL
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'200':
description: Retrieves a list of arrived appointments within a given time frame
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.BookedPatients37.BookedPatients'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.BookedPatients37.BookedPatients'
security:
- bearer: []
- OAuth2CodeEMIS-X-GP-PAPI:
- papi-appt.read
/api/v1/appointments/GetBookedPatients:
get:
tags:
- appointments
description: 'This call returns a list of patients with appointments booked in the next x minutes. It also indicates the presence of alerts in the record. Note that these should not be displayed to patients. For each session holder it indicates the estimated waiting time (how far behind the doctor is running).
**Important:** To manage loads on the server the call is restricted to searching 60 minutes in the past but can search up to 30 days in the future. Care should be taken to minimise the search window, to manage the amount of data being returned, as this call is capable of placing significant loads on the clinical system if abused.'
operationId: GetBookedPatients
parameters:
- name: minutesBefore
in: query
description: How many minutes before the query time to search
required: true
schema:
type: integer
format: int32
- name: minutesWithin
in: query
description: How many minutes within the query time to search
required: true
schema:
type: integer
format: int32
- name: applicationId
in: header
description: The applicationId (aka party key) will be provided by your assurance lead
required: true
schema:
type: string
responses:
'500':
description: Internal error
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'400':
description: Bad request - adjust URL or parameters
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'401':
description: Authentication token not valid
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'404':
description: Not found
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'415':
description: Media type not valid for URL
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'200':
description: Retrieves a list of booked appointments within a given time frame
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.BookedPatients37.BookedPatients'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.BookedPatients37.BookedPatients'
security:
- bearer: []
- OAuth2CodeEMIS-X-GP-PAPI:
- papi-appt.read
/api/v1/appointments/GetBookedPatientsV2:
get:
tags:
- appointments
description: 'This call returns a list of patients with appointments booked in the next x minutes. It also indicates the presence of alerts in the record. Note that these should not be displayed to patients. For each session holder it indicates the estimated waiting time (how far behind the doctor is running).
**Important:** To manage loads on the server the call is restricted to searching 60 minutes in the past but can search up to 30 days in the future. Care should be taken to minimise the search window to manage the amount of data being returned as this call is capable of placing significant loads on the clinical system if abused.
GetBookedPatientsV2 returns slotType and its description, versus GetBookedPatients.'
operationId: GetBookedPatientsV2
parameters:
- name: minutesBefore
in: query
description: How many minutes before the query time to search
required: true
schema:
type: integer
format: int32
- name: minutesWithin
in: query
description: How many minutes within the query time to search
required: true
schema:
type: integer
format: int32
- name: applicationId
in: header
description: The applicationId (aka party key) will be provided by your assurance lead
required: true
schema:
type: string
responses:
'500':
description: Internal error
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'400':
description: Bad request - adjust URL or parameters
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'401':
description: Authentication token not valid
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'404':
description: Not found
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'415':
description: Media type not valid for URL
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'200':
description: Retrieves a list of booked appointments within a given time frame containing slotType and description
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.BookedPatients37V2.BookedPatientsV2'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.BookedPatients37V2.BookedPatientsV2'
security:
- bearer: []
- OAuth2CodeEMIS-X-GP-PAPI:
- papi-appt.read
/api/v1/appointments/GetPatientAppointments:
get:
tags:
- appointments
description: This call returns a list of patient appointments within a given timeframe. The maximum window to retrieve sessions is 90 days.
operationId: GetPatientAppointments
parameters:
- name: patientNumber
in: query
description: The numeric patient identifier
required: true
schema:
type: integer
format: int32
- name: startDate
in: query
description: Lower date filter in the format dd/mm/yyyy
required: true
schema:
type: string
format: date-time
- name: endDate
in: query
description: Upper date filter in the format dd/mm/yyyy
required: true
schema:
type: string
format: date-time
- name: applicationId
in: header
description: The applicationId (aka party key) will be provided by your assurance lead
required: true
schema:
type: string
responses:
'500':
description: Internal error
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'400':
description: Bad request - adjust URL or parameters
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'401':
description: Authentication token not valid
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'404':
description: Not found
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'415':
description: Media type not valid for URL
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'200':
description: Details of patient appointments retrieved
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.GetPatientAppointments.PatientAppointmentList'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.GetPatientAppointments.PatientAppointmentList'
security:
- bearer: []
- OAuth2CodeEMIS-X-GP-PAPI:
- papi-appt.read
/api/v1/appointments/GetPatientAppointmentsV2:
get:
tags:
- appointments
description: This call returns a list of patient appointments within a given timeframe. The maximum window to retrieve sessions is 90 days.
operationId: GetPatientAppointmentsV2
parameters:
- name: patientNumber
in: query
description: The numeric patient identifier
required: true
schema:
type: integer
format: int32
- name: startDate
in: query
description: Lower date filter in the format dd/mm/yyyy
required: true
schema:
type: string
format: date-time
- name: endDate
in: query
description: Upper date filter in the format dd/mm/yyyy
required: true
schema:
type: string
format: date-time
- name: applicationId
in: header
description: The applicationId (aka party key) will be provided by your assurance lead
required: true
schema:
type: string
responses:
'500':
description: Internal error
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'400':
description: Bad request - adjust URL or parameters
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'401':
description: Authentication token not valid
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'404':
description: Not found
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'415':
description: Media type not valid for URL
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'200':
description: Details of patient appointments retrieved
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.GetPatientAppointmentsV2.PatientAppointmentListV2'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.EmisOpen.GetPatientAppointmentsV2.PatientAppointmentListV2'
security:
- bearer: []
- OAuth2CodeEMIS-X-GP-PAPI:
- papi-appt.read
/api/v1/appointments/GetSentInPatients:
get:
tags:
- appointments
description: 'This call returns a list of patients whose current status is ''sent in''. This status is normally set by the clinician or receptionist when they are ready to see the patient. This status will remain set until they leave the surgery.
**Note:** The patient will be returned each time the function is called whilst they are in the consultation.'
operationId: GetSentInPatients
parameters:
- name: minutesBefore
in: query
description: How many minutes before the query time to search
required: true
schema:
type: integer
format: int32
- name: minutesWithin
in: query
description: How many minutes within the query time to search
required: true
schema:
type: integer
format: int32
- name: applicationId
in: header
description: The applicationId (aka party key) will be provided by your assurance lead
required: true
schema:
type: string
responses:
'500':
description: Internal error
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
'400':
description: Bad request - adjust URL or parameters
content:
application/xml:
schema:
$ref: '#/components/schemas/PartnerApi.Service.Model.ErrorResponse'
application/json:
schema:
# --- truncated at 32 KB (108 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/emis-health/refs/heads/main/openapi/emis-health-appointments-api-openapi.yml