Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Elation Health Contacts API
version: '1.0'
description: 'Operations tagged Contacts across 3 of this provider''s published API definitions: elation-api-settings.json, elation-health-api-full-openapi.yaml, elation-practice-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
tags:
- name: Contacts
paths:
/contacts/search/:
get:
summary: Search Contacts
description: ''
operationId: get-contacts
parameters:
- name: q
in: query
description: Contact name or fax number to look for
schema:
type: string
- name: city
in: query
description: City name where to look contacts
schema:
type: string
- name: state
in: query
description: State where to look contacts
schema:
type: string
- name: specialties
in: query
description: 'Comma separated specialties to look for contacts. Examples: "psychology,dental care" or "pharmacy"'
schema:
type: string
- name: Authorization
in: header
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "[ // List of objects\n { // See Object Definition },\n // ...\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 json
import requests
url = "https://sandbox.elationemr.com/api/2.0/contacts/?name=Beverly Crusher, MD"
access_token = "mAnkEq6vThAFVAska6nzZwqQtjLWPb"
auth_header = "Bearer %s" % (access_token)
response = requests.get(url, headers={''Authorization'': auth_header})
print(response.status_code)
print(json.dumps(json.loads(response.content), indent=2))'
- language: curl
code: 'curl "https://sandbox.elationemr.com/api/2.0/contacts/?name=Beverly Crusher, MD" \
> -H "Authorization: Bearer mAnkEq6vThAFVAska6nzZwqQtjLWPb"'
samples-languages:
- python
- curl
tags:
- Contacts
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/contacts/:
post:
summary: Create Contact
description: ''
operationId: create-contact
requestBody:
content:
application/json:
schema:
type: object
properties:
first_name:
type: string
description: 'The first name of the physician. Ignored if contact is a medical_group. Maximum length: 50 characters.'
middle_name:
type: string
description: 'The middle name of the physician. Ignored if contact is a medical_group. Maximum length: 50 characters.'
last_name:
type: string
description: 'The last name of the physician. Ignored if contact is a medical_group. Maximum length: 60 characters.'
credentials:
type: string
description: The credentials of the physician, e.g. MD or DO. Ignored if contact is a medical_group.
fax:
type: string
direct_address:
type: string
address:
type: string
suite:
type: string
email:
type: string
zip:
type: string
city:
type: string
state:
type: string
contact_type:
type: string
description: Use physician for individuals and medical_group for organizations
default: medical_group
enum:
- physician
- medical_group
phone:
type: string
cell_phone:
type: string
back_office_phone:
type: string
is_elation_confirmed:
type: boolean
accepting_insurance:
type: boolean
accepting_new_patients:
type: boolean
practice:
type: integer
format: int32
specialty:
type: object
properties: {}
other_specialties:
type: array
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"id\": 65097302057,\n\t// 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\n# sending only required data\n\ndata = {\n \"first_name\": \"Leroy\",\n \"middle_name\": \"J\",\n \"last_name\": \"Fuller\",\n \"credentials\": \"MD\",\n \"fax\": \"050-080-6703\",\n \"direct_address\": \"\",\n \"address\": \"925 Cantrell Wall Suite 969, Sethfort, VT 66010\",\n \"suite\": \"Suite 151\",\n \"email\": \"betle+Wilson.Hall@elationhealth.com\",\n \"zip\": \"55098\",\n \"city\": \"Sethfort\",\n \"state\": \"VT\",\n \"contact_type\": \"physician\",\n \"phone\": \"506-729-3449\",\n \"cell_phone\": \"506-729-3449\",\n \"back_office_phone\": \"506-729-3449\",\n \"is_elation_confirmed\": True,\n \"accepting_insurance\": True,\n \"accepting_new_patients\": True,\n\t\"practice\": 64901939456,\n \"specialty\": {\"name\": \"Biochemist\"},\n \"other_specialties\": [\n {\"name\": \"Adult Day Care\"},\n {\"name\": \"Anatomic Pathology\"},\n ]\n}\n\nresp = requests.post(\"https://sandbox.elationemr.com/api/2.0/contacts/\",\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:
- Contacts
security:
- sec0: []
get:
summary: List Contacts
description: ''
operationId: find-contacts
parameters:
- name: npi
in: query
description: The NPI of the contact
schema:
type: string
responses:
'200':
description: '200'
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:
- Contacts
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/contacts/{id}/:
put:
summary: Update Contacts
description: ''
operationId: update-contacts
parameters:
- name: id
in: path
schema:
type: string
required: true
- name: Authorization
in: header
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
first_name:
type: string
description: 'Maximum length: 50 characters.'
middle_name:
type: string
description: 'Maximum length: 50 characters.'
last_name:
type: string
description: 'Maximum length: 60 characters.'
credentials:
type: string
fax:
type: string
direct_address:
type: string
address:
type: string
suite:
type: string
email:
type: string
zip:
type: string
city:
type: string
state:
type: string
contact_type:
type: string
phone:
type: string
cell_phone:
type: string
back_office_phone:
type: string
is_elation_confirmed:
type: boolean
accepting_insurance:
type: boolean
accepting_new_patients:
type: boolean
practice:
type: integer
format: int32
specialty:
type: object
properties: {}
other_specialties:
type: array
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\": \"Leroy\",\n \"middle_name\": \"J\",\n \"last_name\": \"Fuller\",\n \"credentials\": \"MD\",\n \"fax\": \"050-080-6703\",\n \"direct_address\": \"\",\n \"address\": \"925 Cantrell Wall Suite 969, Sethfort, VT 66010\",\n \"suite\": \"Suite 151\",\n \"email\": \"betle+Wilson.Hall@elationhealth.com\",\n \"zip\": \"55098\",\n \"city\": \"Sethfort\",\n \"state\": \"VT\",\n \"contact_type\": \"physician\",\n \"phone\": \"506-729-3449\",\n \"cell_phone\": \"506-729-3449\",\n \"back_office_phone\": \"506-729-3449\",\n \"is_elation_confirmed\": True,\n \"accepting_insurance\": True,\n \"accepting_new_patients\": True,\n\t\"practice\": 64901939456,\n \"specialty\": {\"name\": \"Biochemist\"},\n \"other_specialties\": [\n {\"name\": \"Adult Day Care\"},\n {\"name\": \"Anatomic Pathology\"},\n ]\n}\n\nresp = requests.patch(\"https://sandbox.elationemr.com/api/2.0/contacts/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:
- Contacts
security:
- sec0: []
patch:
summary: Update Contacts
description: ''
operationId: update-contacts-1
parameters:
- name: id
in: path
schema:
type: string
required: true
- name: Authorization
in: header
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
first_name:
type: string
description: 'Maximum length: 50 characters.'
middle_name:
type: string
description: 'Maximum length: 50 characters.'
last_name:
type: string
description: 'Maximum length: 60 characters.'
credentials:
type: string
fax:
type: string
direct_address:
type: string
address:
type: string
suite:
type: string
email:
type: string
zip:
type: string
city:
type: string
state:
type: string
contact_type:
type: string
phone:
type: string
cell_phone:
type: string
back_office_phone:
type: string
is_elation_confirmed:
type: boolean
accepting_insurance:
type: boolean
accepting_new_patients:
type: boolean
practice:
type: integer
format: int32
specialty:
type: object
properties: {}
other_specialties:
type: array
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 \"suite\": \"Apt 807\"\n}\n\nresp = requests.put(\"https://sandbox.elationemr.com/api/2.0/contacts/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:
- Contacts
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/contacts/:id/:
delete:
summary: Delete Contacts
description: ''
operationId: delete-contacts
responses:
'200':
description: '200'
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:
- Contacts
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/contacts/{contact_id}/:
get:
summary: Fetch Contact
description: ''
operationId: fetch-contact
parameters:
- name: contact_id
in: path
description: The id of the contact
schema:
type: string
required: true
responses:
'200':
description: '200'
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:
- Contacts
security:
- sec0: []
servers:
- url: https://sandbox.elationemr.com/api/2.0
/api/2.0/contacts/:
get:
operationId: contacts_list
parameters:
- description: Number of results to return per page.
in: query
name: limit
required: false
schema:
type: integer
- description: The NPI of the contact.
in: query
name: npi
schema:
items:
type: string
type: array
- description: The initial index from which to return the results.
in: query
name: offset
required: false
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedContactList'
description: ''
security:
- oauth2: []
summary: List Contacts
tags:
- Contacts
x-el8-docs-category: Practice API
x-el8-docs-versions:
- '2.1'
- '2.0'
post:
description: Create a new contact.
operationId: contacts_create
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Contact'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Contact'
description: ''
security:
- oauth2: []
summary: Create Contact
tags:
- Contacts
x-el8-docs-category: Practice API
x-el8-docs-versions:
- '2.1'
- '2.0'
servers:
- description: Sandbox Server
url: https://sandbox.elationemr.com
- description: Production Server
url: https://api.app.elationemr.com
/api/2.0/contacts/search/:
get:
operationId: contacts_search_list
parameters:
- description: The city to search for contacts.
in: query
name: city
schema:
type: string
- description: Number of results to return per page.
in: query
name: limit
required: false
schema:
type: integer
- description: The initial index from which to return the results.
in: query
name: offset
required: false
schema:
type: integer
- description: Contact name or fax number to look for.
in: query
name: q
schema:
type: string
- description: 'Comma separated specialties to look for contacts. Examples: "psychology,dental care" or "pharmacy".'
in: query
name: specialties
schema:
type: string
- description: The state to search for contacts.
in: query
name: state
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedContactsSearchResultList'
description: ''
security:
- oauth2: []
summary: Search Contacts
tags:
- Contacts
x-el8-docs-category: Practice API
x-el8-docs-versions:
- '2.1'
- '2.0'
servers:
- description: Sandbox Server
url: https://sandbox.elationemr.com
- description: Production Server
url: https://api.app.elationemr.com
/api/2.0/contacts/{id}/:
delete:
description: Delete an existing contact.
operationId: contacts_destroy
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
'204':
description: No response body
security:
- oauth2: []
summary: Delete Contact
tags:
- Contacts
x-el8-docs-category: Practice API
x-el8-docs-versions:
- '2.1'
- '2.0'
get:
operationId: contacts_retrieve
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contact'
description: ''
security:
- oauth2: []
summary: Retrieve Contact
tags:
- Contacts
x-el8-docs-category: Practice API
x-el8-docs-versions:
- '2.1'
- '2.0'
patch:
description: Update an existing contact.
operationId: contacts_partial_update
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedContact'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contact'
description: ''
security:
- oauth2: []
summary: Partially Update Contact
tags:
- Contacts
x-el8-docs-category: Practice API
x-el8-docs-versions:
- '2.1'
- '2.0'
put:
description: Replace an existing contact.
operationId: contacts_update
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Contact'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Contact'
description: ''
security:
- oauth2: []
summary: Update Contact
tags:
- Contacts
x-el8-docs-category: Practice API
x-el8-docs-versions:
- '2.1'
- '2.0'
servers:
- description: Sandbox Server
url: https://sandbox.elationemr.com
- description: Production Server
url: https://api.app.elationemr.com
components:
schemas:
PaginatedContactList:
properties:
count:
example: 123
type: integer
next:
example: http://api.example.org/accounts/?offset=400&limit=100
format: uri
nullable: true
type: string
previous:
example: http://api.example.org/accounts/?offset=200&limit=100
format: uri
nullable: true
type: string
results:
items:
$ref: '#/components/schemas/Contact'
type: array
required:
- results
type: object
PaginatedContactsSearchResultList:
properties:
count:
example: 123
type: integer
next:
example: http://api.example.org/accounts/?offset=400&limit=100
format: uri
nullable: true
type: string
previous:
example: http://api.example.org/accounts/?offset=200&limit=100
format: uri
nullable: true
type: string
results:
items:
$ref: '#/components/schemas/ContactsSearchResult'
type: array
required:
- results
type: object
MedicalSpecialtyCategory:
properties:
abbreviation:
maxLength: 20
type:
- string
- 'null'
created_date:
format: date-time
readOnly: true
type:
- string
- 'null'
id:
readOnly: true
type: integer
name:
maxLength: 100
type: string
required:
- name
type: object
Contact:
properties:
accepting_insurance:
description: Whether the contact indicates they accept insurance.
type:
- boolean
- 'null'
accepting_new_patients:
description: Whether the contact indicates they are accepting new patients.
type:
- boolean
- 'null'
address:
description: The specific address line registered for this contact.
maxLength: 200
type: string
back_office_phone:
maxLength: 20
type: string
cell_phone:
description: The mobile phone registered to the contact.
maxLength: 20
type: string
city:
description: The city of the contact.
maxLength: 50
type: string
contact_type:
description: The type of contact. {physician, medical_group}
maxLength: 15
type: string
created_date:
description: The timestamp when the contact was created.
format: date-time
readOnly: true
type:
- string
- 'null'
credentials:
description: The credentials for the provider, e.g. MD or DO. Ignored if contact is a medical_group.
maxLength: 200
type: string
deleted_date:
description: The timestamp when the contact was deleted.
format: date-time
readOnly: true
type:
- string
- 'null'
direct_address:
maxLength: 500
type: string
email:
type: string
fax:
maxLength: 15
type: string
first_name:
description: The first name of the contact. Ignored if contact is a medical_group.
maxLength: 50
type: string
id:
readOnly: true
type: integer
is_elation_confirmed:
description: Whether the contact has been verified by someone on the elation team to be available for search within the application. Will always be false for any contact created within a practice.
type:
- boolean
- 'null'
is_verified:
description: Whether the contact has been verified to be a available for search within the application. Will always be true for any contact created by a practice.
type:
- boolean
- 'null'
last_name:
description: The last name of the contact. Ignored if contact is a medical_group.
maxLength: 60
type: string
middle_name:
description: The middle name of the contact. Ignored if contact is a medical_group.
maxLength: 50
type: string
npi:
type: string
org_name:
maxLength: 100
type:
- string
- 'null'
other_specialties:
description: The list of specialties after the primary specialty related to this contact.
items:
allOf:
- $ref: '#/components/schemas/MedicalSpecialty'
type: array
phone:
maxLength: 20
type: string
practice:
description: The id of the practice that the contact belongs to.
format: int64
type: integer
specialty:
allOf:
- $ref: '#/components/schemas/MedicalSpecialty'
description: The id of the specialty of the contact.
specialty_categories:
items: {}
type: array
state:
description: The state of the contact.
maxLength: 2
type: string
suite:
maxLength: 20
type: string
user:
description: The user id of the contact.
readOnly: true
type: integer
zip:
maxLength: 10
type: string
required:
- contact_type
- credentials
- first_name
- last_name
- middle_name
- practice
type: object
PatchedContact:
properties:
accepting_insurance:
description: Whether the contact indicates they accept insurance.
type:
- boolean
- 'null'
accepting_new_patients:
description: Whether the contact indicates they are accepting new patients.
type:
- boolean
- 'null'
address:
description: The specific address line registered for this contact.
maxLength: 200
type: string
back_office_phone:
maxLength: 20
type: string
cell_phone:
description: The mobile phone registered to the contact.
maxLength: 20
type: string
city:
description: The city of the contact.
maxLength: 50
type: string
contact_type:
description: The type of contact. {physician, medical_group}
maxLength: 15
type: string
created_date:
description: The timestamp when the contact was created.
format: date-time
readOnly: true
type:
- string
- 'null'
credentials:
description: The credentials for the provider, e.g. MD or DO. Ignored if contact is a medical_group.
maxLength: 200
type: string
deleted_date:
description: The timestamp when the contact was deleted.
format: date-time
readOnly: true
type:
- string
- 'null'
direct_address:
maxLength: 500
type: string
email:
type: string
fax:
maxLength: 15
type: string
first_name:
description: The first name of the contact. Ignored if contact is a medical_group.
maxLength: 50
type: string
id:
readOnly: true
type: integer
is_elation_confirmed:
description: Whether the contact has been verified by someone on the elation team to be available for search within the application. Will always be false for any contact created within a practice.
type:
- boolean
- 'null'
is_verified:
description: Whether the contact has been verified to be a available for search within the application. Will always be true for any contact created by a practice.
type:
- boolean
- 'null'
last_name:
description: The last name of the contact. Ignored if contact is a medical_group.
maxLength: 60
type: string
middle_name:
description: The middle name of the contact. Ignored if contact is a medical_group.
maxLength: 50
type: string
npi:
type: string
org_name:
maxLength: 100
type:
- string
- 'null'
other_specialties:
description: The list of specialties after the primary specialty related to this contact.
items:
allOf:
- $ref: '#/components/schemas/MedicalSpecialty'
type: array
phone:
maxLength: 20
type: string
practice:
description: The id of the practice that the contact belongs to.
format: int64
type: integer
specialty:
allOf:
- $ref: '#/components/schemas/MedicalSpecialty'
description: The id of the specialty of the contact.
specialty_categories:
# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elation-health/refs/heads/main/openapi/elation-health-contacts-api-openapi.yml