curl --request POST \
--url https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances \
--header 'Content-Type: application/json' \
--header 'access_token: <api-key>' \
--header 'client_id: <api-key>' \
--header 'client_secret: <api-key>' \
--data '
{
"member_id": "MEM123456789",
"group_id": "GRP98999",
"insurance_provider_id": "insurance-provider-123",
"insurance_payer_id": "98999",
"insurance_name": "Blue Cross Anthem",
"subscriber_demographics": {
"first_name": "Jane",
"last_name": "Doe",
"street_line_1": "123 Main Street",
"city": "Los Angeles",
"state": "CA",
"zip": "90001",
"sex": "F",
"dob": "1980-01-15",
"phone": "555-123-4567"
},
"relationship_to_subscriber": "self",
"insurance_policy_type": "PPO",
"insurance_sequence": "primary",
"plan_begin_date": "2026-01-01",
"plan_end_date": "2026-12-31",
"copayment": 25,
"priority": "1",
"update_patient_demographics": true,
"update_if_exists": true,
"check_eligibility": true,
"callback_urls": [
"<string>"
]
}
'import requests
url = "https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances"
payload = {
"member_id": "MEM123456789",
"group_id": "GRP98999",
"insurance_provider_id": "insurance-provider-123",
"insurance_payer_id": "98999",
"insurance_name": "Blue Cross Anthem",
"subscriber_demographics": {
"first_name": "Jane",
"last_name": "Doe",
"street_line_1": "123 Main Street",
"city": "Los Angeles",
"state": "CA",
"zip": "90001",
"sex": "F",
"dob": "1980-01-15",
"phone": "555-123-4567"
},
"relationship_to_subscriber": "self",
"insurance_policy_type": "PPO",
"insurance_sequence": "primary",
"plan_begin_date": "2026-01-01",
"plan_end_date": "2026-12-31",
"copayment": 25,
"priority": "1",
"update_patient_demographics": True,
"update_if_exists": True,
"check_eligibility": True,
"callback_urls": ["<string>"]
}
headers = {
"client_id": "<api-key>",
"client_secret": "<api-key>",
"access_token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
client_id: '<api-key>',
client_secret: '<api-key>',
access_token: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
member_id: 'MEM123456789',
group_id: 'GRP98999',
insurance_provider_id: 'insurance-provider-123',
insurance_payer_id: '98999',
insurance_name: 'Blue Cross Anthem',
subscriber_demographics: {
first_name: 'Jane',
last_name: 'Doe',
street_line_1: '123 Main Street',
city: 'Los Angeles',
state: 'CA',
zip: '90001',
sex: 'F',
dob: '1980-01-15',
phone: '555-123-4567'
},
relationship_to_subscriber: 'self',
insurance_policy_type: 'PPO',
insurance_sequence: 'primary',
plan_begin_date: '2026-01-01',
plan_end_date: '2026-12-31',
copayment: 25,
priority: '1',
update_patient_demographics: true,
update_if_exists: true,
check_eligibility: true,
callback_urls: ['<string>']
})
};
fetch('https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'member_id' => 'MEM123456789',
'group_id' => 'GRP98999',
'insurance_provider_id' => 'insurance-provider-123',
'insurance_payer_id' => '98999',
'insurance_name' => 'Blue Cross Anthem',
'subscriber_demographics' => [
'first_name' => 'Jane',
'last_name' => 'Doe',
'street_line_1' => '123 Main Street',
'city' => 'Los Angeles',
'state' => 'CA',
'zip' => '90001',
'sex' => 'F',
'dob' => '1980-01-15',
'phone' => '555-123-4567'
],
'relationship_to_subscriber' => 'self',
'insurance_policy_type' => 'PPO',
'insurance_sequence' => 'primary',
'plan_begin_date' => '2026-01-01',
'plan_end_date' => '2026-12-31',
'copayment' => 25,
'priority' => '1',
'update_patient_demographics' => true,
'update_if_exists' => true,
'check_eligibility' => true,
'callback_urls' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access_token: <api-key>",
"client_id: <api-key>",
"client_secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances"
payload := strings.NewReader("{\n \"member_id\": \"MEM123456789\",\n \"group_id\": \"GRP98999\",\n \"insurance_provider_id\": \"insurance-provider-123\",\n \"insurance_payer_id\": \"98999\",\n \"insurance_name\": \"Blue Cross Anthem\",\n \"subscriber_demographics\": {\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\",\n \"street_line_1\": \"123 Main Street\",\n \"city\": \"Los Angeles\",\n \"state\": \"CA\",\n \"zip\": \"90001\",\n \"sex\": \"F\",\n \"dob\": \"1980-01-15\",\n \"phone\": \"555-123-4567\"\n },\n \"relationship_to_subscriber\": \"self\",\n \"insurance_policy_type\": \"PPO\",\n \"insurance_sequence\": \"primary\",\n \"plan_begin_date\": \"2026-01-01\",\n \"plan_end_date\": \"2026-12-31\",\n \"copayment\": 25,\n \"priority\": \"1\",\n \"update_patient_demographics\": true,\n \"update_if_exists\": true,\n \"check_eligibility\": true,\n \"callback_urls\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("client_id", "<api-key>")
req.Header.Add("client_secret", "<api-key>")
req.Header.Add("access_token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances")
.header("client_id", "<api-key>")
.header("client_secret", "<api-key>")
.header("access_token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"member_id\": \"MEM123456789\",\n \"group_id\": \"GRP98999\",\n \"insurance_provider_id\": \"insurance-provider-123\",\n \"insurance_payer_id\": \"98999\",\n \"insurance_name\": \"Blue Cross Anthem\",\n \"subscriber_demographics\": {\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\",\n \"street_line_1\": \"123 Main Street\",\n \"city\": \"Los Angeles\",\n \"state\": \"CA\",\n \"zip\": \"90001\",\n \"sex\": \"F\",\n \"dob\": \"1980-01-15\",\n \"phone\": \"555-123-4567\"\n },\n \"relationship_to_subscriber\": \"self\",\n \"insurance_policy_type\": \"PPO\",\n \"insurance_sequence\": \"primary\",\n \"plan_begin_date\": \"2026-01-01\",\n \"plan_end_date\": \"2026-12-31\",\n \"copayment\": 25,\n \"priority\": \"1\",\n \"update_patient_demographics\": true,\n \"update_if_exists\": true,\n \"check_eligibility\": true,\n \"callback_urls\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["client_id"] = '<api-key>'
request["client_secret"] = '<api-key>'
request["access_token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"member_id\": \"MEM123456789\",\n \"group_id\": \"GRP98999\",\n \"insurance_provider_id\": \"insurance-provider-123\",\n \"insurance_payer_id\": \"98999\",\n \"insurance_name\": \"Blue Cross Anthem\",\n \"subscriber_demographics\": {\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\",\n \"street_line_1\": \"123 Main Street\",\n \"city\": \"Los Angeles\",\n \"state\": \"CA\",\n \"zip\": \"90001\",\n \"sex\": \"F\",\n \"dob\": \"1980-01-15\",\n \"phone\": \"555-123-4567\"\n },\n \"relationship_to_subscriber\": \"self\",\n \"insurance_policy_type\": \"PPO\",\n \"insurance_sequence\": \"primary\",\n \"plan_begin_date\": \"2026-01-01\",\n \"plan_end_date\": \"2026-12-31\",\n \"copayment\": 25,\n \"priority\": \"1\",\n \"update_patient_demographics\": true,\n \"update_if_exists\": true,\n \"check_eligibility\": true,\n \"callback_urls\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"patient_insurance_id": "<string>",
"job_id": 123
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}Add Patient Insurance
Queue the addition of insurance information to a patient record in the EMR system. This is an asynchronous operation.
curl --request POST \
--url https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances \
--header 'Content-Type: application/json' \
--header 'access_token: <api-key>' \
--header 'client_id: <api-key>' \
--header 'client_secret: <api-key>' \
--data '
{
"member_id": "MEM123456789",
"group_id": "GRP98999",
"insurance_provider_id": "insurance-provider-123",
"insurance_payer_id": "98999",
"insurance_name": "Blue Cross Anthem",
"subscriber_demographics": {
"first_name": "Jane",
"last_name": "Doe",
"street_line_1": "123 Main Street",
"city": "Los Angeles",
"state": "CA",
"zip": "90001",
"sex": "F",
"dob": "1980-01-15",
"phone": "555-123-4567"
},
"relationship_to_subscriber": "self",
"insurance_policy_type": "PPO",
"insurance_sequence": "primary",
"plan_begin_date": "2026-01-01",
"plan_end_date": "2026-12-31",
"copayment": 25,
"priority": "1",
"update_patient_demographics": true,
"update_if_exists": true,
"check_eligibility": true,
"callback_urls": [
"<string>"
]
}
'import requests
url = "https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances"
payload = {
"member_id": "MEM123456789",
"group_id": "GRP98999",
"insurance_provider_id": "insurance-provider-123",
"insurance_payer_id": "98999",
"insurance_name": "Blue Cross Anthem",
"subscriber_demographics": {
"first_name": "Jane",
"last_name": "Doe",
"street_line_1": "123 Main Street",
"city": "Los Angeles",
"state": "CA",
"zip": "90001",
"sex": "F",
"dob": "1980-01-15",
"phone": "555-123-4567"
},
"relationship_to_subscriber": "self",
"insurance_policy_type": "PPO",
"insurance_sequence": "primary",
"plan_begin_date": "2026-01-01",
"plan_end_date": "2026-12-31",
"copayment": 25,
"priority": "1",
"update_patient_demographics": True,
"update_if_exists": True,
"check_eligibility": True,
"callback_urls": ["<string>"]
}
headers = {
"client_id": "<api-key>",
"client_secret": "<api-key>",
"access_token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
client_id: '<api-key>',
client_secret: '<api-key>',
access_token: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
member_id: 'MEM123456789',
group_id: 'GRP98999',
insurance_provider_id: 'insurance-provider-123',
insurance_payer_id: '98999',
insurance_name: 'Blue Cross Anthem',
subscriber_demographics: {
first_name: 'Jane',
last_name: 'Doe',
street_line_1: '123 Main Street',
city: 'Los Angeles',
state: 'CA',
zip: '90001',
sex: 'F',
dob: '1980-01-15',
phone: '555-123-4567'
},
relationship_to_subscriber: 'self',
insurance_policy_type: 'PPO',
insurance_sequence: 'primary',
plan_begin_date: '2026-01-01',
plan_end_date: '2026-12-31',
copayment: 25,
priority: '1',
update_patient_demographics: true,
update_if_exists: true,
check_eligibility: true,
callback_urls: ['<string>']
})
};
fetch('https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'member_id' => 'MEM123456789',
'group_id' => 'GRP98999',
'insurance_provider_id' => 'insurance-provider-123',
'insurance_payer_id' => '98999',
'insurance_name' => 'Blue Cross Anthem',
'subscriber_demographics' => [
'first_name' => 'Jane',
'last_name' => 'Doe',
'street_line_1' => '123 Main Street',
'city' => 'Los Angeles',
'state' => 'CA',
'zip' => '90001',
'sex' => 'F',
'dob' => '1980-01-15',
'phone' => '555-123-4567'
],
'relationship_to_subscriber' => 'self',
'insurance_policy_type' => 'PPO',
'insurance_sequence' => 'primary',
'plan_begin_date' => '2026-01-01',
'plan_end_date' => '2026-12-31',
'copayment' => 25,
'priority' => '1',
'update_patient_demographics' => true,
'update_if_exists' => true,
'check_eligibility' => true,
'callback_urls' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access_token: <api-key>",
"client_id: <api-key>",
"client_secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances"
payload := strings.NewReader("{\n \"member_id\": \"MEM123456789\",\n \"group_id\": \"GRP98999\",\n \"insurance_provider_id\": \"insurance-provider-123\",\n \"insurance_payer_id\": \"98999\",\n \"insurance_name\": \"Blue Cross Anthem\",\n \"subscriber_demographics\": {\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\",\n \"street_line_1\": \"123 Main Street\",\n \"city\": \"Los Angeles\",\n \"state\": \"CA\",\n \"zip\": \"90001\",\n \"sex\": \"F\",\n \"dob\": \"1980-01-15\",\n \"phone\": \"555-123-4567\"\n },\n \"relationship_to_subscriber\": \"self\",\n \"insurance_policy_type\": \"PPO\",\n \"insurance_sequence\": \"primary\",\n \"plan_begin_date\": \"2026-01-01\",\n \"plan_end_date\": \"2026-12-31\",\n \"copayment\": 25,\n \"priority\": \"1\",\n \"update_patient_demographics\": true,\n \"update_if_exists\": true,\n \"check_eligibility\": true,\n \"callback_urls\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("client_id", "<api-key>")
req.Header.Add("client_secret", "<api-key>")
req.Header.Add("access_token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances")
.header("client_id", "<api-key>")
.header("client_secret", "<api-key>")
.header("access_token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"member_id\": \"MEM123456789\",\n \"group_id\": \"GRP98999\",\n \"insurance_provider_id\": \"insurance-provider-123\",\n \"insurance_payer_id\": \"98999\",\n \"insurance_name\": \"Blue Cross Anthem\",\n \"subscriber_demographics\": {\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\",\n \"street_line_1\": \"123 Main Street\",\n \"city\": \"Los Angeles\",\n \"state\": \"CA\",\n \"zip\": \"90001\",\n \"sex\": \"F\",\n \"dob\": \"1980-01-15\",\n \"phone\": \"555-123-4567\"\n },\n \"relationship_to_subscriber\": \"self\",\n \"insurance_policy_type\": \"PPO\",\n \"insurance_sequence\": \"primary\",\n \"plan_begin_date\": \"2026-01-01\",\n \"plan_end_date\": \"2026-12-31\",\n \"copayment\": 25,\n \"priority\": \"1\",\n \"update_patient_demographics\": true,\n \"update_if_exists\": true,\n \"check_eligibility\": true,\n \"callback_urls\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usecobalt.com/v1/patients/{patient_mrn}/insurances")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["client_id"] = '<api-key>'
request["client_secret"] = '<api-key>'
request["access_token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"member_id\": \"MEM123456789\",\n \"group_id\": \"GRP98999\",\n \"insurance_provider_id\": \"insurance-provider-123\",\n \"insurance_payer_id\": \"98999\",\n \"insurance_name\": \"Blue Cross Anthem\",\n \"subscriber_demographics\": {\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\",\n \"street_line_1\": \"123 Main Street\",\n \"city\": \"Los Angeles\",\n \"state\": \"CA\",\n \"zip\": \"90001\",\n \"sex\": \"F\",\n \"dob\": \"1980-01-15\",\n \"phone\": \"555-123-4567\"\n },\n \"relationship_to_subscriber\": \"self\",\n \"insurance_policy_type\": \"PPO\",\n \"insurance_sequence\": \"primary\",\n \"plan_begin_date\": \"2026-01-01\",\n \"plan_end_date\": \"2026-12-31\",\n \"copayment\": 25,\n \"priority\": \"1\",\n \"update_patient_demographics\": true,\n \"update_if_exists\": true,\n \"check_eligibility\": true,\n \"callback_urls\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"patient_insurance_id": "<string>",
"job_id": 123
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}job_id for tracking. Results are delivered via webhook.
eClinicalWorks, plan_begin_date is required. If relationship_to_subscriber is a non-self value such as spouse, child, or other, subscriber_demographics.first_name and subscriber_demographics.last_name are also required.emr_insurance_id. In eClinicalWorks, this is the same record identifier returned later as emr_insurance_id in POST /v1/patients/fetch with include: ["insurances"], and it can be used with the insurance update endpoint.member_id is the subscriber/member number you provide (the policy number from the insurance card), not an EHR-generated value. The EHR-generated record identifier is emr_insurance_id, returned on the webhook after the record is created.Insurance Provider Resolution
The API supports three methods for identifying the insurance provider (in order of priority):-
By Cobalt Provider ID (Most specific, recommended):
{ "insurance_provider_id": "abc123def456" } -
By Name + Payer ID (Most specific when ID not available):
{ "insurance_name": "ACME Health", "insurance_payer_id": "98999" } -
By Name Only (Least specific, may match first result if multiple exist):
{ "insurance_name": "ACME Health" }
GET /v1/insurance-providers to retrieve the correct insurance provider identifiers for your organization.Validation Rules
Address Validation
- State: Must be a valid two-letter US state abbreviation (accepts lowercase, e.g., “ca” or “CA”)
- ZIP Code: Must be either 5 digits (e.g., “90001”) or 9 digits with hyphen (e.g., “90001-1234”)
Date Validation
- plan_begin_date: Must be in YYYY-MM-DD format (e.g., “2025-01-15”)
- plan_end_date: Optional. Must be in YYYY-MM-DD format (e.g., “2025-12-31”). Omit for open-ended coverage.
Priority (Optional)
- priority: Insurance priority level (valid values: “1”, “2”, “3”). When not provided, the EMR will use its default priority setting.
Relationship to Subscriber
Accepts both codes and names (case-insensitive):- Codes: “01”, “02”, “32”, “33”, “17”, “20”, “53”, “25”
- Names: “self”, “spouse”, “mother”, “father”, “step parent”, “employee”, “life partner”, “other”
Insurance Provider Validation
insurance_payer_idalone is not supported (must be combined withinsurance_name)- If provider ID, name, or name+payer_id combination is not found, returns 404 with helpful message
Example Requests
Minimal Request (Using Insurance Provider ID)
curl -X POST https://api.usecobalt.com/v1/patients/MRN123456/insurances \
-H "Content-Type: application/json" \
-H "client_id: your_client_id" \
-H "client_secret: your_client_secret" \
-H "access_token: your_access_token" \
-d '{
"member_id": "MEM123456789",
"group_id": "GRP98999",
"plan_begin_date": "2025-01-01",
"insurance_provider_id": "abc123def456",
"subscriber_demographics": {
"first_name": "John",
"last_name": "Doe",
"street_line_1": "123 Main St",
"city": "Los Angeles",
"state": "CA",
"zip": "90001"
}
}'
Complete Request (Using Insurance Name + Payer ID)
curl -X POST https://api.usecobalt.com/v1/patients/MRN123456/insurances \
-H "Content-Type: application/json" \
-H "client_id: your_client_id" \
-H "client_secret: your_client_secret" \
-H "access_token: your_access_token" \
-d '{
"member_id": "MEM123456789",
"group_id": "GRP98999",
"insurance_name": "ACME Health",
"insurance_payer_id": "98999",
"plan_begin_date": "2025-01-01",
"plan_end_date": "2025-12-31",
"copayment": 25,
"priority": "1",
"relationship_to_subscriber": "spouse",
"subscriber_demographics": {
"first_name": "Jane",
"last_name": "Doe",
"street_line_1": "123 Main St",
"city": "Los Angeles",
"state": "CA",
"zip": "90001-1234"
}
}'
Self-Insured Patient with 9-Digit ZIP
curl -X POST https://api.usecobalt.com/v1/patients/MRN789012/insurances \
-H "Content-Type: application/json" \
-H "client_id: your_client_id" \
-H "client_secret: your_client_secret" \
-H "access_token: your_access_token" \
-d '{
"member_id": "MEM987654321",
"group_id": "GRP11111",
"insurance_name": "Blue Cross Blue Shield",
"plan_begin_date": "2025-01-01",
"relationship_to_subscriber": "01",
"subscriber_demographics": {
"first_name": "Jane",
"last_name": "Smith",
"street_line_1": "456 Oak Ave",
"city": "San Francisco",
"state": "ca",
"zip": "94102-1234"
}
}'
Example Response
{
"success": true,
"message": "Insurance addition queued successfully. Processing will begin shortly.",
"patient_insurance_id": "xyz789abc123",
"job_id": 12345
}
Webhook Events
After the insurance addition is processed, a webhook event will be sent to your configured webhook URL.Success Event (patient.insurance.added)
{
"id": "evt_abc123def456",
"access_token_reference_id": "your_reference_id",
"object": "event",
"created": "2025-01-15T10:30:00.000Z",
"type": "patient.insurance.added",
"job_id": "12345",
"data": {
"patient_insurance_id": "xyz789abc123",
"patient_mrn": "MRN123456",
"member_id": "MEM123456789",
"group_id": "GRP98999",
"plan_begin_date": "2025-01-01",
"plan_end_date": "2025-12-31",
"copayment": 25,
"priority": 1,
"relationship_to_subscriber": "self",
"emr_insurance_id": "51638"
}
}
eClinicalWorks, emr_insurance_id is the EMR-native insurance record ID. The same value is returned in live fetch as emr_insurance_id and should be used when calling PATCH /v1/patients/:patient_mrn/insurances/:emr_insurance_id.audit_trail is still present for some EMRs, including Experity and EZDERM. It is not currently included in the eClinicalWorks insurance success payload, so the example above reflects the eCW shape.Failure Event (patient.insurance.failed)
{
"id": "evt_xyz789abc123",
"access_token_reference_id": "your_reference_id",
"object": "event",
"created": "2025-01-15T10:30:00.000Z",
"type": "patient.insurance.failed",
"job_id": "12345",
"data": {
"patient_insurance_id": "xyz789abc123",
"patient_mrn": "MRN123456",
"failure_reason": "Patient not found in EMR system"
}
}
patient_insurance_id and job_id, then listen for webhooks to determine the final status.Authorizations
Path Parameters
Patient MRN.
Body
Insurance member / subscriber ID.
"MEM123456789"
Insurance group number.
"GRP98999"
Cobalt insurance provider ID (one insurance identifier). Use GET /v1/insurance-providers to retrieve valid IDs.
"insurance-provider-123"
Insurance payer ID, used to disambiguate insurance_name.
"98999"
Insurance provider name (one insurance identifier).
"Blue Cross Anthem"
Policy holder demographics.
Show child attributes
Show child attributes
Patient relationship to the policy holder.
"self"
Insurance policy type / coverage category.
"PPO"
Coverage order (e.g. primary / secondary).
"primary"
Plan begin date (YYYY-MM-DD).
^\d{4}-\d{2}-\d{2}$"2026-01-01"
Plan end date (YYYY-MM-DD). Omit for open-ended coverage.
^\d{4}-\d{2}-\d{2}$"2026-12-31"
Copayment amount.
x >= 025
Insurance priority (1=primary, 2=secondary, 3=tertiary).
1, 2, 3 "1"
Whether to also update the patient demographics in the EMR. Defaults to true.
Update the matching insurance if one already exists instead of adding a new record. Defaults to false.
Run an eligibility check after the insurance is added. Defaults to false.
URLs to receive the completion webhook, in addition to the account webhook.