Glidian API v2.0
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
The Glidian API provides access to endpoints that support starting and submitting authorizations in the Glidian tool. This is currently meant to be used in conjunction with the online tool which provides a more comprehensive UI for tracking and reviewing communications with payors.
The API is organized around REST and HTTP features. We use a secret API key to authenticate, and return JSON in every API response, which include errors and additional information.
The main differences between version 1 and version 2 include:
-
URLs are reorganized to better reflect REST naming conventions. For example, to create a new draft record, use the updated
POST /records
instead of the previousPOST /submission/users/:user_id/draft-records
. -
The record creation endpoint now checks the validity of submitted data and will return 4xx errors for invalid data.
-
In version one, data elements were identified by numeric ids that were often confusing to work with. In v2, fields are identified by names which describe the data in them.
-
In version 1, it was only possible to create draft Prior Authorization requests, which would need to be submitted through the portal. In version 2, we have introduced a submission endpoint which can be used to submit many auth requests without that manual touch.
Base URLs:
Email: Glidian Support Team
Authentication
Authentication for the Glidian API is done in the following steps:
-
Obtain a client ID and secret key from the Glidian support team. An API key grants many privileges and should be kept secret (and secure).
-
Send the client ID and secret key to the token url. You will receive a JWT token in response that grants continued access to the API until it expires. When it expires, you will have to generate a new token through the same token url.
-
Include the provided JWT token with all requests to the API in the Authentication header as a Bearer token. An example is included with each endpoint demonstrating this. If the token has expires or is invalid, you will receive a 401 response.
All API requests must be made over HTTPS and every request must be authenticated.
- Flow: clientCredentials
- Token URL = [/oauth2/token](/oauth2/token)
Errors
Error Examples
{
"status_code": 400,
"errors": [
{
"input": "client_id",
"code": "missing_value",
"message": "The required input 'client_id' is missing a value"
}
]
}
{
"status_code": 401,
"errors": [
{
"code": "invalid_token",
"message": "The access token sent is invalid or expired"
}
]
}
{
"status_code": 403,
"errors": [
{
"input": "user_id",
"code": "access_restricted",
"message": "Access is restricted to not allow access to a resource"
}
]
}
{
"status_code": 404,
"errors": [
{
"code": "no_match_found",
"message": "No matches were found for the parameters provided"
}
]
}
{
"status_code": 404,
"errors": [
{
"input": "state_id",
"code": "resource_not_found",
"message": "No match found for the specified resource id"
}
]
}
{
"status_code": 500,
"errors": [
{
"code": "server_error",
"message": "An unexpected error occured on the server"
}
]
}
HTTP status codes to expect from all endpoints
HTTP Status Code | Code Description |
---|---|
200 | OK |
400 | Request was malformed and needs to be corrected |
401 | Access restricted due to incorrect or missing credentials |
403 | Access restricted to the given resource/endpoint for this developer |
404 | No resource(s) found matching request |
500 | An unexpected error occured on the server |
Errors will always be returned in the following format
Name | Type | Required | Description |
---|---|---|---|
» status_code | integer | false | HTTP status code of the error response |
» errors | [ErrorInformation] | true |
Specific Error codes to expect in Error responses. The following "Extra Fields" may come with the error response:
- input - Indicates the name of the input field which generated the error
Error Code | HTTP Codes | Description | Extra Fields |
---|---|---|---|
missing_value | 400 | The stated input is required, and is missing a value | input |
not_type_string | 400 | The stated input needs to be type string and is either not a string or cannot be parsed as a string | input |
not_type_number | 400 | The stated input needs to be type number and is either not a number or cannot be parsed as a number | input |
empty_string | 400 | The stated input needs to be type string and cannot be an empty string | input |
not_date_string | 400 | The stated input needs to be type string and in an ISO-8601 date format | input |
not_type_array | 400 | The stated input must be parseable into an array | input |
invalid_value | 400 | The stated input must be a valid value among a list. The list of values is provided in the error message response | input |
min_length_error | 400 | The stated input must have a minimum length of entries, usually at least 1 | input |
max_file_limit | 400 | The maximum file limit has been exceeded | |
invalid_file | 400 | A file provided is invalid and needs to be in a different format | input |
invalid_credentials | 401 | The credentials provided are invalid | |
missing_token | 401 | This indicates that there is either no authorization header or the token value is missing from the header | |
invalid_header | 401 | The authorizations header is not in the expected format | |
invalid_token | 401 | The token provided is invalid | |
access_restricted | 403 | Access for this developer is restricted to not allow access to a particular resource, listed in the input field | input |
no_match_found | 404 | No results were found with the parameters provided | |
resource_not_found | 404 | No resource was found matching the ID provided | input |
server_error | 500 | An unexpected error occured on the server. The developers are notified whenever this happens. |
Token
Endpoint for generating access token using client ID and secret key
generateToken
Code samples
curl --request POST \
--url https://api.glidian.com/oauth2/token \
--data '{"grant_type":"client_credentials","client_id":"CLIENT_ID_VALUE","client_secret":"CLIENT_SECRET_VALUE"}'
fetch("https://api.glidian.com/oauth2/token", {
"method": "POST",
"headers": {},
"body": "{\"grant_type\":\"client_credentials\",\"client_id\":\"CLIENT_ID_VALUE\",\"client_secret\":\"CLIENT_SECRET_VALUE\"}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
payload = "{\"grant_type\":\"client_credentials\",\"client_id\":\"CLIENT_ID_VALUE\",\"client_secret\":\"CLIENT_SECRET_VALUE\"}"
conn.request("POST", "/oauth2/token", payload)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/oauth2/token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request.body = "{\"grant_type\":\"client_credentials\",\"client_id\":\"CLIENT_ID_VALUE\",\"client_secret\":\"CLIENT_SECRET_VALUE\"}"
response = http.request(request)
puts response.read_body
POST /oauth2/token
Generates an access token for temporary access to the API.
Please note that token URLs are not versioned. These should be accessed
without the /v1
prefix -- see code samples for examples.
Body parameter
{
"grant_type": "client_credentials",
"client_id": "CLIENT_ID_VALUE",
"client_secret": "CLIENT_SECRET_VALUE"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
grant_type | body | string | false | Grant type as specified by OAuth2 protocol. Currently only 'client_credentials' is supported. |
client_id | body | string | true | ID specific to this client |
client_secret | body | string | true | Secret specific to this client |
Example responses
{
"access_token": "ACCESS_TOKEN_VALUE",
"token_type": "bearer",
"expires_in": 3600
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» access_token | string | true | Access token generated. Include this in other endpoint requests to gain access. |
» token_type | string | true | Token type as specified by OAuth2 protocol |
» expires_in | integer | true | When this token will expire in seconds from the time it was generated |
Users
Access to users on the Glidian tool associated with this developer account. Whenever referring to "Users" in this API, this is a reference to the users of the actual Glidian web tool. This is different from the developer who has been granted access to this API for the user's account.
Example: Joe from Genetic Laboratories has access to the Glidian web portal where he directly enters in patient information to send to insurance. Joe does not have access to the API and is considered the "User" in this scenario. Jane is from the developer team of the same organization and is helping Joe submit prior authorizations quicker. She has access to the API and will see Joe show up among her users list. Jane is considered the "Developer" in this scenario.
getUsers
Code samples
curl --request GET \
--url https://api.glidian.com/v2/users \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/users", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/users", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /users
Retrieves all active users associated with this account
Example responses
{
"users": [
{
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"username": "JoeLab",
"email": "joe@lab.com",
"teams": []
},
{
"id": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY",
"username": "Sally",
"email": "sally@lab.com",
"teams": [
"Radiology"
]
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» users | [User] | true | |
»» id | string | true | ID for the user object in the form of a UUID |
»» username | string | true | Username for this user |
string | false | Email on file for this user | |
»» teams | [string] | false | The teams this user is assigned to. |
Configuration
getFieldDefinitions
Code samples
curl --request GET \
--url https://api.glidian.com/v2/field-definitions \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/field-definitions", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/field-definitions", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/field-definitions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /field-definitions
Retrieves all available fields along with their IDs, names, and other metadata. Use these fields as part of your create record call.
Example responses
{
"field_definitions": [
{
"id": "patient:id",
"name": "id",
"category": "patient",
"description": "The patient's insurance ID number",
"example": "ABC12345678",
"usage": "REQUIRED",
"type": "string"
},
{
"id": "patient:dob",
"name": "dob",
"category": "patient",
"description": "The patient's date of birth.",
"example": "1993-01-02",
"usage": "REQUIRED",
"type": "string",
"format": "date"
},
{
"id": "provider:npi",
"name": "npi",
"category": "provider",
"description": "NPI of the referring provider",
"example": "2038510998",
"usage": "REQUIRED",
"type": "string",
"format": "npi"
},
{
"id": "provider:firstName",
"name": "firstName",
"category": "provider",
"description": "First name of the referring provider",
"example": "ProviderFirst",
"usage": "SITUATIONAL",
"type": "string"
},
{
"id": "provider:lastName",
"name": "lastName",
"category": "provider",
"description": "Last name of the referring provider",
"example": "ProviderLast",
"usage": "SITUATIONAL",
"type": "string"
},
{
"id": "rendering:officeContact",
"name": "officeContact",
"category": "rendering",
"description": "Contact name for the rendering provider's office",
"example": "ClinicContact",
"usage": "SITUATIONAL",
"type": "string"
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» field_definitions | [FieldDefinition] | true | |
»» id | string | true | ID for this field |
»» name | string | true | Describes the type of field (eg. name, id, address, etc.) |
»» category | string | true | Describes the broader category of field (eg. patient, provider, etc.) |
»» description | string | true | Description explaining what this field is for |
»» example | string | false | Example of field formatting |
»» type | string | true | The type of the field |
»» format | string | false |
If the type is string , then format may specify additional
information for how the string must be formatted.* npi - A valid, 10-digit NPI * cpt - One or more comma-separated valid 5-character alphanumeric CPT code(s) with or without multiplier (e.g. "12345x2, 11111") * hcpcs - One or more comma separated valid 5-character alphanumeric HCPCS code(s), where the first character must be alphabetic, with or without multiplier (e.g. "J0600x2, J0606") * icd10 - One or more comma-separated valid ICD-10 code(s) comprising one letter, two numbers, a decimal, and 1-4 numbers (e.g. "X12.004, B13.01") * phone - A valid hyphenated 10-digit phone number with or without extension (e.g. "111-111-1111 x111") * taxId - A valid, 9-digit tax ID, with hyphen (e.g. "xx-xxxxxxx") * date - A valid date in ISO-8601 format (e.g. "YYYY-MM-DD") |
»» options | object | false | |
»»» value | string | false | Value of the selected option for this field |
»»» label | string | false | Formatted label representing the selected field option |
»» usage | string | true |
Use case for these fields. Required will always be present, recommended is Glidian-recommended, situational may depend on submission requirements, and deprecated fields are no longer used. |
getStatusOptions
Code samples
curl --request GET \
--url https://api.glidian.com/v2/status-options \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/status-options", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/status-options", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/status-options")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /status-options
Retrieves all status options as pairs of IDs and labels
Example responses
{
"status_options": [
{
"label": "Action Required"
},
{
"label": "Review In Progress"
},
{
"label": "Approved"
},
{
"label": "Member Not Eligible",
"is_deprecated": true
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» status_options | [StatusOption] | true | |
»» label | string | true | Label representing this status option |
»» is_deprecated | boolean | false |
Status has been deprecated and will not be used for future updates. Historical
updates may still use this status. |
getTeams
Code samples
curl --request GET \
--url https://api.glidian.com/v2/teams \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/teams", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/teams", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/teams")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /teams
Retrieves all associated teams for the current account.
Example responses
{
"teams": [
{
"name": "Laboratory"
},
{
"name": "Radiology"
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» teams | [Team] | true | |
»» name | string | true | The team name. |
»» is_active | boolean | true | Whether this team is active and can be submitted for. |
Submission Flow
In order to submit an authorization request, you will need to go through these steps:
-
Identify the Payor (Insurance) Id and Service Id you will submit.
You can use the get insurances and getServices endpoints to review these lists. We recommend using these endpoints to build lookup tables in your EHR or system of record. Both of these lists change infrequently and are safe to cache long term. In general, changes are additions only; deletions happen very rarely. Both additions and deletions are announced in Glidian's regular customer bulletin.
-
Check the submission requirements for the payor and service.
This step is optional but recommended, as the required data elements vary by both payor and service. Use the get submission requirements endpoint to check what fields are needed for various submissions. You may also skip this step and just send a static list of elements for every submission, but that increases the risk that you will miss a required data element (see the create record endpoint for more information).
Submission requirements do change from time to time but not constantly. We recommend caching results for up to 24 hours.
-
Create a draft record
Use the create record endpoint to draft a prior authorization request. Your API call will be checked for validity (all included data elements must be valid) but not for completeness (you are allowed to draft a request without all required fields).
The API response will include a key piece of feedback,
submission_support
which includes:-
validation
: Communicates whether the data on the auth are complete. Validation issues must be corrected before the auth can be submitted, and can be addressed either via the API or by logging in to the Glidian portal. -
requires_portal_submission
: Communicates whether this auth can be submitted using the API or must be submitted in the portal. Even when all data are valid, there are some auths that must be submitted manually in the portal -- for example, auths that require a signature. -
portal_submission_url
: When portal submission is required, provides a URL to editing the auth.
This table summarizes the interactions between
validation
andrequires_portal_submission
:validation.is_valid
is truevalidation.is_valid
is falserequires_portal_submission
is trueData is valid but record must be submitted through portal Invalid data must be corrected (via API or portal) and then record must be submitted in the portal requires_portal_submission
is falseData is valid and may be submitted by either API or in the portal Invalid data must be corrected (via API or portal) and then record can be submitted through either API or portal -
-
Correct Incomplete Data, including Clinical Questions
Inspect the draft response to identify and provide missing data. The most frequent situations will be when Glidian has identified medical necessity and clinical documentation questions which must be provided before submission. See the clinical questions endpoint for more information. Clinical questions are not available until a draft exists, because the questions asked depend heavily on details of the authorization including payor, service type, diagnosis, and requested procedures.
-
Submit Request
Once a draft is valid, you may submit it through the API (if the request supports API submission) or through the portal.
-
Get Status Updates
Use the Glidian API to keep your system of record up-to-date with the status of your auths. The recommended approach is to use webhooks which will update your system in real time. You can also use the polling API endpoints to check for recent updates on a schedule of your choice.
getInsurance
Code samples
curl --request GET \
--url https://api.glidian.com/v2/insurances \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/insurances", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/insurances", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/insurances")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /insurances
Retrieves all insurances (optionally filtered by state)
Retrieves all insurances listed with Glidian, optionally filtered to only return insurances available in a given state (includes plans with nationwide coverage).
Query parameters
{
"state": "CA"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
state | query | string | false | State abbreviation |
Example responses
{
"insurances": [
{
"id": 46,
"name": "Humana (Medicare)"
},
{
"id": 80,
"name": "Wellmark Blue Cross and Blue Shield"
},
{
"id": 328,
"name": "Blue Shield of California (Federal Employee Plan)"
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» insurances | [Insurance] | false | |
»» id | integer | true | ID of the insurance company |
»» name | string | true | Name of the insurance |
getServices
Code samples
curl --request GET \
--url https://api.glidian.com/v2/services \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/services", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/services", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/services")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /services
Retrieves services available for submission
This endpoint generates a list of services that are currently available for your account. If you pass an insurance id, the results will be limited to services currently available for that insurance.
Query parameters
{
"insurance_id": 24
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
insurance_id | query | integer | false | ID for the insurance object |
Example responses
{
"services": [
{
"id": 29,
"name": "General Procedure",
"type": "Procedure"
},
{
"id": 37,
"name": "BRCA Test",
"type": "Lab"
},
{
"id": 38,
"name": "Molecular and Genetic Testing",
"type": "Lab"
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» services | [Service] | true | |
»» id | integer | true | ID of the service |
»» name | string | true | Name of the service |
»» type | string | true | Describes the type of service (eg. Drug, Procedure, Lab, etc.) |
getSubmissionRequirements
Code samples
curl --request GET \
--url 'https://api.glidian.com/v2/submission-requirements?insurance_id=123&service_id=123' \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/submission-requirements?insurance_id=123&service_id=123", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/submission-requirements?insurance_id=123&service_id=123", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/submission-requirements?insurance_id=123&service_id=123")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /submission-requirements
Provides submission requirements for requests for this insurance and service.
This endpoint returns a few items:
-
available_fields
are the data elements that are relevant for this submission. Use the field definitions endpoint for additional information on each element. -
required_fields
are the data elements which are required for submission. You can create a draft without all required fields, but will not be able to submit without them.
Submission requirements change infrequently; we recommend caching locally for up to 24 hours so that you will receive changes when they happen.
Query parameters
{
"state": "TX",
"insurance_id": 24,
"service_id": 100
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
insurance_id | query | integer | true | ID for the insurance object |
service_id | query | integer | true | ID for the service object |
state | query | string | false | Optionally specify the state abbreviation where health coverage is issued. |
Detailed descriptions
state: Optionally specify the state abbreviation where health coverage is issued. In most cases, this is not relevant, but there are some plans where submission rules vary by the health plan state. It is generally OK to query without the state parameter; if it is needed, you will get an error message detailing the options for you to choose from. Glidian supports all of the state and APO abbreviations listed by USPS.
Example responses
{
"available_fields": [
"patient:firstName",
"patient:lastName",
"patient:dob",
"provider:npi",
"provider:city",
"provider:state"
],
"required_fields": [
"patient:firstName",
"patient:lastName",
"patient:dob",
"provider:npi"
]
}
{
"status_code": 400,
"errors": [
{
"code": "invalid_input",
"message": "Submission Requirements vary by state. The insurance processes cases differently based on state. Available options: [\"FL\", \"MI\"].",
"input": "state"
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» available_fields | [FieldId] | true |
[A field identifier in the format 'category:name', for example 'patient:firstName'
or 'provider:npi' ] |
» required_fields | [FieldId] | true |
[A field identifier in the format 'category:name', for example 'patient:firstName'
or 'provider:npi' ] |
Status Code 400
Name | Type | Required | Description |
---|---|---|---|
» status_code | number | false | |
» errors | [object] | false | |
»» code | string | false | |
»» message | string | false | |
»» input | string | false |
Records
Endpoints used to create, update, and check the status of your existing prior authorization requests.
createRecord
Code samples
curl --request POST \
--url https://api.glidian.com/v2/records \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--data '{"reference_number":"string","reference_number_two":"string","urgent":true,"urgent_reason":"string","state":"string","owner":"string","insurance_id":"string","service_id":"string","team":"string","request_fields":{"property1":"string","property2":"string"},"file":["string"]}'
fetch("https://api.glidian.com/v2/records", {
"method": "POST",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
},
"body": "{\"reference_number\":\"string\",\"reference_number_two\":\"string\",\"urgent\":true,\"urgent_reason\":\"string\",\"state\":\"string\",\"owner\":\"string\",\"insurance_id\":\"string\",\"service_id\":\"string\",\"team\":\"string\",\"request_fields\":{\"property1\":\"string\",\"property2\":\"string\"},\"file\":[\"string\"]}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
payload = "{\"reference_number\":\"string\",\"reference_number_two\":\"string\",\"urgent\":true,\"urgent_reason\":\"string\",\"state\":\"string\",\"owner\":\"string\",\"insurance_id\":\"string\",\"service_id\":\"string\",\"team\":\"string\",\"request_fields\":{\"property1\":\"string\",\"property2\":\"string\"},\"file\":[\"string\"]}"
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("POST", "/v2/records", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/records")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
request.body = "{\"reference_number\":\"string\",\"reference_number_two\":\"string\",\"urgent\":true,\"urgent_reason\":\"string\",\"state\":\"string\",\"owner\":\"string\",\"insurance_id\":\"string\",\"service_id\":\"string\",\"team\":\"string\",\"request_fields\":{\"property1\":\"string\",\"property2\":\"string\"},\"file\":[\"string\"]}"
response = http.request(request)
puts response.read_body
POST /records
Create a new prior authorization request as a draft
Allows a new record to be generated in a draft state for the given user.
Attachments may be included in this request, or can be added later with the add attachments endpoint.
This endpoint accepts a content type of either application/json
or
multipart/form-data
. If attachments are included, you must use the
multipart/form-data
type.
Body parameter
{
"reference_number": "string",
"reference_number_two": "string",
"urgent": true,
"urgent_reason": "string",
"state": "string",
"owner": "string",
"insurance_id": "string",
"service_id": "string",
"team": "string",
"request_fields": {
"property1": "string",
"property2": "string"
},
"file": [
"string"
]
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | body | CreateRecordInputs | false |
Example responses
{
"id": "GEN98721",
"created_at": "2018-01-12T09:21:52.000Z",
"reference_number": "AAAA-123-654444",
"reference_number_two": "BBBB-456-222222",
"auth_number": "R123001123",
"payor_reference_number": "OP0566123123",
"auth_approval_from_date": "2018-03-25T00:00:00.000Z",
"auth_approval_to_date": "2018-07-25T00:00:00.000Z",
"owner": {
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"username": "Joe",
"dashboard_status": "Archived"
},
"state": {
"id": 43,
"name": "Texas"
},
"insurance": {
"id": 46,
"name": "Humana (Medicare)"
},
"service": {
"id": 29,
"name": "General Procedure",
"type": "Procedure"
},
"latest_status": {
"id": "GEN98721",
"created_at": "2018-01-18T13:42:13.000Z",
"label": "Approved"
},
"procedure_statuses": [
{
"procedure_code_type": "CPT",
"procedure_code": "81162",
"quantity": 1,
"status": "APPROVED"
}
],
"portal_url": "https://my.glidian.com/app/dashboard/GEN98721",
"request_fields": {
"patient:firstName": "John",
"provider:npi": "1234567893",
"medical:cpt": "81162",
"medical:icd10": "Z80.3, Z80.41",
"medical:serviceStartDate": "2018-11-10"
}
}
{
"status_code": 400,
"errors": [
{
"code": "invalid_input",
"message": "Submission Requirements vary by state. The insurance processes cases differently based on state. Available options: [\"FL\", \"MI\"].",
"input": "state"
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» reference_number | string | false | Custom reference number provided by developer when draft was created |
» reference_number_two | string | false | Second custom reference number provided by developer when draft was created |
» urgent | boolean | false | Boolean flag indicating if the case is marked as urgent |
» urgent_reason | string | false | Text summarizing the reason for marking a case as urgent |
» state | string | false | |
» id | string | false | ID of the record |
» created_at | string(date) | false | UTC date in ISO-8601 format for when the record was created |
» auth_number | string | false | Authorization number assigned to this case by insurance |
» payor_reference_number | string | false | Latest reference number given by the payor before an authorization number is assigned |
» auth_approval_from_date | string(date) | false | If provided, this is the earliest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
» auth_approval_to_date | string(date) | false | If provided, this is the latest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
» team | string | false |
The team the record is assigned to or null when the record is not
assigned to a team.
|
» owner | object | false | User object for the owner of this record |
»» id | string | true | ID for the user object in the form of a UUID |
»» username | string | true | Username for this user |
»» dashboard_status | string | true | The visibility status of this record on the owner's dashboard |
» insurance | Insurance | false | |
»» id | integer | true | ID of the insurance company |
»» name | string | true | Name of the insurance |
» service | Service | false | |
»» id | integer | true | ID of the service |
»» name | string | true | Name of the service |
»» type | string | true | Describes the type of service (eg. Drug, Procedure, Lab, etc.) |
» latest_status | RecordStatus | false | |
»» id | integer | true | Record ID of the record status |
»» created_at | string(date) | true | UTC date in ISO-8601 format for when this record status was created |
»» label | string | true | Describes the status type (eg. Denied, Approved, etc.) |
»» reason | string | false |
For Denied , Canceled , and
Action Required statuses, the reason provided for this status.
|
»» details | string | false |
For Denied , Canceled , and
Action Required statuses, additional information about the reason. For
example, if the reason was "Not medically necessary," then this field will
include a rationale for that determination (if provided by the payor)
|
» procedure_statuses | [ProcedureStatus] | false | An array of procedure statuses with relevant information. Please note that this array will be empty for cases created in Glidian before individual procedure codes started being tracked. |
»» procedure_code_type | string | true | The type of procedure code being listed. The only option right now is CPT |
»» procedure_code | string | true | The value of the procedure code without the quantity identifier |
»» quantity | number | true | The number of units for the given procedure code |
»» status | string | true |
The current status of this procedure code under review. The possible options include
PENDING , APPROVED , AUTH_NOT_REQUIRED , and
DENIED
|
»» modifiers | [string] | false | |
» portal_url | string | false | A link to the record in the Glidian portal |
» status_history | [RecordStatus] | false | |
» request_fields | object | true | Holds the request data fields for this auth, keyed by field identifier Use the field definitions endpoint to list all possible fields. |
»» additionalProperties | string | false | |
» submission_support | SubmissionSupport | false | Only present when record is in Draft status |
»» requires_portal_submission | boolean | false | Communicates information about whether submission through the Glidian portal is required. |
»» portal_submission_url | string | false | When portal submission is required, this a direct URL to edit the submission. |
»» has_unanswered_questions | boolean | false | Indicates that suggested clinical questions have not been answered for this record. Check the record's clinical questions endpoint for more info. |
»» validation | object | false | Communicates information about the validity of the record and its readiness to be submitted. |
»»» is_valid | boolean | false | Indicates whether the record data is valid and ready for submission. |
»»» errors | [ValidationErrorInformation] | false | Information about blocking errors that will prevent this record from being submitted. |
»»»» field_name | string | true | Name of the field |
»»»» code | string | true | Unique code identifying the type of error this is |
»»»» message | string | true | Message describing the error code |
»»» warnings | [ValidationErrorInformation] | false | Information about non-blocking warnings for this record. The record can be submitted without addressing the warnings. |
Status Code 400
Name | Type | Required | Description |
---|---|---|---|
» status_code | number | false | |
» errors | [object] | false | |
»» code | string | false | |
»» message | string | false | |
»» input | string | false |
getRecords
Code samples
curl --request GET \
--url https://api.glidian.com/v2/records \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/records", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/records", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/records")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /records
Retrieves all available records
Retrieves all records that match the requested filters. Note that the returned records
will not include request_fields
, submission_support
- use the
single-record endpoint to access that information.
Query parameters
{
"last_update_start_date": "2018-01-00T00:00:00.000Z",
"last_update_end_date": "2018-12-00T00:00:00.000Z",
"statuses": "Submitted,Request Received",
"record_ids": "MOL61235,GEN98721",
"reference_numbers": "REF-420218,REF-320198"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
last_update_start_date | query | string(date) | false | UTC date in ISO-8601 format for the earliest date returned for a record's last status update. If none of 'last_update_start_date', 'last_update_end_date', and 'record_ids' is provided, 'last_update_start_date' will default to 30 days ago (in Pacific Timezone). |
last_update_end_date | query | string(date) | false | UTC date in ISO-8601 format for the latest date returned for a record's last status update |
statuses | query | string | false |
Comma separated list of statuses to use as filters for the search. See
list statuses for the full list of options. Labels can be
case-insensitive. e.g statuses=Submitted,Request+Received
|
record_ids | query | string | false | Comma separated list of record ids that the search should be limited to. |
reference_numbers | query | string | false | Comma separated list of reference numbers the search should be limited to. |
Detailed descriptions
statuses: Comma separated list of statuses to use as filters for the
search. See list statuses for the full list of options. Labels
can be case-insensitive. e.g statuses=Submitted,Request+Received
Example responses
{
"records": [
{
"id": "MOL61235",
"created_at": "2017-06-20T09:18:26.000Z",
"reference_number": "AAAA-123-654321",
"payor_reference_number": "OP0566111111",
"urgent": true,
"urgent_reason": "Text explanantion of why case is urgent",
"user_notes": "This is a note",
"owner": {
"id": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY",
"username": "Sally",
"dashboard_status": "Actived"
},
"state": {
"id": 1,
"name": "California"
},
"insurance": {
"id": 52,
"name": "Aetna"
},
"service": {
"id": 47,
"name": "Molecular and Genetic Testing",
"type": "Lab"
},
"latest_status": {
"id": 2041,
"created_at": "2017-06-20T09:18:26.000Z",
"label": "Submitted"
},
"procedure_statuses": []
},
{
"id": "GEN98721",
"created_at": "2018-01-12T09:21:52.000Z",
"reference_number": "AAAA-123-654444",
"reference_number_two": "BBBB-456-222222",
"auth_number": "R123001123",
"auth_approval_from_date": "2018-01-12T00:00:00.000Z",
"auth_approval_to_date": "2018-04-12T00:00:00.000Z",
"owner": {
"id": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY",
"username": "Sally",
"dashboard_status": "Archived"
},
"state": {
"id": 5,
"name": "Texas"
},
"insurance": {
"id": 4,
"name": "UnitedHealthCare"
},
"service": {
"id": 5,
"name": "General Procedure",
"type": "Procedure"
},
"latest_status": {
"id": 4095,
"created_at": "2018-01-18T13:42:13.000Z",
"label": "Approved (Letter)"
},
"procedure_statuses": [
{
"procedure_code_type": "CPT",
"procedure_code": "81479",
"quantity": 1,
"status": "APPROVED"
},
{
"procedure_code_type": "CPT",
"procedure_code": "81162",
"quantity": 3,
"status": "AUTH_NOT_REQUIRED"
}
]
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» records | [Record] | false | [Represents a single prior authorization request] |
»» reference_number | string | false | Custom reference number provided by developer when draft was created |
»» reference_number_two | string | false | Second custom reference number provided by developer when draft was created |
»» urgent | boolean | false | Boolean flag indicating if the case is marked as urgent |
»» urgent_reason | string | false | Text summarizing the reason for marking a case as urgent |
»» state | string | true | |
»» id | string | true | ID of the record |
»» created_at | string(date) | true | UTC date in ISO-8601 format for when the record was created |
»» auth_number | string | false | Authorization number assigned to this case by insurance |
»» payor_reference_number | string | false | Latest reference number given by the payor before an authorization number is assigned |
»» auth_approval_from_date | string(date) | false | If provided, this is the earliest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
»» auth_approval_to_date | string(date) | false | If provided, this is the latest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
»» owner | object | true | User object for the owner of this record |
»»» id | string | true | ID for the user object in the form of a UUID |
»»» username | string | true | Username for this user |
»»» dashboard_status | string | true | The visibility status of this record on the owner's dashboard |
»» insurance | Insurance | true | |
»»» id | integer | true | ID of the insurance company |
»»» name | string | true | Name of the insurance |
»» service | Service | true | |
»»» id | integer | true | ID of the service |
»»» name | string | true | Name of the service |
»»» type | string | true | Describes the type of service (eg. Drug, Procedure, Lab, etc.) |
»» latest_status | RecordStatus | true | |
»»» id | integer | true | Record ID of the record status |
»»» created_at | string(date) | true | UTC date in ISO-8601 format for when this record status was created |
»»» label | string | true | Describes the status type (eg. Denied, Approved, etc.) |
»»» reason | string | false |
For Denied , Canceled , and
Action Required statuses, the reason provided for this status.
|
»»» details | string | false |
For Denied , Canceled , and
Action Required statuses, additional information about the reason. For
example, if the reason was "Not medically necessary," then this field will
include a rationale for that determination (if provided by the payor)
|
»» procedure_statuses | [ProcedureStatus] | true | An array of procedure statuses with relevant information. Please note that this array will be empty for cases created in Glidian before individual procedure codes started being tracked. |
»»» procedure_code_type | string | true | The type of procedure code being listed. The only option right now is CPT |
»»» procedure_code | string | true | The value of the procedure code without the quantity identifier |
»»» quantity | number | true | The number of units for the given procedure code |
»»» status | string | true |
The current status of this procedure code under review. The possible options include
PENDING , APPROVED , AUTH_NOT_REQUIRED , and
DENIED
|
»»» modifiers | [string] | false | |
»» portal_url | string | false | A link to the record in the Glidian portal |
getRecord
Code samples
curl --request GET \
--url https://api.glidian.com/v2/records/MOL1234567 \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/records/MOL1234567", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/records/MOL1234567", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/records/MOL1234567")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /records/{record_id}
Retrieves specific information about a given record
Retrieves information about a given record, including request_fields
and
submission_support
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
record_id | path | string | true | ID for a given record |
Example responses
{
"id": "MOL61235",
"created_at": "2017-06-20T09:18:26.000Z",
"reference_number": "AAAA-123-654321",
"urgent": true,
"urgent_reason": "Text explanantion of why case is urgent",
"user_notes": "This is a note",
"auth_number": "R123001123",
"payor_reference_number": "12013301234",
"owner": {
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"username": "Joe",
"dashboard_status": "Deleted"
},
"state": {
"id": 1,
"name": "California"
},
"insurance": {
"id": 52,
"name": "Aetna"
},
"service": {
"id": 47,
"name": "Molecular and Genetic Testing",
"type": "Lab"
},
"latest_status": {
"id": 2041,
"created_at": "2017-06-20T09:18:26.000Z",
"label": "Submitted"
},
"procedure_statuses": [
{
"procedure_code_type": "CPT",
"procedure_code": "81162",
"quantity": 1,
"status": "PENDING"
}
],
"request_fields": {
"patient:firstName": "John",
"provider:npi": "1234567893"
}
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» reference_number | string | false | Custom reference number provided by developer when draft was created |
» reference_number_two | string | false | Second custom reference number provided by developer when draft was created |
» urgent | boolean | false | Boolean flag indicating if the case is marked as urgent |
» urgent_reason | string | false | Text summarizing the reason for marking a case as urgent |
» state | string | false | |
» id | string | false | ID of the record |
» created_at | string(date) | false | UTC date in ISO-8601 format for when the record was created |
» auth_number | string | false | Authorization number assigned to this case by insurance |
» payor_reference_number | string | false | Latest reference number given by the payor before an authorization number is assigned |
» auth_approval_from_date | string(date) | false | If provided, this is the earliest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
» auth_approval_to_date | string(date) | false | If provided, this is the latest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
» team | string | false |
The team the record is assigned to or null when the record is not
assigned to a team.
|
» owner | object | false | User object for the owner of this record |
»» id | string | true | ID for the user object in the form of a UUID |
»» username | string | true | Username for this user |
»» dashboard_status | string | true | The visibility status of this record on the owner's dashboard |
» insurance | Insurance | false | |
»» id | integer | true | ID of the insurance company |
»» name | string | true | Name of the insurance |
» service | Service | false | |
»» id | integer | true | ID of the service |
»» name | string | true | Name of the service |
»» type | string | true | Describes the type of service (eg. Drug, Procedure, Lab, etc.) |
» latest_status | RecordStatus | false | |
»» id | integer | true | Record ID of the record status |
»» created_at | string(date) | true | UTC date in ISO-8601 format for when this record status was created |
»» label | string | true | Describes the status type (eg. Denied, Approved, etc.) |
»» reason | string | false |
For Denied , Canceled , and
Action Required statuses, the reason provided for this status.
|
»» details | string | false |
For Denied , Canceled , and
Action Required statuses, additional information about the reason. For
example, if the reason was "Not medically necessary," then this field will
include a rationale for that determination (if provided by the payor)
|
» procedure_statuses | [ProcedureStatus] | false | An array of procedure statuses with relevant information. Please note that this array will be empty for cases created in Glidian before individual procedure codes started being tracked. |
»» procedure_code_type | string | true | The type of procedure code being listed. The only option right now is CPT |
»» procedure_code | string | true | The value of the procedure code without the quantity identifier |
»» quantity | number | true | The number of units for the given procedure code |
»» status | string | true |
The current status of this procedure code under review. The possible options include
PENDING , APPROVED , AUTH_NOT_REQUIRED , and
DENIED
|
»» modifiers | [string] | false | |
» portal_url | string | false | A link to the record in the Glidian portal |
» status_history | [RecordStatus] | false | |
» request_fields | object | true | Holds the request data fields for this auth, keyed by field identifier Use the field definitions endpoint to list all possible fields. |
»» additionalProperties | string | false | |
» submission_support | SubmissionSupport | false | Only present when record is in Draft status |
»» requires_portal_submission | boolean | false | Communicates information about whether submission through the Glidian portal is required. |
»» portal_submission_url | string | false | When portal submission is required, this a direct URL to edit the submission. |
»» has_unanswered_questions | boolean | false | Indicates that suggested clinical questions have not been answered for this record. Check the record's clinical questions endpoint for more info. |
»» validation | object | false | Communicates information about the validity of the record and its readiness to be submitted. |
»»» is_valid | boolean | false | Indicates whether the record data is valid and ready for submission. |
»»» errors | [ValidationErrorInformation] | false | Information about blocking errors that will prevent this record from being submitted. |
»»»» field_name | string | true | Name of the field |
»»»» code | string | true | Unique code identifying the type of error this is |
»»»» message | string | true | Message describing the error code |
»»» warnings | [ValidationErrorInformation] | false | Information about non-blocking warnings for this record. The record can be submitted without addressing the warnings. |
updateRecord
Code samples
curl --request PATCH \
--url https://api.glidian.com/v2/records/MOL1234567 \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--data '{"reference_number":"string","reference_number_two":"string","urgent":true,"urgent_reason":"string","state":"string","owner":"string","insurance_id":"string","service_id":"string","team":"string","request_fields":{"property1":"string","property2":"string"},"notes":"string","user_notes":"string"}'
fetch("https://api.glidian.com/v2/records/MOL1234567", {
"method": "PATCH",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
},
"body": "{\"reference_number\":\"string\",\"reference_number_two\":\"string\",\"urgent\":true,\"urgent_reason\":\"string\",\"state\":\"string\",\"owner\":\"string\",\"insurance_id\":\"string\",\"service_id\":\"string\",\"team\":\"string\",\"request_fields\":{\"property1\":\"string\",\"property2\":\"string\"},\"notes\":\"string\",\"user_notes\":\"string\"}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
payload = "{\"reference_number\":\"string\",\"reference_number_two\":\"string\",\"urgent\":true,\"urgent_reason\":\"string\",\"state\":\"string\",\"owner\":\"string\",\"insurance_id\":\"string\",\"service_id\":\"string\",\"team\":\"string\",\"request_fields\":{\"property1\":\"string\",\"property2\":\"string\"},\"notes\":\"string\",\"user_notes\":\"string\"}"
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("PATCH", "/v2/records/MOL1234567", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/records/MOL1234567")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
request.body = "{\"reference_number\":\"string\",\"reference_number_two\":\"string\",\"urgent\":true,\"urgent_reason\":\"string\",\"state\":\"string\",\"owner\":\"string\",\"insurance_id\":\"string\",\"service_id\":\"string\",\"team\":\"string\",\"request_fields\":{\"property1\":\"string\",\"property2\":\"string\"},\"notes\":\"string\",\"user_notes\":\"string\"}"
response = http.request(request)
puts response.read_body
PATCH /records/{record_id}
Updates an existing record
Updates an existing record. Items in request_fields
are merged with
already-saved data. To unset an existing value, you must explicitly pass in a null value.
At present, records can only be updated when they are in draft status. After a record is submitted, to make further changes, please log in to the Glidian portal and send a message with the needed changes. We are exploring adding further capabilities to the API for this use case.
You can also change the auth's service or insurance by providing
insurance_id
, and service_id
and state
(where
applicable).
Returns updated information about a given record, including request_fields
,
validation
, and submissionSupport
Body parameter
{
"reference_number": "string",
"reference_number_two": "string",
"urgent": true,
"urgent_reason": "string",
"state": "string",
"owner": "string",
"insurance_id": "string",
"service_id": "string",
"team": "string",
"request_fields": {
"property1": "string",
"property2": "string"
},
"notes": "string",
"user_notes": "string"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
record_id | path | string | true | ID for a given record |
body | body | UpdateRecordInputs | false |
Example responses
{
"id": "GEN98721",
"created_at": "2018-01-12T09:21:52.000Z",
"reference_number": "AAAA-123-654444",
"reference_number_two": "BBBB-456-222222",
"auth_number": "R123001123",
"payor_reference_number": "OP0566123123",
"auth_approval_from_date": "2018-03-25T00:00:00.000Z",
"auth_approval_to_date": "2018-07-25T00:00:00.000Z",
"owner": {
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"username": "Joe",
"dashboard_status": "Archived"
},
"state": {
"id": 43,
"name": "Texas"
},
"insurance": {
"id": 46,
"name": "Humana (Medicare)"
},
"service": {
"id": 29,
"name": "General Procedure",
"type": "Procedure"
},
"latest_status": {
"id": "GEN98721",
"created_at": "2018-01-18T13:42:13.000Z",
"label": "Approved"
},
"procedure_statuses": [
{
"procedure_code_type": "CPT",
"procedure_code": "81162",
"quantity": 1,
"status": "APPROVED"
}
],
"portal_url": "https://my.glidian.com/app/dashboard/GEN98721",
"request_fields": {
"patient:firstName": "John",
"provider:npi": "1234567893",
"medical:cpt": "81162",
"medical:icd10": "Z80.3, Z80.41",
"medical:serviceStartDate": "2018-11-10"
}
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» reference_number | string | false | Custom reference number provided by developer when draft was created |
» reference_number_two | string | false | Second custom reference number provided by developer when draft was created |
» urgent | boolean | false | Boolean flag indicating if the case is marked as urgent |
» urgent_reason | string | false | Text summarizing the reason for marking a case as urgent |
» state | string | false | |
» id | string | false | ID of the record |
» created_at | string(date) | false | UTC date in ISO-8601 format for when the record was created |
» auth_number | string | false | Authorization number assigned to this case by insurance |
» payor_reference_number | string | false | Latest reference number given by the payor before an authorization number is assigned |
» auth_approval_from_date | string(date) | false | If provided, this is the earliest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
» auth_approval_to_date | string(date) | false | If provided, this is the latest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
» team | string | false |
The team the record is assigned to or null when the record is not
assigned to a team.
|
» owner | object | false | User object for the owner of this record |
»» id | string | true | ID for the user object in the form of a UUID |
»» username | string | true | Username for this user |
»» dashboard_status | string | true | The visibility status of this record on the owner's dashboard |
» insurance | Insurance | false | |
»» id | integer | true | ID of the insurance company |
»» name | string | true | Name of the insurance |
» service | Service | false | |
»» id | integer | true | ID of the service |
»» name | string | true | Name of the service |
»» type | string | true | Describes the type of service (eg. Drug, Procedure, Lab, etc.) |
» latest_status | RecordStatus | false | |
»» id | integer | true | Record ID of the record status |
»» created_at | string(date) | true | UTC date in ISO-8601 format for when this record status was created |
»» label | string | true | Describes the status type (eg. Denied, Approved, etc.) |
»» reason | string | false |
For Denied , Canceled , and
Action Required statuses, the reason provided for this status.
|
»» details | string | false |
For Denied , Canceled , and
Action Required statuses, additional information about the reason. For
example, if the reason was "Not medically necessary," then this field will
include a rationale for that determination (if provided by the payor)
|
» procedure_statuses | [ProcedureStatus] | false | An array of procedure statuses with relevant information. Please note that this array will be empty for cases created in Glidian before individual procedure codes started being tracked. |
»» procedure_code_type | string | true | The type of procedure code being listed. The only option right now is CPT |
»» procedure_code | string | true | The value of the procedure code without the quantity identifier |
»» quantity | number | true | The number of units for the given procedure code |
»» status | string | true |
The current status of this procedure code under review. The possible options include
PENDING , APPROVED , AUTH_NOT_REQUIRED , and
DENIED
|
»» modifiers | [string] | false | |
» portal_url | string | false | A link to the record in the Glidian portal |
» status_history | [RecordStatus] | false | |
» request_fields | object | true | Holds the request data fields for this auth, keyed by field identifier Use the field definitions endpoint to list all possible fields. |
»» additionalProperties | string | false | |
» submission_support | SubmissionSupport | false | Only present when record is in Draft status |
»» requires_portal_submission | boolean | false | Communicates information about whether submission through the Glidian portal is required. |
»» portal_submission_url | string | false | When portal submission is required, this a direct URL to edit the submission. |
»» has_unanswered_questions | boolean | false | Indicates that suggested clinical questions have not been answered for this record. Check the record's clinical questions endpoint for more info. |
»» validation | object | false | Communicates information about the validity of the record and its readiness to be submitted. |
»»» is_valid | boolean | false | Indicates whether the record data is valid and ready for submission. |
»»» errors | [ValidationErrorInformation] | false | Information about blocking errors that will prevent this record from being submitted. |
»»»» field_name | string | true | Name of the field |
»»»» code | string | true | Unique code identifying the type of error this is |
»»»» message | string | true | Message describing the error code |
»»» warnings | [ValidationErrorInformation] | false | Information about non-blocking warnings for this record. The record can be submitted without addressing the warnings. |
addAttachmentsToDraftRecord
Code samples
curl --request POST \
--url https://api.glidian.com/v2/records/MOL1234567/attachments \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--header 'content-type: multipart/form-data; boundary=---011000010111000001101001' \
--form 'file=[ '\''FILE_1_BINARY_DATA'\'', '\''FILE_2_BINARY_DATA'\'' ]'
const form = new FormData();
form.append("file", ["FILE_1_BINARY_DATA","FILE_2_BINARY_DATA"]);
fetch("https://api.glidian.com/v2/records/MOL1234567/attachments", {
"method": "POST",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN",
"content-type": "multipart/form-data; boundary=---011000010111000001101001"
},
"body": form
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nFILE_1_BINARY_DATA,FILE_2_BINARY_DATA\r\n-----011000010111000001101001--\r\n"
headers = {
'Authorization': "Bearer ACCESS_TOKEN",
'content-type': "multipart/form-data; boundary=---011000010111000001101001"
}
conn.request("POST", "/v2/records/MOL1234567/attachments", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/records/MOL1234567/attachments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
request["content-type"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nFILE_1_BINARY_DATA,FILE_2_BINARY_DATA\r\n-----011000010111000001101001--\r\n"
response = http.request(request)
puts response.read_body
POST /records/{record_id}/attachments
Attaches clinical docs to Draft record
Attach clinical documents to a created draft record. NOTE: This endpoint takes request data as multipart/form-data instead of json like other endpoints.
Body parameter
file:
- FILE_1_BINARY_DATA
- FILE_2_BINARY_DATA
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
record_id | path | string | true | ID for a given record |
file | body | [AttachmentFile] | false | One or more files to attach to the draft record. |
getRecordClinicalQuestions
Code samples
curl --request GET \
--url https://api.glidian.com/v2/records/MOL1234567/clinical-questions \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/records/MOL1234567/clinical-questions", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/records/MOL1234567/clinical-questions", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/records/MOL1234567/clinical-questions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /records/{record_id}/clinical-questions
Retrieves information about the clinical questions for a record
Provides the clinical questions for this record and any previously submitted responses.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
record_id | path | string | true | ID for a given record |
Example responses
{
"questions": [
{
"id": 1,
"prompt": "Does patient have a family history of this condition?",
"type": "select",
"options": [
"Yes",
"No",
"Unknown"
]
}
],
"responses": [
{
"question_id": 1,
"value": "Yes"
}
],
"are_all_questions_answered": true
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» questions | [ClinicalQuestion] | false | |
»» id | number | true | ID of the Clinical Question |
»» prompt | string | true | the text of the question to display to an end-user |
»» type | string | true |
the data type of the question. Implies validation rules. For example, if type is
select , the response value must be one of the values in the list. For
multi-select , the response must an array of values from the options.
|
»» options | [string] | false |
Valid options for a select , select-other , and
multi-select question types.
|
» responses | [ClinicalQuestionResponse] | false | |
»» question_id | number | true | must correspond to a valid ClinicalQuestion id |
»» value | string,array | true |
the response to this question. multi-select questions require an array
value of valid options.
|
»» other_value | string | false |
For select-other questions only, the value to use when
Other is selected.
|
»» is_valid | boolean¦null | false |
Indicates whether the provided response is valid for the question. The value may be
null when a question was answered previously but a record was updated
and that question is no longer relevant.
|
» are_all_questions_answered | boolean | false |
updateRecordClinicalQuestions
Code samples
curl --request POST \
--url https://api.glidian.com/v2/records/MOL1234567/clinical-questions \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--data '{"responses":[{"question_id":1,"value":"No"},{"question_id":2,"value":null},{"question_id":3,"value":"Other","other_value":"Both maternal and paternal"}]}'
fetch("https://api.glidian.com/v2/records/MOL1234567/clinical-questions", {
"method": "POST",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
},
"body": "{\"responses\":[{\"question_id\":1,\"value\":\"No\"},{\"question_id\":2,\"value\":null},{\"question_id\":3,\"value\":\"Other\",\"other_value\":\"Both maternal and paternal\"}]}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
payload = "{\"responses\":[{\"question_id\":1,\"value\":\"No\"},{\"question_id\":2,\"value\":null},{\"question_id\":3,\"value\":\"Other\",\"other_value\":\"Both maternal and paternal\"}]}"
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("POST", "/v2/records/MOL1234567/clinical-questions", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/records/MOL1234567/clinical-questions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
request.body = "{\"responses\":[{\"question_id\":1,\"value\":\"No\"},{\"question_id\":2,\"value\":null},{\"question_id\":3,\"value\":\"Other\",\"other_value\":\"Both maternal and paternal\"}]}"
response = http.request(request)
puts response.read_body
POST /records/{record_id}/clinical-questions
Retrieves information about the clinical questions for a record
Set or update responses to clinical questions. Newly submitted responses are merged with
any previous responses, overwriting responses with the same question_id. To remove a
response, set the value to null
.
For example, if you first submit:
[{ question_id: 1, value: "Yes"}, { question_id: 2, value:
"Unknown" }, { question_id: 3, value: "Maternal" }]
And then submit:
[{ question_id: 2, value: null }, { question_id: 3, value: "Paternal"
}]
Then the final stored responses will be:
[{ question_id: 1, value: "Yes"}, { question_id: 3, value:
"Paternal" }]
Body parameter
{
"responses": [
{
"question_id": 1,
"value": "No"
},
{
"question_id": 2,
"value": null
},
{
"question_id": 3,
"value": "Other",
"other_value": "Both maternal and paternal"
}
]
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
record_id | path | string | true | ID for a given record |
responses | body | [ClinicalQuestionResponse] | false | Responses to clinical questions. |
» question_id | body | number | true | must correspond to a valid ClinicalQuestion id |
» value | body | string,array | true |
the response to this question. multi-select questions require an array
value of valid options.
|
» other_value | body | string | false |
For select-other questions only, the value to use when
Other is selected.
|
» is_valid | body | boolean¦null | false |
Indicates whether the provided response is valid for the question. The value may be
null when a question was answered previously but a record was updated
and that question is no longer relevant.
|
Example responses
{
"questions": [
{
"id": 1,
"prompt": "Does patient have a family history of this condition?",
"type": "select",
"options": [
"Yes",
"No",
"Unknown"
]
}
],
"responses": [
{
"question_id": 1,
"value": "Yes"
}
],
"are_all_questions_answered": true
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» responses | [ClinicalQuestionResponse] | false | |
»» question_id | number | true | must correspond to a valid ClinicalQuestion id |
»» value | string,array | true |
the response to this question. multi-select questions require an array
value of valid options.
|
»» other_value | string | false |
For select-other questions only, the value to use when
Other is selected.
|
»» is_valid | boolean¦null | false |
Indicates whether the provided response is valid for the question. The value may be
null when a question was answered previously but a record was updated
and that question is no longer relevant.
|
submitRecord
Code samples
curl --request POST \
--url https://api.glidian.com/v2/records/MOL1234567/submit \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--data '{"ignore_warnings":false}'
fetch("https://api.glidian.com/v2/records/MOL1234567/submit", {
"method": "POST",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
},
"body": "{\"ignore_warnings\":false}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
payload = "{\"ignore_warnings\":false}"
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("POST", "/v2/records/MOL1234567/submit", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/records/MOL1234567/submit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
request.body = "{\"ignore_warnings\":false}"
response = http.request(request)
puts response.read_body
POST /records/{record_id}/submit
Submits a record
Submits a record in the current state as shown in the
get record endpoint. The record must be in
Draft
state to successfully submit through this endpoint.
Body parameter
{
"ignore_warnings": false
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
record_id | path | string | true | ID for a given record |
ignore_warnings | body | boolean | false | When a record has submission warnings this flag can be used to ignore them. |
Detailed descriptions
ignore_warnings: When a record has submission warnings this flag can be
used to ignore them. Defaults to false. See
DetailedRecord.submission_support.validation.warnings
. These will be shown as a
validation error with a message prefixed by
Submission Warning
, e.g.
Submission Warning: Based on the entered Member ID, we suggest switching the chosen
health plan to one of the following: Horizon Blue Cross Blue Shield of New Jersey,
Horizon Blue Cross Blue Shield of New Jersey (Medicaid).
Example responses
{
"record": {
"id": "MOL61235",
"created_at": "2017-06-20T09:18:26.000Z",
"reference_number": "AAAA-123-654321",
"urgent": true,
"urgent_reason": "Text explanantion of why case is urgent",
"auth_number": "R123001123",
"payor_reference_number": "12013301234",
"user_notes": "This is a note",
"owner": {
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"username": "Joe",
"dashboard_status": "Deleted"
},
"state": {
"id": 1,
"name": "California"
},
"insurance": {
"id": 52,
"name": "Aetna"
},
"service": {
"id": 47,
"name": "Molecular and Genetic Testing",
"type": "Lab"
},
"latest_status": {
"id": 2041,
"created_at": "2017-06-20T09:18:26.000Z",
"label": "Submitted"
},
"procedure_statuses": [
{
"procedure_code_type": "CPT",
"procedure_code": "81162",
"quantity": 1,
"status": "PENDING"
}
],
"request_fields": {
"patient:firstName": "John",
"provider:npi": "1234567893"
}
}
}
{
"status_code": 400,
"errors": [
{
"code": "invalid_input",
"message": "Submission Warning: Based on the entered Member ID, we suggest switching the chosen health plan to one of the following: Horizon Blue Cross Blue Shield of New Jersey, Horizon Blue Cross Blue Shield of New Jersey (Medicaid).",
"input": "insurance_id"
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» reference_number | string | false | Custom reference number provided by developer when draft was created |
» reference_number_two | string | false | Second custom reference number provided by developer when draft was created |
» urgent | boolean | false | Boolean flag indicating if the case is marked as urgent |
» urgent_reason | string | false | Text summarizing the reason for marking a case as urgent |
» state | string | false | |
» id | string | false | ID of the record |
» created_at | string(date) | false | UTC date in ISO-8601 format for when the record was created |
» auth_number | string | false | Authorization number assigned to this case by insurance |
» payor_reference_number | string | false | Latest reference number given by the payor before an authorization number is assigned |
» auth_approval_from_date | string(date) | false | If provided, this is the earliest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
» auth_approval_to_date | string(date) | false | If provided, this is the latest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
» team | string | false |
The team the record is assigned to or null when the record is not
assigned to a team.
|
» owner | object | false | User object for the owner of this record |
»» id | string | true | ID for the user object in the form of a UUID |
»» username | string | true | Username for this user |
»» dashboard_status | string | true | The visibility status of this record on the owner's dashboard |
» insurance | Insurance | false | |
»» id | integer | true | ID of the insurance company |
»» name | string | true | Name of the insurance |
» service | Service | false | |
»» id | integer | true | ID of the service |
»» name | string | true | Name of the service |
»» type | string | true | Describes the type of service (eg. Drug, Procedure, Lab, etc.) |
» latest_status | RecordStatus | false | |
»» id | integer | true | Record ID of the record status |
»» created_at | string(date) | true | UTC date in ISO-8601 format for when this record status was created |
»» label | string | true | Describes the status type (eg. Denied, Approved, etc.) |
»» reason | string | false |
For Denied , Canceled , and
Action Required statuses, the reason provided for this status.
|
»» details | string | false |
For Denied , Canceled , and
Action Required statuses, additional information about the reason. For
example, if the reason was "Not medically necessary," then this field will
include a rationale for that determination (if provided by the payor)
|
» procedure_statuses | [ProcedureStatus] | false | An array of procedure statuses with relevant information. Please note that this array will be empty for cases created in Glidian before individual procedure codes started being tracked. |
»» procedure_code_type | string | true | The type of procedure code being listed. The only option right now is CPT |
»» procedure_code | string | true | The value of the procedure code without the quantity identifier |
»» quantity | number | true | The number of units for the given procedure code |
»» status | string | true |
The current status of this procedure code under review. The possible options include
PENDING , APPROVED , AUTH_NOT_REQUIRED , and
DENIED
|
»» modifiers | [string] | false | |
» portal_url | string | false | A link to the record in the Glidian portal |
» status_history | [RecordStatus] | false | |
» request_fields | object | true | Holds the request data fields for this auth, keyed by field identifier Use the field definitions endpoint to list all possible fields. |
»» additionalProperties | string | false | |
» submission_support | SubmissionSupport | false | Only present when record is in Draft status |
»» requires_portal_submission | boolean | false | Communicates information about whether submission through the Glidian portal is required. |
»» portal_submission_url | string | false | When portal submission is required, this a direct URL to edit the submission. |
»» has_unanswered_questions | boolean | false | Indicates that suggested clinical questions have not been answered for this record. Check the record's clinical questions endpoint for more info. |
»» validation | object | false | Communicates information about the validity of the record and its readiness to be submitted. |
»»» is_valid | boolean | false | Indicates whether the record data is valid and ready for submission. |
»»» errors | [ValidationErrorInformation] | false | Information about blocking errors that will prevent this record from being submitted. |
»»»» field_name | string | true | Name of the field |
»»»» code | string | true | Unique code identifying the type of error this is |
»»»» message | string | true | Message describing the error code |
»»» warnings | [ValidationErrorInformation] | false | Information about non-blocking warnings for this record. The record can be submitted without addressing the warnings. |
Status Code 400
Name | Type | Required | Description |
---|---|---|---|
» status_code | number | false | |
» errors | [object] | false | |
»» code | string | false | |
»» message | string | false | |
»» input | string | false |
getRecordStatuses
Code samples
curl --request GET \
--url https://api.glidian.com/v2/record-statuses \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/record-statuses", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/record-statuses", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/record-statuses")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /record-statuses
Retrieves all status updates for this account.
Returns all status updates made within the default or given time range with requested filters. Note that records may appear multiple times within these results (for example, if a record was updated multiple times during the window) and that a returned result may not be the most recent update for each record. To just check for the most recent update for each record, please use the list records endpoint.
Query parameters
{
"from_date": "2018-01-01T00:00:00.000Z",
"to_date": "2018-03-01T00:00:00.000Z",
"statuses": [
"Submitted",
"Request Received"
]
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
statuses | query | string | false |
Comma separated list of statuses to use as filters for the search. See
list statuses for the full list of options. Labels can be
case-insensitive. e.g statuses=Submitted,Request+Received
|
from_date | query | string(date) | false |
UTC date in ISO-8601 format for the earliest date returned for a record's status
update. Required if to_date is provided.
|
to_date | query | string(date) | false |
UTC date in ISO-8601 format for the latest date returned for a record's status
update. Required if from_date is provided, and may be at most 3 months
later than to_date .
|
Detailed descriptions
statuses: Comma separated list of statuses to use as filters for the
search. See list statuses for the full list of options. Labels
can be case-insensitive. e.g statuses=Submitted,Request+Received
to_date: UTC date in ISO-8601 format for the latest date returned for a
record's status update. Required if from_date
is provided, and may be at most
3 months later than to_date
. When no date filters are provided, the search
defaults to 30 days ago.
Example responses
{
"record_statuses": [
{
"created_at": "2021-02-25T16:53:13.609Z",
"label": "Submitted",
"reason": null,
"details": null,
"id": "MOL943290"
},
{
"created_at": "2021-02-26T16:53:13.609Z",
"label": "Action Required",
"reason": "Additional Clinical Info",
"details": "Additional Clinical Information Requested",
"id": "MOL943290"
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» record-statuses | [RecordStatus] | false | |
»» id | integer | true | Record ID of the record status |
»» created_at | string(date) | true | UTC date in ISO-8601 format for when this record status was created |
»» label | string | true | Describes the status type (eg. Denied, Approved, etc.) |
»» reason | string | false |
For Denied , Canceled , and
Action Required statuses, the reason provided for this status.
|
»» details | string | false |
For Denied , Canceled , and
Action Required statuses, additional information about the reason. For
example, if the reason was "Not medically necessary," then this field will
include a rationale for that determination (if provided by the payor)
|
getRecordStatusAttachment
Code samples
curl --request GET \
--url https://api.glidian.com/v2/records/-/123/attachment \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/records/-/123/attachment", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/records/-/123/attachment", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/records/-/123/attachment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /records/-/{record_status_id}/attachment
Retrieves the attachment (e.g. determination letter) for a given record status
Retrieves the status attachment for a given record status. This is returned as a buffer that can be interpreted as a pdf. If the status does not have an attachment, an error is returned indicating that there was nothing found.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
record_status_id | path | integer | true | ID for a given record status |
Providers
getProviders
Code samples
curl --request GET \
--url https://api.glidian.com/v2/providers \
--header 'Authorization: Bearer ACCESS_TOKEN'
fetch("https://api.glidian.com/v2/providers", {
"method": "GET",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("GET", "/v2/providers", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/providers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
response = http.request(request)
puts response.read_body
GET /providers
Retrieves all valid Providers that are registered with Glidian. This information is not needed for submission, but helpful for you in determining whether or not Glidian will be able to process the auth immediately, as some payors require that Glidian be authorized to act on behalf of the ordering provider. For more information, please speak to your Glidian account representative.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
npi | query | string | false | Optionally specify a provider NPI to search |
Example responses
{
"providers": [
{
"npi": "1234567890"
},
{
"npi": "1987543210"
},
{
"npi": "1223334444"
}
]
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» providers | [object] | true | |
»» npi | string | false | Ordering Provider NPI |
Embed Sessions
Embed sessions are used to grant access to a specific record for a short time, without needing the end-user to create a Glidian portal account. Due to the security implications of this workflow, this feature is disabled by default. If you feel that your organization would benefit from this feature, please contact our team to set up a consultation.
To initate an embed session, use POST /embed-sessions
and redirect the user
to the url included in the response. The URL expires in one minute, and can only be used
once.
createEmbedSession
Code samples
curl --request POST \
--url https://api.glidian.com/v2/records/:record_id/embed-sessions \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--data '{"external_user_id":"alex.doe","record_id":"GEN123456789","expires_in":600}'
fetch("https://api.glidian.com/v2/records/:record_id/embed-sessions", {
"method": "POST",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
},
"body": "{\"external_user_id\":\"alex.doe\",\"record_id\":\"GEN123456789\",\"expires_in\":600}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
payload = "{\"external_user_id\":\"alex.doe\",\"record_id\":\"GEN123456789\",\"expires_in\":600}"
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("POST", "/v2/records/:record_id/embed-sessions", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/records/:record_id/embed-sessions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
request.body = "{\"external_user_id\":\"alex.doe\",\"record_id\":\"GEN123456789\",\"expires_in\":600}"
response = http.request(request)
puts response.read_body
POST /records/:record_id/embed-sessions
Create an embed session
Creates an embed session for the specified record and returns the URL that the user should go to to access it.
Body parameter
{
"external_user_id": "alex.doe",
"record_id": "GEN123456789",
"expires_in": 600
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
external_user_id | body | string | true | A unique identifier for the end user. This identifier is used to document access for compliance purposes, so it should be at least unique enough to identify an individual end user. |
record_id | body | string | true | The record ID to grant access to |
expires_in | body | number | false | Optional parameter to specify how long the embed session should last in seconds. Defaults to 3600 (one hour). Maximum 86400 (one day). Note that the this controls the expiration for the session, and not the URL that the user uses for initial access to the session. |
Example responses
{
"id": "59562b265a3add97",
"url": "https://www.glidian.com/embed/start?id=59562b265a3add97&authorizationCode=M5Cv1CRoiy7EJte-Wzh1jeYSDcq03jY26A10JPh2B1tH",
"scopes": "records/GEN123456789",
"external_user_id": "alex.doe",
"created_at": "2021-01-01T00:00:00.000Z",
"expires_at": "2021-01-01T01:00:00.000Z"
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» id | string | true | Unique identifier for the created session |
» url | string | true | The URL for the user to access this session. This URL expires in one minute and can only be used once. |
» scopes | string | true |
Describes the access scope for this session, in the format
records/{record_id}
|
» external_user_id | string | true | The external_user_id that was included in the request |
» created_at | string | true | ISO timestamp for when this session was created |
» expires_at | string | true | ISO timestamp for when this session expires |
Testing
Testing Routes are only available in sandbox environments, for simulating updates that our system would usually make in production. These routes are not available in production.
setRecordStatus
Code samples
curl --request POST \
--url https://api.glidian.com/v2/testing/records/MOL1234567/set-status \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--data '{"status":"Approved","payer_reference_number":"Auth123456","auth_number":"Auth123456","start_date":"2023-07-10","end_date":"2023-07-10"}'
fetch("https://api.glidian.com/v2/testing/records/MOL1234567/set-status", {
"method": "POST",
"headers": {
"Authorization": "Bearer ACCESS_TOKEN"
},
"body": "{\"status\":\"Approved\",\"payer_reference_number\":\"Auth123456\",\"auth_number\":\"Auth123456\",\"start_date\":\"2023-07-10\",\"end_date\":\"2023-07-10\"}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import http.client
conn = http.client.HTTPSConnection("api.glidian.com")
payload = "{\"status\":\"Approved\",\"payer_reference_number\":\"Auth123456\",\"auth_number\":\"Auth123456\",\"start_date\":\"2023-07-10\",\"end_date\":\"2023-07-10\"}"
headers = { 'Authorization': "Bearer ACCESS_TOKEN" }
conn.request("POST", "/v2/testing/records/MOL1234567/set-status", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.glidian.com/v2/testing/records/MOL1234567/set-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer ACCESS_TOKEN'
request.body = "{\"status\":\"Approved\",\"payer_reference_number\":\"Auth123456\",\"auth_number\":\"Auth123456\",\"start_date\":\"2023-07-10\",\"end_date\":\"2023-07-10\"}"
response = http.request(request)
puts response.read_body
POST /testing/records/{record_id}/set-status
Set a record's current status.
Set a record's current status to the requested status. Use this method to test fetching
records in various statuses. The only required input is status
; reference
number, auth number, and auth dates will be automatically generated when applicable. You
may also pass specific values if you would like to test specific scenarios; these will be
ignored if submitted for inapplicable statuses.
Body parameter
{
"status": "Approved",
"payer_reference_number": "Auth123456",
"auth_number": "Auth123456",
"start_date": "2023-07-10",
"end_date": "2023-07-10"
}
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
record_id | path | string | true | ID for a given record |
status | body | string | true |
The label for the status. Use any status from the
/status-options endpoint.
|
payer_reference_number | body | string | false | Sample payer reference number. Applies to all statuses. |
auth_number | body | string | false | Sample authorization number. Only applies to "Approved" statuses. |
start_date | body | string(date) | false | Authorization start date (ISO Date). Only applies to "Approved" statuses. |
end_date | body | string(date) | false | Authorization end date. Must be after start date (ISO Date). Only applies to "Approved" statuses. |
Example responses
{
"id": 123456,
"status": "Approved",
"record_id": "GEN123456789"
}
Response Schema
Status Code 200
Name | Type | Required | Description |
---|---|---|---|
» id | number | true | Unique identifier for the created status. |
» status | string | true | The status label the record was set to |
» record_id | string | true | The record id. |
Webhooks
Webhooks allow our server to send real-time updates about activity within our system. See below for a list of supported events and the information sent with them.
Each webhook request will contain a payload that matches the
WebhookPayload schema, with event-specific data included
under the event_data
key.
In order to use webhooks, you must subscribe to the desired events. Reach out to your account representative with the following information:
-
An HTTPS url where you would like to receive events. All events will be sent as POST request.
-
Credentials Glidian should use when POST-ing to your endpoint. We support the following authentication schemes:
-
Basic Auth: Provide your
username
andpassword
-
OAuth2: Provide the following configuration details:
-
token_url
: The HTTPS endpoint used to retrieve a token from your provider. -
client_id
: A client ID provisioned for Glidian, Inc. -
client_secret
: The client secret associated with the provided client ID. -
grant_type
: The grant type used to fetch a token. Currently, onlycredentials_owner
is supported. -
scope
: (optional) All OAuth scopes required to access your webhook endpoint.
-
-
Basic Auth: Provide your
-
A list of events you would like to subscribe to
Request body
Name | Type | Required | Description |
---|---|---|---|
event_name | string | true | The name of the event generating this notification |
event_data | object | true | The event-specific data. The shape of this field will vary by event. |
timestamp | string | true |
Time when this event occurred in Glidian. We recommend using this to guard against out-of-order notifications, for example, if you receive an event for the same record id that is older than one already received. |
record:statusUpdated
Sample
record:statusUpdated
request body
{
"event_name": "record:statusUpdated",
"event_data": {
"record": {
"id": "GEN98721",
"created_at": "2018-01-12T09:21:52.000Z",
"reference_number": "AAAA-123-654444",
"reference_number_two": "BBBB-456-222222",
"auth_number": "R123001123",
"payor_reference_number": "OP0566123123",
"auth_approval_from_date": "2018-03-25T00:00:00.000Z",
"auth_approval_to_date": "2018-07-25T00:00:00.000Z",
"owner": {
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"username": "Joe",
"dashboard_status": "Archived"
},
"state": {
"id": 43,
"name": "Texas"
},
"insurance": {
"id": 46,
"name": "Humana (Medicare)"
},
"service": {
"id": 29,
"name": "General Procedure",
"type": "Procedure"
},
"latest_status": {
"id": "GEN98721",
"created_at": "2018-01-18T13:42:13.000Z",
"label": "Approved"
},
"procedure_statuses": [
{
"procedure_code_type": "CPT",
"procedure_code": "81162",
"quantity": 1,
"status": "APPROVED"
}
],
"portal_url": "https://my.glidian.com/app/dashboard/GEN98721",
"request_fields": {
"patient:firstName": "John",
"provider:npi": "1234567893",
"medical:cpt": "81162",
"medical:icd10": "Z80.3, Z80.41",
"medical:serviceStartDate": "2018-11-10"
}
}
},
"timestamp": "2021-12-20T17:34:06.167Z"
}
Event triggered each time the status of a record changes, and includes the full record
representation after the new status has been applied. The event data matches the
representation of the record you would receive with the getRecord call at
GET /records/{record_id}
Request body
Name | Type | Required | Description |
---|---|---|---|
event_name | string | true | record:statusUpdated |
event_data | object | true | The event payload |
» record | DetailedRecord | true | The updated record, including its full history of record statuses |
timestamp | string | true |
Responses
Status Code | Description |
---|---|
200 | Return a 200 status to indicate that the data was received successfully |
204 | A 204 status will also be accepted |
Schemas
User
{
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"username": "Joe",
"email": "joe@lab.com"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | ID for the user object in the form of a UUID |
username | string | true | Username for this user |
string | false | Email on file for this user | |
teams | [string] | false | The teams this user is assigned to. |
FieldDefinition
{
"id": "medical:sampleType",
"name": "sampleType",
"category": "medical",
"description": "The type of sample being submitted for testing",
"example": "Saliva",
"type": "enum",
"options": [
{
"label": "Amniotic fluid or chorionic villi",
"value": "Amniotic fluid or chorionic villi"
},
{
"label": "Blood, saliva, cheek swab",
"value": "Blood, saliva, cheek swab"
},
{
"label": "Bone marrow",
"value": "Bone marrow"
},
{
"label": "Embryo or oocyte",
"value": "Embryo or oocyte"
},
{
"label": "Liquid biopsy for cancer",
"value": "Liquid biopsy for cancer"
},
{
"label": "Solid tumor tissue",
"value": "Solid tumor tissue"
},
{
"label": "Other/unknown",
"value": "Other/unknown"
}
],
"usage": "SITUATIONAL"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | true | ID for this field |
name | string | true | Describes the type of field (eg. name, id, address, etc.) |
category | string | true | Describes the broader category of field (eg. patient, provider, etc.) |
description | string | true | Description explaining what this field is for |
example | string | false | Example of field formatting |
type | string | true | The type of the field |
format | string | false |
If the type is string , then format may specify additional
information for how the string must be formatted.* npi - A valid, 10-digit NPI * cpt - One or more comma-separated valid 5-character alphanumeric CPT code(s) with or without multiplier (e.g. "12345x2, 11111") * hcpcs - One or more comma separated valid 5-character alphanumeric HCPCS code(s), where the first character must be alphabetic, with or without multiplier (e.g. "J0600x2, J0606") * icd10 - One or more comma-separated valid ICD-10 code(s) comprising one letter, two numbers, a decimal, and 1-4 numbers (e.g. "X12.004, B13.01") * phone - A valid hyphenated 10-digit phone number with or without extension (e.g. "111-111-1111 x111") * taxId - A valid, 9-digit tax ID, with hyphen (e.g. "xx-xxxxxxx") * date - A valid date in ISO-8601 format (e.g. "YYYY-MM-DD") |
options | object | false | No description |
» value | string | false | Value of the selected option for this field |
» label | string | false | Formatted label representing the selected field option |
usage | string | true |
Use case for these fields. Required will always be present, recommended is Glidian-recommended, situational may depend on submission requirements, and deprecated fields are no longer used. |
Enumerated Values
Property | Value |
---|---|
type | string |
type | enum |
format | npi |
format | cpt |
format | hcpcs |
format | icd10 |
format | date |
format | phone |
format | taxId |
usage | REQUIRED |
usage | RECOMMENDED |
usage | SITUATIONAL |
usage | DEPRECATED |
FieldId
[
"patient:firstName",
"provider:npi",
"facility:clinicName"
]
Properties
*A field identifier in the format 'category:name', for example 'patient:firstName' or 'provider:npi' *
Name | Type | Required | Description |
---|---|---|---|
anonymous | string | false |
A field identifier in the format 'category:name', for example 'patient:firstName'
or 'provider:npi' |
StatusOption
{
"id": 4,
"label": "Action Required"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
label | string | true | Label representing this status option |
is_deprecated | boolean | false |
Status has been deprecated and will not be used for future updates. Historical
updates may still use this status. |
Team
{
"name": "Main",
"is_active": true
}
Properties
Name | Type | Required | Description |
---|---|---|---|
name | string | true | The team name. |
is_active | boolean | true | Whether this team is active and can be submitted for. |
Insurance
{
"id": 328,
"name": "Blue Shield of California (Federal Employee Plan)"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | integer | true | ID of the insurance company |
name | string | true | Name of the insurance |
Service
{
"id": 38,
"name": "Molecular and Genetic Testing",
"type": "Lab"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | integer | true | ID of the service |
name | string | true | Name of the service |
type | string | true | Describes the type of service (eg. Drug, Procedure, Lab, etc.) |
CreateRecordInputs
{
"reference_number": "string",
"reference_number_two": "string",
"urgent": true,
"urgent_reason": "string",
"state": "string",
"owner": "string",
"insurance_id": "string",
"service_id": "string",
"team": "string",
"request_fields": {
"property1": "string",
"property2": "string"
},
"file": [
"string"
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
reference_number | string | false | Custom reference number provided by developer when draft was created |
reference_number_two | string | false | Second custom reference number provided by developer when draft was created |
urgent | boolean | false | Boolean flag indicating if the case is marked as urgent |
urgent_reason | string | false | Text summarizing the reason for marking a case as urgent |
state | string | false | State abbreviation. State abbreviations can be found at USPS. |
owner | string | false | username or user id of user to set as record owner |
insurance_id | string | false | Glidian payor id for the requested insurance |
service_id | string | false | Glidian service id for the requested service |
team | string | false | The team the record should be shared with. If not specified, defaults to the draft owner's team. |
request_fields | object | false |
Holds the request data fields for this auth, keyed by field identifier (e.g.patient:name , provider:npi ). Use the
field definitionsendpoint to list all possible fields, or the requirements endpoint to check the relevant fields for a particular request. |
» additionalProperties | string | false | No description |
file | [AttachmentFile] | false | One or more files to attach to the draft record. |
UpdateRecordInputs
{
"reference_number": "string",
"reference_number_two": "string",
"urgent": true,
"urgent_reason": "string",
"state": "string",
"owner": "string",
"insurance_id": "string",
"service_id": "string",
"team": "string",
"request_fields": {
"property1": "string",
"property2": "string"
},
"notes": "string",
"user_notes": "string"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
reference_number | string | false | Custom reference number provided by developer when draft was created |
reference_number_two | string | false | Second custom reference number provided by developer when draft was created |
urgent | boolean | false | Boolean flag indicating if the case is marked as urgent |
urgent_reason | string | false | Text summarizing the reason for marking a case as urgent |
state | string | false | State abbreviation. State abbreviations can be found at USPS. |
owner | string | false | username or user id of user to set as record owner |
insurance_id | string | false | Glidian payor id for the requested insurance |
service_id | string | false | Glidian service id for the requested service |
team | string | false | The team the record should be shared with. |
request_fields | object | false |
Holds the request data fields for this auth, keyed by field identifier (e.g.patient:name , provider:npi ). Use the
field definitionsendpoint to list all possible fields, or the requirements endpoint to check the relevant fields for a particular request. |
» additionalProperties | string | false | No description |
notes | string | false | Additional notes to submit with request to payor. |
user_notes | string | false | Additional notes shown only to users. |
AttachmentFile
"string"
Properties
File binary data that will be attached to a draft record. A maximum of 10 files can be attached per request.
Name | Type | Required | Description |
---|---|---|---|
anonymous | string(binary) | false | File binary data that will be attached to a draft record. A maximum of 10 files can be attached per request. |
Record
{
"id": "GEN98721",
"created_at": "2018-01-12T09:21:52.000Z",
"reference_number": "AAAA-123-654444",
"reference_number_two": "BBBB-456-222222",
"auth_number": "R123001123",
"payor_reference_number": "OP0566321321",
"auth_approval_from_date": "2018-01-15T00:00:00.000Z",
"owner": {
"id": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY",
"username": "Sally",
"dashboard_status": "Active"
},
"state": {
"id": 43,
"name": "Texas"
},
"insurance": {
"id": 46,
"name": "Humana (Medicare)"
},
"service": {
"id": 29,
"name": "General Procedure",
"type": "Procedure"
},
"latest_status": {
"id": "GEN98721",
"created_at": "2018-01-18T13:42:13.000Z",
"label": "Approved"
},
"procedure_statuses": [
{
"procedure_code_type": "CPT",
"procedure_code": "81479",
"quantity": 1,
"status": "APPROVED"
}
],
"portal_url": "https://my.glidian.com/app/dashboard/GEN98721"
}
Properties
Represents a single prior authorization request
Name | Type | Required | Description |
---|---|---|---|
reference_number | string | false | Custom reference number provided by developer when draft was created |
reference_number_two | string | false | Second custom reference number provided by developer when draft was created |
urgent | boolean | false | Boolean flag indicating if the case is marked as urgent |
urgent_reason | string | false | Text summarizing the reason for marking a case as urgent |
state | string | true | No description |
id | string | true | ID of the record |
created_at | string(date) | true | UTC date in ISO-8601 format for when the record was created |
auth_number | string | false | Authorization number assigned to this case by insurance |
payor_reference_number | string | false | Latest reference number given by the payor before an authorization number is assigned |
auth_approval_from_date | string(date) | false | If provided, this is the earliest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
auth_approval_to_date | string(date) | false | If provided, this is the latest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
owner | object | true | User object for the owner of this record |
» id | string | true | ID for the user object in the form of a UUID |
» username | string | true | Username for this user |
» dashboard_status | string | true | The visibility status of this record on the owner's dashboard |
insurance | Insurance | true | No description |
service | Service | true | No description |
latest_status | RecordStatus | true | No description |
procedure_statuses | [ProcedureStatus] | true | An array of procedure statuses with relevant information. Please note that this array will be empty for cases created in Glidian before individual procedure codes started being tracked. |
portal_url | string | false | A link to the record in the Glidian portal |
Enumerated Values
Property | Value |
---|---|
dashboard_status | Active |
dashboard_status | Archived |
dashboard_status | Deleted |
DetailedRecord
{
"id": "GEN98721",
"created_at": "2018-01-12T09:21:52.000Z",
"reference_number": "AAAA-123-654444",
"reference_number_two": "BBBB-456-222222",
"auth_number": "R123001123",
"payor_reference_number": "OP0566123123",
"auth_approval_from_date": "2018-03-25T00:00:00.000Z",
"auth_approval_to_date": "2018-07-25T00:00:00.000Z",
"owner": {
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"username": "Joe",
"dashboard_status": "Archived"
},
"state": {
"id": 43,
"name": "Texas"
},
"insurance": {
"id": 46,
"name": "Humana (Medicare)"
},
"service": {
"id": 29,
"name": "General Procedure",
"type": "Procedure"
},
"latest_status": {
"id": "GEN98721",
"created_at": "2018-01-18T13:42:13.000Z",
"label": "Approved"
},
"procedure_statuses": [
{
"procedure_code_type": "CPT",
"procedure_code": "81162",
"quantity": 1,
"status": "APPROVED"
}
],
"portal_url": "https://my.glidian.com/app/dashboard/GEN98721",
"request_fields": {
"patient:firstName": "John",
"provider:npi": "1234567893",
"medical:cpt": "81162",
"medical:icd10": "Z80.3, Z80.41",
"medical:serviceStartDate": "2018-11-10"
}
}
Properties
Name | Type | Required | Description |
---|---|---|---|
reference_number | string | false | Custom reference number provided by developer when draft was created |
reference_number_two | string | false | Second custom reference number provided by developer when draft was created |
urgent | boolean | false | Boolean flag indicating if the case is marked as urgent |
urgent_reason | string | false | Text summarizing the reason for marking a case as urgent |
state | string | false | No description |
id | string | false | ID of the record |
created_at | string(date) | false | UTC date in ISO-8601 format for when the record was created |
auth_number | string | false | Authorization number assigned to this case by insurance |
payor_reference_number | string | false | Latest reference number given by the payor before an authorization number is assigned |
auth_approval_from_date | string(date) | false | If provided, this is the earliest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
auth_approval_to_date | string(date) | false | If provided, this is the latest date that this authorization has been approved for. It is in the form of a date in ISO-8601 format |
team | string | false |
The team the record is assigned to or null when the record is not
assigned to a team.
|
owner | object | false | User object for the owner of this record |
» id | string | true | ID for the user object in the form of a UUID |
» username | string | true | Username for this user |
» dashboard_status | string | true | The visibility status of this record on the owner's dashboard |
insurance | Insurance | false | No description |
service | Service | false | No description |
latest_status | RecordStatus | false | No description |
procedure_statuses | [ProcedureStatus] | false | An array of procedure statuses with relevant information. Please note that this array will be empty for cases created in Glidian before individual procedure codes started being tracked. |
portal_url | string | false | A link to the record in the Glidian portal |
status_history | [RecordStatus] | false | No description |
request_fields | object | true | Holds the request data fields for this auth, keyed by field identifier Use the field definitions endpoint to list all possible fields. |
» additionalProperties | string | false | No description |
submission_support | SubmissionSupport | false | Only present when record is in Draft status |
Enumerated Values
Property | Value |
---|---|
dashboard_status | Active |
dashboard_status | Archived |
dashboard_status | Deleted |
RecordStatus
{
"id": "GEN98721",
"created_at": "2018-01-18T13:42:13.000Z",
"label": "Approved"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | integer | true | Record ID of the record status |
created_at | string(date) | true | UTC date in ISO-8601 format for when this record status was created |
label | string | true | Describes the status type (eg. Denied, Approved, etc.) |
reason | string | false |
For Denied , Canceled , and
Action Required statuses, the reason provided for this status.
|
details | string | false |
For Denied , Canceled , and
Action Required statuses, additional information about the reason. For
example, if the reason was "Not medically necessary," then this field will
include a rationale for that determination (if provided by the payor)
|
SubmissionSupport
{
"requires_portal_submission": true,
"portal_submission_url": "string",
"has_unanswered_questions": true,
"validation": {
"is_valid": true,
"errors": [
{
"field_name": "insurance_id",
"code": "missing_value",
"message": "This input is required, but does not have a value assigned"
},
{
"field_name": "patient:firstName",
"code": "missing_value",
"message": "This input is required, but does not have a value assigned"
},
{
"field_name": "question:450.value",
"code": "missing_value",
"message": "This input is required, but does not have a value assigned"
}
],
"warnings": [
{
"field_name": "insurance_id",
"code": "invalid_input",
"message": "The Member ID does not match the chosen BCBS insurance or other BCBS insurances\nin our database.\n"
},
{
"field_name": "record:hasUnansweredQuestions",
"code": "missing_value",
"message": "There are unanswered clinical questions for this submission."
}
]
}
}
Properties
*Only present when record is in Draft
status *
Name | Type | Required | Description |
---|---|---|---|
requires_portal_submission | boolean | false | Communicates information about whether submission through the Glidian portal is required. |
portal_submission_url | string | false | When portal submission is required, this a direct URL to edit the submission. |
has_unanswered_questions | boolean | false | Indicates that suggested clinical questions have not been answered for this record. Check the record's clinical questions endpoint for more info. |
validation | object | false | Communicates information about the validity of the record and its readiness to be submitted. |
» is_valid | boolean | false | Indicates whether the record data is valid and ready for submission. |
» errors | [ValidationErrorInformation] | false | Information about blocking errors that will prevent this record from being submitted. |
» warnings | [ValidationErrorInformation] | false | Information about non-blocking warnings for this record. The record can be submitted without addressing the warnings. |
ProcedureStatus
{
"procedure_code_type": "CPT",
"procedure_code": "81162",
"quantity": 1,
"status": "PENDING",
"modifiers": [
"RT"
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
procedure_code_type | string | true | The type of procedure code being listed. The only option right now is CPT |
procedure_code | string | true | The value of the procedure code without the quantity identifier |
quantity | number | true | The number of units for the given procedure code |
status | string | true |
The current status of this procedure code under review. The possible options include
PENDING , APPROVED , AUTH_NOT_REQUIRED , and
DENIED
|
modifiers | [string] | false | No description |
ClinicalQuestion
{
"id": 1,
"prompt": "Does patient have a history of this condition?",
"type": "select",
"options": [
"Yes",
"No",
"Unknown"
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
id | number | true | ID of the Clinical Question |
prompt | string | true | the text of the question to display to an end-user |
type | string | true |
the data type of the question. Implies validation rules. For example, if type is
select , the response value must be one of the values in the list. For
multi-select , the response must an array of values from the options.
|
options | [string] | false |
Valid options for a select , select-other , and
multi-select question types.
|
Enumerated Values
Property | Value |
---|---|
type | text |
type | select |
type | select-other |
type | multi-select |
ClinicalQuestionResponse
{
"question_id": 1,
"value": "Yes",
"is_valid": true
}
Properties
Name | Type | Required | Description |
---|---|---|---|
question_id | number | true | must correspond to a valid ClinicalQuestion id |
value | string,array | true |
the response to this question. multi-select questions require an array
value of valid options.
|
other_value | string | false |
For select-other questions only, the value to use when
Other is selected.
|
is_valid | boolean¦null | false |
Indicates whether the provided response is valid for the question. The value may be
null when a question was answered previously but a record was updated
and that question is no longer relevant.
|
ErrorResponse
{
"status_code": 0,
"errors": [
{
"input": "insurance_id",
"code": "missing_value",
"message": "The required input 'insurance_id' is missing a value"
}
]
}
Properties
Name | Type | Required | Description |
---|---|---|---|
status_code | integer | false | HTTP status code of the error response |
errors | [ErrorInformation] | true | No description |
ErrorInformation
{
"input": "insurance_id",
"code": "missing_value",
"message": "The required input 'insurance_id' is missing a value"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
input | string | false | Name of the input if this is a validation error |
code | string | true | Unique code identifying the type of error this is |
message | string | true | Developer message describing the error code |
more_info | string | false | URL to more information if available |
ValidationErrorInformation
{
"field_name": "insurance_id",
"code": "missing_value",
"message": "This input is required, but does not have a value assigned"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
field_name | string | true | Name of the field |
code | string | true | Unique code identifying the type of error this is |
message | string | true | Message describing the error code |
WebhookPayload
{
"event_name": "record:statusUpdated",
"event_data": {
"record": {
"id": "GEN123"
}
},
"timestamp": "2021-12-20T17:34:06.167Z"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
event_name | string | true | The name of the event generating this notification |
event_data | object | true | The event-specific data. The shape of this field will vary by event. |
timestamp | string | true |
Time when this event occurred in Glidian. We recommend using this to guard against out-of-order notifications, for example, if you receive an event for the same record id that is older than one already received. |
WebhookRecordStatusUpdatedPayload
{
"event_name": "record:statusUpdated",
"event_data": {
"record": {
"id": "GEN98721",
"created_at": "2018-01-12T09:21:52.000Z",
"reference_number": "AAAA-123-654444",
"reference_number_two": "BBBB-456-222222",
"auth_number": "R123001123",
"payor_reference_number": "OP0566123123",
"auth_approval_from_date": "2018-03-25T00:00:00.000Z",
"auth_approval_to_date": "2018-07-25T00:00:00.000Z",
"owner": {
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"username": "Joe",
"dashboard_status": "Archived"
},
"state": {
"id": 43,
"name": "Texas"
},
"insurance": {
"id": 46,
"name": "Humana (Medicare)"
},
"service": {
"id": 29,
"name": "General Procedure",
"type": "Procedure"
},
"latest_status": {
"id": "GEN98721",
"created_at": "2018-01-18T13:42:13.000Z",
"label": "Approved"
},
"procedure_statuses": [
{
"procedure_code_type": "CPT",
"procedure_code": "81162",
"quantity": 1,
"status": "APPROVED"
}
],
"portal_url": "https://my.glidian.com/app/dashboard/GEN98721",
"request_fields": {
"patient:firstName": "John",
"provider:npi": "1234567893",
"medical:cpt": "81162",
"medical:icd10": "Z80.3, Z80.41",
"medical:serviceStartDate": "2018-11-10"
}
}
},
"timestamp": "2021-12-20T17:34:06.167Z"
}
Properties
Name | Type | Required | Description |
---|---|---|---|
event_name | string | true | record:statusUpdated |
event_data | object | true | The event payload |
» record | DetailedRecord | true | The updated record, including its full history of record statuses |
timestamp | string | true | No description |