> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developer.vitablehealth.com/api/carrier-applications/get-carrier-application/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.vitablehealth.com/_mcp/server. # Get a carrier application GET https://api.vitablehealth.com/v1/carrier-applications/{carrier_application_id} Returns application details, including finalized carrier-question responses and applicant information. The detail is served from Vitable's stored projection, never a live carrier call. Unknown applications and applications outside the caller's access return 404. Reference: https://developer.vitablehealth.com/api/carrier-applications/get-carrier-application ## Authentication - `Authorization` header (bearer token, required) — API Key or Access Token authentication using Bearer token in Authorization header. API keys use the vit_apk_ prefix, access tokens use the vit_at_ prefix. ## Servers - `https://api.vitablehealth.com` (Production, default) - `https://api.uat.vitablehealth.com` (UAT) ## Request ### Path parameters - `carrier_application_id` (string, required) ### Headers - `X-Vitable-Organization` (string, optional) — Organization to act as for this request (e.g. `org_SGVsbG8gV29ybGQ`). Optional when your credentials reach a single organization. Required when they reach several — omitting it then returns 400 `organization_required`. A malformed value returns 400 `invalid_organization_header`, and naming an organization you do not have access to returns 403 `organization_access_denied`. ## Response ### 200 - `data` (CarrierApplicationDetail, required) ## Errors ### 400 Bad Request Error Invalid request. - `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred - `message` (string, required) — Human-readable error message - `error` (string, required) — Error message (same as message, for backwards compatibility) - `trace_id` (string, required) — Unique trace ID for debugging and support requests - `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling ### 401 Unauthorized Error Unauthorized - Invalid or missing API key - `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred - `message` (string, required) — Human-readable error message - `error` (string, required) — Error message (same as message, for backwards compatibility) - `trace_id` (string, required) — Unique trace ID for debugging and support requests - `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling ### 403 Forbidden Error Forbidden - Insufficient permissions for this resource - `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred - `message` (string, required) — Human-readable error message - `error` (string, required) — Error message (same as message, for backwards compatibility) - `trace_id` (string, required) — Unique trace ID for debugging and support requests - `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling ### 404 Not Found Error Resource not found. - `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred - `message` (string, required) — Human-readable error message - `error` (string, required) — Error message (same as message, for backwards compatibility) - `trace_id` (string, required) — Unique trace ID for debugging and support requests - `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling ### 409 Conflict Error Conflict - Resource already exists or conflicts with current state - `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred - `message` (string, required) — Human-readable error message - `error` (string, required) — Error message (same as message, for backwards compatibility) - `trace_id` (string, required) — Unique trace ID for debugging and support requests - `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling ### 429 Too Many Requests Error Too Many Requests - Rate limit exceeded - `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred - `message` (string, required) — Human-readable error message - `error` (string, required) — Error message (same as message, for backwards compatibility) - `trace_id` (string, required) — Unique trace ID for debugging and support requests - `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling ### 500 Internal Server Error Internal Server Error - An unexpected error occurred - `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred - `message` (string, required) — Human-readable error message - `error` (string, required) — Error message (same as message, for backwards compatibility) - `trace_id` (string, required) — Unique trace ID for debugging and support requests - `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling ### 502 Bad Gateway Error Bad Gateway - External service error - `timestamp` (datetime, required) — ISO 8601 timestamp when the error occurred - `message` (string, required) — Human-readable error message - `error` (string, required) — Error message (same as message, for backwards compatibility) - `trace_id` (string, required) — Unique trace ID for debugging and support requests - `app_error_code` (string, optional, nullable) — Application-specific error code for programmatic handling ## Types ### CarrierApplicationDetail - `id` (string, required) — The carrier application `capp_<...>`. - `enrollment_id` (string, required) — The enrollment `enrl_<...>` this application belongs to. - `enrollment_channel` (enum, required) — Which party or system is authoritative for this application's facts. * `healthsherpa_api` - Healthsherpa Api * `healthsherpa_deeplink` - Healthsherpa Deeplink * `direct_to_carrier` - Direct To Carrier - Allowed values: `healthsherpa_api`, `healthsherpa_deeplink`, `direct_to_carrier` - `provider_reference` (string, required, nullable) — The carrier-side or provider-side identifier for this application. Null when there is none yet, and also when the caller is not authorized to read it. - `assignment` (CarrierApplicationAssignmentState, required) — Who the application is routed to. - `agent_of_record` (CarrierApplicationAgentOfRecord, required) — The retained carrier attribution. - `statuses` (CarrierApplicationStatuses, required) — The four stable status axes. - `follow_up` (CarrierApplicationFollowUp, required) — Whether and why someone must act. - `authorized_actions` (list of CarrierApplicationAuthorizedAction, required) — The actions this application currently permits, for this caller. `assign` is present only while the assignment endpoint would accept a change: not once processing has begun, not once the application is submitted, cancelled or terminal, not while an assignment change is already pending, and not for a caller that endpoint would refuse. The unpublished rels (`deeplink`, `manual-progress`) are withheld until their routes are published, so no advertised `href` can 404. - `created_at` (datetime, required) — When the application was created. - `updated_at` (datetime, required) — When the application last changed. - `context` (CarrierApplicationQueueContext, required) — Who and what the application is about. - `provider_confirmed_revision` (integer, required) — Revision of the last provider-confirmed action. - `applicants` (list of CarrierApplicationApplicant, required) — Finalized household applicants. - `carrier_question_responses` (list of CarrierApplicationQuestionResponse, required) — Finalized signed carrier-question answers. Raw provider payloads are never returned. ### CarrierApplicationAssignmentState - `agency_id` (string, required, nullable) — The enrollment agency `enag_<...>` responsible for the application. Null when unassigned. - `agent_id` (string, required, nullable) — The enrollment agent `enat_<...>` who owns the work. Null when unassigned. - `status` (enum, required) — `confirmed` when the route above is authoritative, `pending` while a proposed change awaits confirmation. The confirmed route stays authoritative either way. * `confirmed` - Confirmed * `pending` - Pending - Allowed values: `confirmed`, `pending` - `pending_change` (CarrierApplicationPendingAssignmentChange, required, nullable) — The proposed route change, or null when there is none. ### CarrierApplicationAgentOfRecord - `agent_id` (string, required, nullable) — The enrollment agent `enat_<...>` attributed to the carrier as agent of record. ### CarrierApplicationStatuses - `application` (enum, required) — How far the application itself has got. * `not_started` - Not Started * `in_progress` - In Progress * `submitted` - Submitted * `submission_failed` - Submission Failed * `cancelled` - Cancelled - Allowed values: `not_started`, `in_progress`, `submitted`, `submission_failed`, `cancelled` - `documents` (enum, required) — Where the supporting documents stand. * `unknown` - Unknown * `not_required` - Not Required * `required` - Required * `submitted` - Submitted * `under_review` - Under Review * `rejected` - Rejected * `satisfied` - Satisfied - Allowed values: `unknown`, `not_required`, `required`, `submitted`, `under_review`, `rejected`, `satisfied` - `coverage` (enum, required) — Where the resulting policy stands. * `not_submitted` - Not Submitted * `pending_effectuation` - Pending Effectuation * `active` - Active * `cancelled` - Cancelled * `terminated` - Terminated - Allowed values: `not_submitted`, `pending_effectuation`, `active`, `cancelled`, `terminated` - `binder` (enum, required) — Where the binder payment stands. * `unknown` - Unknown * `not_applicable` - Not Applicable * `payment_required` - Payment Required * `pending_confirmation` - Pending Confirmation * `confirmed` - Confirmed - Allowed values: `unknown`, `not_applicable`, `payment_required`, `pending_confirmation`, `confirmed` ### CarrierApplicationFollowUp - `required` (boolean, required) — Whether someone must act on this application. - `reason` (enum, required, nullable) — The single highest-priority reason to act, or null when none applies. * `missing_agent` - Missing Agent * `missing_agent_of_record` - Missing Agent Of Record * `inactive_agent_of_record` - Inactive Agent Of Record * `agent_of_record_agency_mismatch` - Agent Of Record Agency Mismatch * `invalid_agent_of_record_identity` - Invalid Agent Of Record Identity * `missing_npn` - Missing Npn * `missing_healthsherpa_agent_slug` - Missing Healthsherpa Agent Slug * `invalid_npn` - Invalid Npn * `npn_validation_indeterminate` - Npn Validation Indeterminate * `assignment_coordination_pending` - Assignment Coordination Pending * `assignment_coordination_failed` - Assignment Coordination Failed * `routing_evidence_conflict` - Routing Evidence Conflict * `application_validation` - Application Validation * `unsupported_signed_evidence` - Unsupported Signed Evidence * `submission_failed` - Submission Failed * `supporting_document_rejected` - Supporting Document Rejected * `supporting_document_required` - Supporting Document Required * `payment_setup_required` - Payment Setup Required * `stale_pending` - Stale Pending * `manual_enrollment_not_started` - Manual Enrollment Not Started * `manual_documents_required` - Manual Documents Required * `manual_binder_required` - Manual Binder Required * `manual_submission_failed` - Manual Submission Failed * `manual_status_stale` - Manual Status Stale * `multiple_provider_matches` - Multiple Provider Matches * `create_outcome_unknown` - Create Outcome Unknown * `submission_reconciliation_stale` - Submission Reconciliation Stale * `provider_unavailable` - Provider Unavailable * `provider_action_rejected` - Provider Action Rejected * `provider_action_actor_revoked` - Provider Action Actor Revoked * `provider_state_drift` - Provider State Drift * `provider_state_uncertain` - Provider State Uncertain * `applicant_identity_ambiguous` - Applicant Identity Ambiguous - Allowed values: `missing_agent`, `missing_agent_of_record`, `inactive_agent_of_record`, `agent_of_record_agency_mismatch`, `invalid_agent_of_record_identity`, `missing_npn`, `missing_healthsherpa_agent_slug`, `invalid_npn`, `npn_validation_indeterminate`, `assignment_coordination_pending`, `assignment_coordination_failed`, `routing_evidence_conflict`, `application_validation`, `unsupported_signed_evidence`, `submission_failed`, `supporting_document_rejected`, `supporting_document_required`, `payment_setup_required`, `stale_pending`, `manual_enrollment_not_started`, `manual_documents_required`, `manual_binder_required`, `manual_submission_failed`, `manual_status_stale`, `multiple_provider_matches`, `create_outcome_unknown`, `submission_reconciliation_stale`, `provider_unavailable`, `provider_action_rejected`, `provider_action_actor_revoked`, `provider_state_drift`, `provider_state_uncertain`, `applicant_identity_ambiguous` - `responsible_user_id` (string, required, nullable) — The user `usr_<...>` expected to act. Null when the application is unassigned. The responsible *organization* is not part of this representation: no organization-to-agency relationship exists yet (BPT-1627), and a field that can only ever be null is not a contract. ### CarrierApplicationAuthorizedAction - `rel` (enum, required) — What the action does, as a stable relation name. * `assign` - Assign - Allowed values: `assign` - `method` (string, required) — The HTTP method to call `href` with. - `href` (string, required) — The path to call, relative to the API root. ### CarrierApplicationQueueContext - `member` (CarrierApplicationQueueMember, required) — Who the application is for. - `employer` (CarrierApplicationQueueEmployer, required) — Who they work for. - `plan_year` (CarrierApplicationQueuePlanYear, required) — Which plan year they enrolled in. - `plan` (CarrierApplicationQueuePlan, required) — Which individual-market plan they chose. - `assignee` (CarrierApplicationQueueAssignee, required, nullable) — Who owns the work, or null when unassigned or when the assigned agent no longer exists. - `agency` (CarrierApplicationQueueAgency, required, nullable) — Which agency is responsible, or null when unassigned. ### CarrierApplicationApplicant - `applicant_id` (string, required) — The stable Vitable enrollment applicant identifier. - `name` (string, required) — The applicant's display name from finalized signing evidence. - `date_of_birth` (date, required) — The applicant's birth date for household disambiguation. - `relationship` (string, required, nullable) — Relationship to the primary applicant. ### CarrierApplicationQuestionResponse - `question_id` (string, required) — The stable carrier-question identifier. - `applicant_id` (string, required) — The enrollment-scoped applicant identifier. - `answer` (string, required) — The finalized signed answer. ### CarrierApplicationPendingAssignmentChange - `agent_id` (string, required, nullable) — The enrollment agent `enat_<...>` the proposed route would assign the work to. - `enrollment_channel` (enum, required, nullable) — The channel the proposed route would process the application through. * `healthsherpa_api` - Healthsherpa Api * `healthsherpa_deeplink` - Healthsherpa Deeplink * `direct_to_carrier` - Direct To Carrier - Allowed values: `healthsherpa_api`, `healthsherpa_deeplink`, `direct_to_carrier` ### CarrierApplicationQueueMember - `id` (string, required) — The enrolling member `mbr_<...>`. - `first_name` (string, required) — The member's first name. - `last_name` (string, required) — The member's last name. ### CarrierApplicationQueueEmployer - `id` (string, required) — The member's employer `empr_<...>`. - `name` (string, required) — The employer's display name. ### CarrierApplicationQueuePlanYear - `id` (string, required) — The benefit plan year `plyr_<...>` the enrollment belongs to. - `coverage_start` (datetime, required) — When the plan year's coverage starts. - `coverage_end` (datetime, required, nullable) — When the plan year's coverage ends, if set. ### CarrierApplicationQueuePlan - `name` (string, required, nullable) — The selected plan's name. - `carrier_name` (string, required, nullable) — The selected plan's carrier. - `desired_effective_date` (date, required, nullable) — The coverage start date the member asked the carrier for. ### CarrierApplicationQueueAssignee - `agent_id` (string, required) — The assigned enrollment agent `enat_<...>`. - `first_name` (string, required, nullable) — The assigned agent's first name. - `last_name` (string, required, nullable) — The assigned agent's last name. ### CarrierApplicationQueueAgency - `id` (string, required) — The responsible enrollment agency `enag_<...>`. - `name` (string, required, nullable) — The responsible agency's name. ## Examples **Response** ```json { "data": { "id": "string", "enrollment_id": "string", "enrollment_channel": "healthsherpa_api", "provider_reference": "string", "assignment": { "agency_id": "string", "agent_id": "string", "status": "confirmed", "pending_change": { "agent_id": "string", "enrollment_channel": "healthsherpa_api" } }, "agent_of_record": { "agent_id": "string" }, "statuses": { "application": "not_started", "documents": "unknown", "coverage": "not_submitted", "binder": "unknown" }, "follow_up": { "required": true, "reason": "missing_agent", "responsible_user_id": "string" }, "authorized_actions": [ { "rel": "assign", "method": "string", "href": "string" } ], "created_at": "2024-01-15T09:30:00Z", "updated_at": "2024-01-15T09:30:00Z", "context": { "member": { "id": "string", "first_name": "string", "last_name": "string" }, "employer": { "id": "string", "name": "string" }, "plan_year": { "id": "string", "coverage_start": "2024-01-15T09:30:00Z", "coverage_end": "2024-01-15T09:30:00Z" }, "plan": { "name": "string", "carrier_name": "string", "desired_effective_date": "2023-01-15" }, "assignee": { "agent_id": "string", "first_name": "string", "last_name": "string" }, "agency": { "id": "string", "name": "string" } }, "provider_confirmed_revision": 1, "applicants": [ { "applicant_id": "string", "name": "string", "date_of_birth": "2023-01-15", "relationship": "string" } ], "carrier_question_responses": [ { "question_id": "string", "applicant_id": "string", "answer": "string" } ] } } ``` **SDK Code** ```python import requests url = "https://api.vitablehealth.com/v1/carrier-applications/carrier_application_id" headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.vitablehealth.com/v1/carrier-applications/carrier_application_id'; const options = {method: 'GET', headers: {Authorization: 'Bearer '}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.vitablehealth.com/v1/carrier-applications/carrier_application_id" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.vitablehealth.com/v1/carrier-applications/carrier_application_id") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.vitablehealth.com/v1/carrier-applications/carrier_application_id") .header("Authorization", "Bearer ") .asString(); ``` ```php request('GET', 'https://api.vitablehealth.com/v1/carrier-applications/carrier_application_id', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.vitablehealth.com/v1/carrier-applications/carrier_application_id"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.vitablehealth.com/v1/carrier-applications/carrier_application_id")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```