NAV Navigation
curl javascript python ruby

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:

Base URLs:

Email: Glidian Support Team

Authentication

Authentication for the Glidian API is done in the following steps:

  1. 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).

  2. 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.

  3. 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:

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
»» email 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:

  1. 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.

  2. 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.

  3. 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 and requires_portal_submission:

    validation.is_valid is true validation.is_valid is false
    requires_portal_submission is true Data 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 false Data 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
  4. 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.

  5. Submit Request

    Once a draft is valid, you may submit it through the API (if the request supports API submission) or through the portal.

  6. 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:

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:

  1. An HTTPS url where you would like to receive events. All events will be sent as POST request.

  2. Credentials Glidian should use when POST-ing to your endpoint. We support the following authentication schemes:

    • Basic Auth: Provide your username and password
    • 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, only credentials_owner is supported.

      • scope: (optional) All OAuth scopes required to access your webhook endpoint.

  3. 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
email 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 definitions
endpoint
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 definitions
endpoint
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