> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.kota.io/api-reference/group-quote-intents/retrieve-group-quote-intent/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.kota.io/_mcp/server. # Retrieve a group quote intent GET https://test.api.kota.io/group_quote_intents/{group_quote_intent_id} Retrieves a `group_quote_intent` object. Reference: https://docs.kota.io/api-reference/group-quote-intents/retrieve-group-quote-intent ## Authentication - `Authorization` header (bearer token, required) — Authorization header using the Bearer scheme ## Servers - `https://test.api.kota.io` (test, default) - `https://api.kota.io` (production) ## Request ### Path parameters - `group_quote_intent_id` (string, required) ### Headers - `X-Platform-Id` (string, optional) — The target platform id. Required only when calling with a dashboard (WorkOS AuthKit) access token instead of a platform API key — the token carries no platform claim, so the caller must say which platform it means. Ignored for platform API key / embed session token callers. ## Response ### 200 OK - `id` (string, required) — Unique identifier for the group quote intent - `group_id` (string, required, nullable) — Unique identifier for the group. Null only on a multi-level intent, whose groups are on its levels. - `plan_id` (string, required, nullable) — Unique identifier for the plan. Null only on a multi-level intent, whose plans are on its levels. - `status` (enum, required) — Current status of the group quote intent - Allowed values: `processing`, `action_required`, `awaiting_quote`, `quote_available`, `rejected`, `rejected_by_insurer`, `quote_expired` - `items` (list of GroupQuoteIntentItemResponse, required) — The benefits this intent quotes and the levels they are quoted at. Always present: a `single` intent echoes its group, plan and cost sharing as one item of one level, so a consumer reads one shape for both. - `consent_links` (list of ConsentStatementResponse, required) — The statements the customer must accept to proceed, each a sentence and the documents it names. Display them in the order given, each with its own acceptance, and submit every one back on `consent_approvals` when creating the group policy intent. A statement carries no type: it can bundle several documents, so its `id` identifies it instead. Empty until statements are configured. - `disclosures` (list of DisclosureResponse, required) — Disclosures associated with this intent. On a multi-level intent, the deduplicated union across its levels' plans. - `type` (enum, optional) — Whether the intent quotes one (group, plan) pair or several levels. Absent or null means `single`, so readers of intents created before multi-level quoting need no migration. - Allowed values: `single`, `multi_level` - `cost_sharing` (CostSharingConfigurationResponse, optional) — Cost sharing configuration for the quote. Null on a multi-level intent, whose cost sharing is per level. - `expected_start_date` (date, optional, nullable) — Expected start date for the insurance coverage - `action_required` (GroupQuoteIntentActionRequiredResponse, optional) — Details of the action required from the caller, if the intent is in action_required status. - `object` (string, optional) — Object type identifier ## Errors ### 404 Not Found Error Not Found - `type` (string, optional, nullable) - `title` (string, optional, nullable) - `status` (integer, optional, nullable) - `detail` (string, optional, nullable) - `instance` (string, optional, nullable) ## Types ### GroupQuoteIntentItemResponse - `benefit_type` (enum, required) — The benefit this item quotes. - Allowed values: `health_insurance`, `life_assurance` - `levels` (list of GroupQuoteIntentLevelResponse, required) — The (group, plan) levels this benefit is quoted at, in the order they were sent. - `ref` (string, optional, nullable) — The caller's label for the item, echoed as sent. Null when none was supplied. ### ConsentStatementResponse - `id` (string, required) — Unique identifier for this statement, as shown. Prefixed with `cst_`. Submit it back on `consent_approvals[].id` to record that it was accepted. It identifies this exact wording and these exact link versions, so nothing else needs to be echoed back. - `text` (string, required) — The sentence to display. It may contain `{token}` placeholders, each of which has exactly one entry in `links` and must be rendered as an anchor to that link. Display it as given: do not reword, truncate or compose it with text of your own. - `links` (list of ConsentStatementLinkResponse, required) — The documents `text` names, one per placeholder it carries. - `object` (string, optional) — Object type identifier ### DisclosureResponse - `category` (enum, required) — The category of the disclosure. - Allowed values: `regulatory`, `provider`, `intermediary` - `type` (enum, required) — The specific type of disclosure within its category. - Allowed values: `intermediary_role`, `intermediary_commission`, `underwriter_disclaimer`, `anti_selection_notice`, `statement_of_needs`, `product_information`, `pre_existing_conditions`, `statutory_warning`, `privacy_policy`, `terms_of_business` - `text` (string, required) — The disclosure statement text. It may contain `{token}` placeholders, each of which has exactly one entry in `links` and must be rendered as an anchor to that link. A disclosure with no links contains no placeholders, so plain text stays plain text. - `links` (list of DisclosureLinkResponse, required) — The documents `text` names, one per placeholder it carries. Empty for a disclosure that is text only. ### CostSharingConfigurationResponse - `type` (enum, required) — Cost sharing type. Determines which sub-object is populated. - Allowed values: `member_count`, `member_selection`, `member_selection_percentage_based`, `percentage`, `policyholder_only`, `family_type`, `fixed_amount`, `full_coverage` - `member_count` (MemberCountCostSharingConfigurationResponse, optional) — Numbers of additional members covered by the employer. - `member_selection` (MemberSelectionCostSharingConfigurationResponse, optional) — Whether specific member types are covered by the employer. - `member_selection_percentage_based` (MemberSelectionPercentageBasedCostSharingConfigurationResponse, optional) — Whether specific member types are covered by the employer, each at a percentage of their premium. - `percentage` (PercentageCostSharingConfigurationResponse, optional) — Percentage of the premium the employer covers. - `family_type` (FamilyTypeCostSharingConfigurationResponse, optional) — Type of the family covered by the employer. - `fixed_amount` (FixedAmountCostSharingConfigurationResponse, optional) — Fixed monthly amount the employer covers. ### GroupQuoteIntentActionRequiredResponse - `code` (enum, required) — The action code indicating what action is required. - Allowed values: `provide_dependant_information`, `provide_beneficiary_information`, `provide_missing_information` - `reason` (string, required) — Brief reason for the required action. - `reason_description` (string, required) — Detailed description of the required action. - `due_by` (datetime, required) — The deadline by which the action must be completed. The day is included (i.e. the action can be completed any time during this day in the user's local time). ### GroupQuoteIntentLevelResponse - `group_id` (string, required) — Unique identifier for the group this level quotes. - `plan_id` (string, required) — Unique identifier for the plan this level quotes. - `cost_sharing` (CostSharingConfigurationResponse, optional) — Cost sharing configuration for this level. Null only on a `single` intent that has not settled it yet. - `coverage_selections` (list of PlanCoverageOptionSelectionResponse, optional, nullable) — Plan coverage option selections for this level. Null when none were supplied. ### ConsentStatementLinkResponse - `token` (string, required) — The placeholder this link fills. It appears in the statement's `text` wrapped in braces, as `{token}`, and matches `^[a-z][a-z0-9_]*$`. Tokens are unique within one statement, and every token in the text has exactly one link here. - `type` (enum, required) — What kind of document this is, for reporting and audit. Separate from `token`, which is only a slot in one sentence: a statement may name the same kind of document twice. - Allowed values: `terms_of_business`, `privacy_policy` - `label` (string, required) — The anchor text to display in place of the token. - `url` (string, required) — Absolute HTTPS URL of the document. - `version` (string, required) — Version of the document at the URL. ### DisclosureLinkResponse - `token` (string, required) — The placeholder this link fills. It appears in the disclosure's `text` wrapped in braces, as `{token}`, and matches `^[a-z][a-z0-9_]*$`. Tokens are unique within one disclosure, and every token in the text has exactly one link here. - `type` (enum, required) — What kind of document this is, for reporting and audit. The token is derived from it, so the two always agree; this is the value to branch on rather than matching the token as a string. - Allowed values: `intermediary_role`, `intermediary_commission`, `underwriter_disclaimer`, `anti_selection_notice`, `statement_of_needs`, `product_information`, `pre_existing_conditions`, `statutory_warning`, `privacy_policy`, `terms_of_business` - `label` (string, required) — The anchor text to display in place of the token. - `url` (string, required) — Absolute HTTPS URL of the document. - `version` (string, required) — Version of the document at the URL, so a record of what was shown can name the exact document the customer could have read. ### MemberCountCostSharingConfigurationResponse - `adults` (integer, required) — Number of additional adults covered, including partner/spouse. - `children` (integer, required) — Number of additional children covered. ### MemberSelectionCostSharingConfigurationResponse - `partner` (boolean, required) — If a spouse/partner is covered. - `children` (boolean, required) — If children are covered. ### MemberSelectionPercentageBasedCostSharingConfigurationResponse - `partner` (boolean, required) — If a spouse/partner is covered. - `children` (boolean, required) — If children are covered. - `percentage` (integer, required) — Employer coverage percentage of each covered member's premium: For 40% send 40. For 100% send 100. ### PercentageCostSharingConfigurationResponse - `percentage` (integer, required) — Employer coverage percentage: For 40% send 40. For 100% send 100. ### FamilyTypeCostSharingConfigurationResponse - `type` (enum, required) — Employer coverage family type - Allowed values: `single`, `couple`, `single_with_children`, `family` ### FixedAmountCostSharingConfigurationResponse - `monthly_amount` (double, required) — Monthly amount the employer covers, in the plan's currency. Must be positive. ### PlanCoverageOptionSelectionResponse - `configuration_id` (string, required) — Configuration ID (prefixed with `pc_`). - `options` (list of SelectedOptionResponse, required) — Selected options. ### SelectedOptionResponse - `option_id` (string, required) — Option ID (prefixed with `pco_`). - `sub_options` (list of SelectedOptionResponse, optional, nullable) — Selected sub-options, if applicable. ## Examples **Response** ```json { "id": "gqi_3b1333d87d9d4fd6ad83ba7f6b0e951a", "group_id": "gr_3b1333d87d9d4fd6ad83ba7f6b0e951a", "plan_id": "pl_3b1333d87d9d4fd6ad83ba7f6b0e951a", "status": "processing", "items": [ { "benefit_type": "health_insurance", "levels": [ { "group_id": "gr_3b1333d87d9d4fd6ad83ba7f6b0e951a", "plan_id": "pl_3b1333d87d9d4fd6ad83ba7f6b0e951a", "cost_sharing": null, "coverage_selections": null } ], "ref": null } ], "consent_links": [ { "id": "cst_3b1333d87d9d4fd6ad83ba7f6b0e951a", "text": "string", "links": [ { "token": "string", "type": "terms_of_business", "label": "string", "url": "string", "version": "string" } ], "object": "string" } ], "disclosures": [ { "category": "regulatory", "type": "intermediary_role", "text": "string", "links": [ { "token": "string", "type": "intermediary_role", "label": "string", "url": "string", "version": "string" } ] } ], "type": null, "cost_sharing": null, "expected_start_date": "2024-12-01", "action_required": null, "object": "string" } ``` **SDK Code** ```python import requests url = "https://test.api.kota.io/group_quote_intents/gqi_3b1333d87d9d4fd6ad83ba7f6b0e951a" headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://test.api.kota.io/group_quote_intents/gqi_3b1333d87d9d4fd6ad83ba7f6b0e951a'; 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://test.api.kota.io/group_quote_intents/gqi_3b1333d87d9d4fd6ad83ba7f6b0e951a" 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://test.api.kota.io/group_quote_intents/gqi_3b1333d87d9d4fd6ad83ba7f6b0e951a") 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://test.api.kota.io/group_quote_intents/gqi_3b1333d87d9d4fd6ad83ba7f6b0e951a") .header("Authorization", "Bearer ") .asString(); ``` ```php request('GET', 'https://test.api.kota.io/group_quote_intents/gqi_3b1333d87d9d4fd6ad83ba7f6b0e951a', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://test.api.kota.io/group_quote_intents/gqi_3b1333d87d9d4fd6ad83ba7f6b0e951a"); 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://test.api.kota.io/group_quote_intents/gqi_3b1333d87d9d4fd6ad83ba7f6b0e951a")! 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() ```