Operations 24
Documentation
Documentation
https://docs.elationhealth.com/reference/api-overview
Authentication
https://docs.elationhealth.com/reference/oauth
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/elation-patients-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Elation Health Patients API
version: '1.0'
description: 'Operations tagged Patients across 4 of this provider''s published API definitions: elation-api-settings.json, elation-health-api-full-openapi.yaml, elation-health-patients-api-openapi.yml, elation-patient-profile-api.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://sandbox.elationemr.com/api/2.0
- description: Sandbox Server
url: https://sandbox.elationemr.com
- description: Production Server
url: https://api.app.elationemr.com
- url: https://app.elationemr.com/api/2.0
description: Production
tags:
- name: Patients
paths:
/patients/:id/:
put:
summary: Update Patient
description: ''
operationId: update-patient
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"id\": 67176497153,\n // See Object Definition\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\ndata = {\n \"first_name\": \"test\",\n \"last_name\": \"patient\",\n \"sex\": \"Female\",\n \"dob\": \"1955-10-01\",\n \"primary_physician\": 131074,\n \"caregiver_practice\": 65540\n}\n\nresp = requests.put(\"https://sandbox.elationemr.com/api/2.0/patients/67176497153/\",\n data=json.dumps(data),\n headers={'Authorization': auth_header,\n 'Content-type': 'application/json'})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2))"
samples-languages:
- python
tags:
- Patients
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/patients/{id}:
get:
summary: Get Patient
description: ''
operationId: get-patient
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int64
- name: Authorization
in: header
required: true
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"id\": 83792571234,\n // See Object Definition\n}"
'303':
description: '303'
content:
text/plain:
examples:
Result:
value: ''
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\nresp = requests.get(\"https://sandbox.elationemr.com/api/2.0/patients/64184451073/\",\n headers={'Authorization': auth_header})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2)"
- language: curl
code: 'curl https://sandbox.elationemr.com/api/2.0/patients/64184451073/ \
> -H "Authorization: Bearer XaTtPYZ8Ufy04f0187fPbWFkwcADF0"'
name: cURL
samples-languages:
- python
- curl
tags:
- Patients
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/patients/{id}/:
delete:
summary: Delete Patient
description: ''
operationId: delete-patient
parameters:
- name: id
in: path
schema:
type: integer
format: int64
required: true
- name: Authorization
in: header
required: true
schema:
type: string
responses:
'204':
description: '204'
content:
text/plain:
examples:
Result:
value: // not content will be returned
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\nresp = requests.delete(\"https://sandbox.elationemr.com/api/2.0/patients/54233202689/\",\n headers={'Authorization': auth_header})\n\nprint resp.status_code"
samples-languages:
- python
tags:
- Patients
security:
- sec0: []
patch:
summary: Update Patient
description: ''
operationId: update-patient-1
parameters:
- name: id
in: path
schema:
type: string
required: true
- name: Authorization
in: header
required: true
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"id\": 67176497153,\n // See Object Definition\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\ndata = {\n \"first_name\": \"test\"\n}\n\nresp = requests.patch(\"https://sandbox.elationemr.com/api/2.0/patients/67176497153/\",\n data=json.dumps(data),\n headers={'Authorization': auth_header,\n 'Content-type': 'application/json'})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2))"
samples-languages:
- python
tags:
- Patients
security:
- sec0: []
get:
operationId: patients_retrieve
summary: Retrieve a patient
description: Get details for a specific patient by ID.
tags:
- Patients
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: Patient details
content:
application/json:
schema:
$ref: '#/components/schemas/Patient_2'
'404':
description: Patient not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- sec0: []
put:
operationId: patients_update
summary: Update a patient
description: Replace all patient fields with the provided values.
tags:
- Patients
parameters:
- $ref: '#/components/parameters/id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatientCreate'
responses:
'200':
description: Patient updated
content:
application/json:
schema:
$ref: '#/components/schemas/Patient_2'
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/patients/:
post:
summary: Create Patient
description: ''
operationId: create-patient
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
required:
- first_name
- last_name
- dob
- sex
- primary_physician
- caregiver_practice
properties:
first_name:
type: string
last_name:
type: string
dob:
type: string
format: date
sex:
type: string
description: Male, Female, or Unknown (displays as Unspecified in app)
primary_physician:
type: integer
description: The primary physician assigned to this physician within the practice
format: int32
caregiver_practice:
type: integer
format: int32
address:
type: object
required:
- address_line1
properties:
address_line1:
type: string
address_line2:
type: string
city:
type: string
state:
type: string
zip:
type: string
phones:
type: array
items:
properties:
phone:
type: string
description: String or Integer
phone_type:
type: string
required:
- phone
- phone_type
type: object
emails:
type: array
items:
properties:
email:
type: string
required:
- email
type: object
insurances:
type: array
items:
properties:
member_id:
type: string
required:
- member_id
type: object
responses:
'201':
description: '201'
content:
application/json:
examples:
Result:
value: "{\n \"id\": 67176497153, \n // See Object Definition\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: "{\n \"field_name\": [\"error message\"]\n}\n\n// for example: (if caregiver_practice was not provided)\n{\n \"caregiver_practice\": [\"This field is required.\"]\n}"
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\nnew_patient = {\n \"first_name\": \"test\",\n \"last_name\": \"patient\",\n \"sex\": \"Male\",\n \"dob\": \"1955-01-01\",\n \"primary_physician\": 131074,\n \"caregiver_practice\": 65540\n}\n\nresp = requests.post(\"https://sandbox.elationemr.com/api/2.0/patients/\",\n data=json.dumps(new_patient),\n headers={'Authorization': auth_header,\n 'Content-type': 'application/json'})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2)"
samples-languages:
- python
tags:
- Patients
security:
- sec0: []
get:
summary: Find Patients
description: Query against all patients in a practice.
operationId: find-patients
parameters:
- name: Authorization
in: header
schema:
type: string
- name: first_name
in: query
schema:
type: string
- name: last_name
in: query
schema:
type: string
- name: dob
in: query
schema:
type: string
- name: sex
in: query
schema:
type: string
- name: insurance_company
in: query
schema:
type: string
- name: insurance_plan
in: query
schema:
type: string
- name: group_id
in: query
schema:
type: integer
format: int64
- name: member_id
in: query
schema:
type: integer
format: int64
- name: master_patient
in: query
schema:
type: integer
format: int64
- name: practice
in: query
schema:
type: integer
format: int64
- name: last_modified__gt
in: query
schema:
type: string
format: date
- name: last_modified__gte
in: query
schema:
type: string
format: date
- name: last_modified__lt
in: query
schema:
type: string
format: date
- name: last_modified__lte
in: query
schema:
type: string
format: date
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"count\": 123,\n \"next\": \"https://sandbox.elationemr.com/api/2.0/patients/?limit=10&offset=10\",\n \"previous\": \"https://sandbox.elationemr.com/api/2.0/patients/?limit=10\",\n \"results\": [ // list of objects\n { // See Object Definition },\n // ...\n { // See Object Definition },\n ]\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"VFroUHsmrErlVI6nJ08Alwhri5RGCW\"\nauth_header = \"Bearer %s\" % (access_token)\n\nresp = requests.get(\"https://sandbox.elationemr.com/api/2.0/patients/\",\n headers={'Authorization': auth_header})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2)"
- language: curl
code: 'curl https://sandbox.elationemr.com/api/2.0/patients/ \
> -H "Authorization: Bearer SftJozdkIuEObwOvI6WpSN6jndCHad"'
name: cURL
samples-languages:
- python
- curl
tags:
- Patients
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/patients/{id}/insurance_cards/:
get:
summary: Get Insurance Cards
description: ''
operationId: get-insurance-cards
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
- name: id
in: path
description: Patient identifier
schema:
type: integer
format: int64
required: true
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: // See Object Definition
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\nresp = requests.get(\"https://sandbox.elationemr.com/api/2.0/patients/64184451073/insurance_cards/\",\n headers={'Authorization': auth_header})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2)"
- language: curl
code: 'curl https://sandbox.elationemr.com/api/2.0/patients/64184451073/insurance_cards/ \
> -H "Authorization: Bearer XaTtPYZ8Ufy04f0187fPbWFkwcADF0"'
samples-languages:
- python
- curl
tags:
- Patients
security:
- sec0: []
post:
summary: Create Insurance Card
description: ''
operationId: create-insurance-card
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
- name: id
in: path
description: Patient identifier
schema:
type: integer
format: int64
required: true
requestBody:
content:
application/json:
schema:
type: object
required:
- rank
- side
- image
properties:
rank:
type: integer
description: Primary or secondary insurances (1 or 2)
format: int32
side:
type: integer
description: Insurance card side. Usually front (1) or back (2)
format: int32
image:
type: object
description: Base64 encoded image of the insurance card. Only JPG and PNG files are supported.
required:
- original_filename
- content_type
- base64_content
properties:
original_filename:
type: string
description: A filename for the image
content_type:
type: string
description: We support PNG and JPG
default: image/png
base64_content:
type: string
description: The Base64 encoded binary data of the image
responses:
'201':
description: '201'
content:
application/json:
examples:
Result:
value: ''
'400':
description: '400'
content:
application/json:
examples:
Result:
value: "{\n \"detail\": \"rank, side, and image are required\"\n}"
schema:
type: object
properties:
detail:
type: string
example: rank, side, and image are required
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\ndata = {\n \"rank\": 1,\n \"side\": 1,\n \"image\": {\n \"original_filename\": \"insurance_card.png\",\n \"content_type\": \"image/png\",\n \"base64_content\": \"/9j/...j/9k=\"\n }\n}\n\nresp = requests.post(\"https://sandbox.elationemr.com/api/2.0/patients/64184451073/insurance_cards/\",\n data=json.dumps(data),\n headers={'Authorization': auth_header,\n 'Content-type': 'application/json'})\n\nprint resp.status_code\nprint json.dumps(json.loads(resp.content), indent=2)"
samples-languages:
- python
tags:
- Patients
security:
- sec0: []
delete:
summary: Delete Insurance Card
description: ''
operationId: delete-insurance-card
parameters:
- name: rank
in: query
description: Primary or secondary insurances (1 or 2)
required: true
schema:
type: integer
format: int32
- name: side
in: query
description: Insurance card side. Usually front (1) or back (2)
required: true
schema:
type: integer
format: int32
- name: archive
in: query
description: Optional flag to archive the insurance card as a report before deleting
schema:
type: boolean
- name: Authorization
in: header
required: true
schema:
type: string
- name: id
in: path
description: Patient identifier
schema:
type: integer
format: int64
required: true
responses:
'204':
description: '204'
content:
application/json:
examples:
Result:
value: ''
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\nresp = requests.delete(\"https://sandbox.elationemr.com/api/2.0/patients/64184451073/insurance_cards/?rank=1&side=1&archive=true\",\n headers={'Authorization': auth_header})\n\nprint resp.status_code"
samples-languages:
- python
tags:
- Patients
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/patients/{patient_id}/profile_image:
get:
summary: Get Patient Photo
description: ''
operationId: get-patient-photo
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
- name: patient_id
in: path
description: The id of the patient
schema:
type: integer
format: int32
required: true
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n\t\"id\": 140759073227036,\n\t\"patient\": 140754479349761,\n\t\"practice\": 140754475089924,\n\t\"file\": \"https://feature-rm-28957-as-an-api-integrat.dev.elationemr.com/api/2.0/patients/140754479349761/get_photo\",\n\t\"content_type\": \"image/jpeg\",\n\t\"original_filename\": \"test_profile_image\",\n\t\"file_size\": 122452,\n\t\"last_updated\": \"2022-08-17T20:36:39Z\",\n\t\"width\": 961,\n\t\"height\": 1280,\n\t\"created_date\": \"2022-08-17T20:36:39Z\"\n}"
schema:
type: object
properties:
id:
type: integer
example: 140759073227036
default: 0
patient:
type: integer
example: 140754479349761
default: 0
practice:
type: integer
example: 140754475089924
default: 0
file:
type: string
example: https://feature-rm-28957-as-an-api-integrat.dev.elationemr.com/api/2.0/patients/140754479349761/get_photo
content_type:
type: string
example: image/jpeg
original_filename:
type: string
example: test_profile_image
file_size:
type: integer
example: 122452
default: 0
last_updated:
type: string
example: '2022-08-17T20:36:39Z'
width:
type: integer
example: 961
default: 0
height:
type: integer
example: 1280
default: 0
created_date:
type: string
example: '2022-08-17T20:36:39Z'
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
tags:
- Patients
security:
- sec0: []
post:
summary: Create Patient Photo
description: ''
operationId: create-patient-photo
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
- name: patient_id
in: path
description: The patient id
schema:
type: string
required: true
requestBody:
content:
application/json:
schema:
type: object
required:
- patient
- practice
- original_filename
- base_64
properties:
patient:
type: integer
description: patient ID
format: int32
practice:
type: integer
description: practice ID
format: int32
original_filename:
type: string
description: filename
base_64:
type: string
description: the image is base64 encoded
responses:
'201':
description: '201'
content:
application/json:
examples:
Result:
value: "{\n\t\"id\": 140759073227036,\n\t\"patient\": 140754479349761,\n\t\"practice\": 140754475089924,\n\t\"file\": \"https://feature-rm-28957-as-an-api-integrat.dev.elationemr.com/api/2.0/patients/140754479349761/get_photo\",\n\t\"content_type\": \"image/jpeg\",\n\t\"original_filename\": \"test_profile_image\",\n\t\"file_size\": 122452,\n\t\"last_updated\": \"2022-08-17T20:36:39Z\",\n\t\"width\": 961,\n\t\"height\": 1280,\n\t\"created_date\": \"2022-08-17T20:36:39Z\"\n}"
schema:
type: object
properties:
id:
type: integer
example: 140759073227036
default: 0
patient:
type: integer
example: 140754479349761
default: 0
practice:
type: integer
example: 140754475089924
default: 0
file:
type: string
example: https://feature-rm-28957-as-an-api-integrat.dev.elationemr.com/api/2.0/patients/140754479349761/get_photo
content_type:
type: string
example: image/jpeg
original_filename:
type: string
example: test_profile_image
file_size:
type: integer
example: 122452
default: 0
last_updated:
type: string
example: '2022-08-17T20:36:39Z'
width:
type: integer
example: 961
default: 0
height:
type: integer
example: 1280
default: 0
created_date:
type: string
example: '2022-08-17T20:36:39Z'
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
tags:
- Patients
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/patients/{patient_id}/profile_image/:
delete:
summary: Delete Patient Photo
description: ''
operationId: delete-patient-photo
parameters:
- name: Authorization
in: header
required: true
schema:
type: string
- name: patient_id
in: path
schema:
type: string
required: true
responses:
'204':
description: '204'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
tags:
- Patients
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/patients/{id}/incoming_files:
post:
summary: File Incoming Files to Patient Chart
description: ''
operationId: file-incoming-file-to-patient-chart
parameters:
- name: id
in: path
schema:
type: integer
format: int64
required: true
- name: Authorization
in: header
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
required:
- files
- document_type
properties:
files:
type: array
description: Array of incoming file IDs
items:
type: integer
format: int64
document_type:
type: string
description: Can be VisitNote, NonvisitNote, or a report_type value found in Report Type API
reviewer_user:
type: integer
description: Reviewer's user_id. If one isn't given, then the patient's assigned physician will be used.
format: int64
document_date:
type: string
description: Document date
format: date
document_tags:
type: array
description: Array of document tag IDs
items:
type: integer
format: int64
custom_title:
type: string
description: Custom title
urgent:
type: boolean
description: Set to true to mark as urgent
default: false
sign_off:
type: boolean
description: Sign off on behalf of reviewer
default: false
import_history:
type: boolean
description: Import history for new visit / non-visit note
responses:
'201':
description: '201'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
'400':
description: '400'
content:
application/json:
examples:
Result:
value: '{}'
schema:
type: object
properties: {}
deprecated: false
x-readme:
code-samples:
- language: python
code: "import requests\nimport json\n\naccess_token = \"TyEPKw8fVGRKpCBa81ygwjCLXDNIAm\"\nauth_header = \"Bearer %s\" % (access_token)\n\ndata = {\n \"files\": [140758830940249, 140758831464657],\n \"reviewer_user\": 64811630594,\n \"document_type\": \"Misc\",\n \"document_date\": \"2022-09-09\",\n \"document_tags\": [127362],\n \"custom_title\
# --- truncated at 32 KB (90 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elation-health/refs/heads/main/openapi/elation-health-patients-api-openapi.yml