> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.kota.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.kota.io/_mcp/server.

# List all plans

GET https://test.api.kota.io/plans

Returns a list of `plans`.

Reference: https://docs.kota.io/api-reference/plans/list-plans

## 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

### Query parameters

- `type` (string, optional) — Multiple values can be provided by separating them with a comma. Allowed values are: `health_insurance`, `life_assurance`.
- `provider_id` (string, optional) — Multiple values can be provided by separating them with a comma. Allowed values are: `pr_allianz`, `pr_irishlifehealth`, `pr_vitality`, `pr_onvz`, `pr_freedom`, `pr_sanitas`, `pr_canadalife`, `pr_hallesche`, `pr_bupa`, `pr_dansksundhedssikring`, `pr_allianzkpt`, `pr_freedomuk`, `pr_bupaglobal`, `pr_expatriate`, `pr_gsmc`, `pr_axafrance`.
- `country` (enum, optional) — Filters plans by country.
  - Allowed values: `af`, `ax`, `al`, `dz`, `as`, `ad`, `ao`, `ai`, `aq`, `ag`, `ar`, `am`, `aw`, `au`, `at`, `az`, `bs`, `bh`, `bd`, `bb`, `by`, `be`, `bz`, `bj`, `bm`, `bt`, `bo`, `bq`, `ba`, `bw`, `bv`, `br`, `io`, `bn`, `bg`, `bf`, `bi`, `cv`, `kh`, `cm`, `ca`, `ky`, `cf`, `td`, `cl`, `cn`, `cx`, `cc`, `co`, `km`, `cg`, `cd`, `ck`, `cr`, `ci`, `hr`, `cu`, `cw`, `cy`, `cz`, `dk`, `dj`, `dm`, `do`, `ec`, `eg`, `sv`, `gq`, `er`, `ee`, `sz`, `et`, `fk`, `fo`, `fj`, `fi`, `fr`, `gf`, `pf`, `tf`, `ga`, `gm`, `ge`, `de`, `gh`, `gi`, `gr`, `gl`, `gd`, `gp`, `gu`, `gt`, `gg`, `gn`, `gw`, `gy`, `ht`, `hm`, `va`, `hn`, `hk`, `hu`, `is`, `in`, `id`, `ir`, `iq`, `ie`, `im`, `il`, `it`, `jm`, `jp`, `je`, `jo`, `kz`, `ke`, `ki`, `kp`, `kr`, `xk`, `kw`, `kg`, `la`, `lv`, `lb`, `ls`, `lr`, `ly`, `li`, `lt`, `lu`, `mo`, `mg`, `mw`, `my`, `mv`, `ml`, `mt`, `mh`, `mq`, `mr`, `mu`, `yt`, `mx`, `fm`, `md`, `mc`, `mn`, `me`, `ms`, `ma`, `mz`, `mm`, `na`, `nr`, `np`, `nl`, `nc`, `nz`, `ni`, `ne`, `ng`, `nu`, `nf`, `mk`, `mp`, `no`, `om`, `pk`, `pw`, `ps`, `pa`, `pg`, `py`, `pe`, `ph`, `pn`, `pl`, `pt`, `pr`, `qa`, `re`, `ro`, `ru`, `rw`, `bl`, `sh`, `kn`, `lc`, `mf`, `pm`, `vc`, `ws`, `sm`, `st`, `sa`, `sn`, `rs`, `sc`, `sl`, `sg`, `sx`, `sk`, `si`, `sb`, `so`, `za`, `gs`, `ss`, `es`, `lk`, `sd`, `sr`, `sj`, `se`, `ch`, `sy`, `tw`, `tj`, `tz`, `th`, `tl`, `tg`, `tk`, `to`, `tt`, `tn`, `tr`, `tm`, `tc`, `tv`, `ug`, `ua`, `ae`, `gb`, `um`, `us`, `uy`, `uz`, `vu`, `ve`, `vn`, `vg`, `vi`, `wf`, `eh`, `ye`, `zm`, `zw`
- `available_on` (date, optional) — Filters plans available on a specific date. Defaults to today.
- `group_id` (string, optional) — Filters plans by group eligibility. Only plans whose eligibility criteria match the group are returned. Criteria that cannot be evaluated are ignored.
- `start_date` (date, optional) — Reference date used to compute employee age when evaluating per-plan eligibility counts. Required together with `group_id` for counts to be included in the response.
- `sort_by` (enum, optional) — Sorts plans by a specific field. Currently only `premium` is supported.
  - Allowed values: `premium`
- `sort_dir` (enum, optional) — Sort direction. Defaults to `asc` (ascending).
  - Allowed values: `asc`, `desc`
- `page` (integer, optional) — The page of results to return. Defaults to 1 if not provided.
- `page_size` (integer, optional) — The number of results to return per page. Defaults to 10 if not provided. Maximum value is 100.

### 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

- `items` (list of PlanResponse, required) — A paginated array containing the response elements
- `page` (integer, required) — The current page of the results
- `page_size` (integer, required) — The number of results on this page. This can be different from the requested page size if the total number of results is less than the requested page size
- `total_count` (integer, required) — The total number of elements available in the response. This is the total number of elements available across all pages, not just the current page.
- `has_next_page` (boolean, optional) — Whether there are more pages available after this page
- `has_previous_page` (boolean, optional) — Whether there are more pages available before this page

## Errors

### 400 Bad Request Error

Bad Request

- `type` (string, optional, nullable)
- `title` (string, optional, nullable)
- `status` (integer, optional, nullable)
- `detail` (string, optional, nullable)
- `instance` (string, optional, nullable)
- `errors` (map from string to list of string, optional)

### 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

### PlanResponse

- `id` (string, required) — Unique identifier for the plan. Prefixed with `pl_`.
- `type` (enum, required) — The benefit type of the plan.
  - Allowed values: `health_insurance`, `life_assurance`
- `name` (string, required) — The name of the plan.
- `description` (string, required) — Description of the plan.
- `country` (enum, required) — The country this plan is available in.
  - Allowed values: `af`, `ax`, `al`, `dz`, `as`, `ad`, `ao`, `ai`, `aq`, `ag`, `ar`, `am`, `aw`, `au`, `at`, `az`, `bs`, `bh`, `bd`, `bb`, `by`, `be`, `bz`, `bj`, `bm`, `bt`, `bo`, `bq`, `ba`, `bw`, `bv`, `br`, `io`, `bn`, `bg`, `bf`, `bi`, `cv`, `kh`, `cm`, `ca`, `ky`, `cf`, `td`, `cl`, `cn`, `cx`, `cc`, `co`, `km`, `cg`, `cd`, `ck`, `cr`, `ci`, `hr`, `cu`, `cw`, `cy`, `cz`, `dk`, `dj`, `dm`, `do`, `ec`, `eg`, `sv`, `gq`, `er`, `ee`, `sz`, `et`, `fk`, `fo`, `fj`, `fi`, `fr`, `gf`, `pf`, `tf`, `ga`, `gm`, `ge`, `de`, `gh`, `gi`, `gr`, `gl`, `gd`, `gp`, `gu`, `gt`, `gg`, `gn`, `gw`, `gy`, `ht`, `hm`, `va`, `hn`, `hk`, `hu`, `is`, `in`, `id`, `ir`, `iq`, `ie`, `im`, `il`, `it`, `jm`, `jp`, `je`, `jo`, `kz`, `ke`, `ki`, `kp`, `kr`, `xk`, `kw`, `kg`, `la`, `lv`, `lb`, `ls`, `lr`, `ly`, `li`, `lt`, `lu`, `mo`, `mg`, `mw`, `my`, `mv`, `ml`, `mt`, `mh`, `mq`, `mr`, `mu`, `yt`, `mx`, `fm`, `md`, `mc`, `mn`, `me`, `ms`, `ma`, `mz`, `mm`, `na`, `nr`, `np`, `nl`, `nc`, `nz`, `ni`, `ne`, `ng`, `nu`, `nf`, `mk`, `mp`, `no`, `om`, `pk`, `pw`, `ps`, `pa`, `pg`, `py`, `pe`, `ph`, `pn`, `pl`, `pt`, `pr`, `qa`, `re`, `ro`, `ru`, `rw`, `bl`, `sh`, `kn`, `lc`, `mf`, `pm`, `vc`, `ws`, `sm`, `st`, `sa`, `sn`, `rs`, `sc`, `sl`, `sg`, `sx`, `sk`, `si`, `sb`, `so`, `za`, `gs`, `ss`, `es`, `lk`, `sd`, `sr`, `sj`, `se`, `ch`, `sy`, `tw`, `tj`, `tz`, `th`, `tl`, `tg`, `tk`, `to`, `tt`, `tn`, `tr`, `tm`, `tc`, `tv`, `ug`, `ua`, `ae`, `gb`, `um`, `us`, `uy`, `uz`, `vu`, `ve`, `vn`, `vg`, `vi`, `wf`, `eh`, `ye`, `zm`, `zw`
- `provider` (PlanProviderResponse, required) — The provider offering this plan.
- `documents` (list of PlanDocumentResponse, required) — List of plan documents (e.g., IPIDs, T&Cs).
- `employer_eligibility_criteria` (list of EmployerEligibilityCriterionResponse, required) — Eligibility criteria that employers must meet.
- `employee_eligibility_criteria` (list of EmployeeEligibilityCriterionResponse, required) — Eligibility criteria that employees must meet.
- `disclosures` (list of DisclosureResponse, required) — Disclosures associated with this plan.
- `available_from` (date, required) — The date from which this plan is available (inclusive).
- `object` (string, optional) — Object type. Always `plan`.
- `health_insurance` (PlanHealthInsuranceResponse, optional) — Health insurance-specific details. Only populated when type is `health_insurance`.
- `life_assurance` (PlanLifeAssuranceResponse, optional) — Life assurance-specific details. Only populated when type is `life_assurance`.
- `indicative_pricing` (IndicativePricingResponse, optional) — Average monthly guide prices used when exact catalog pricing is unavailable. Actual premiums may be higher or lower based on the whole policy; these values are for comparison only and must not be used in premium calculations.
- `available_to` (date, optional, nullable) — The date until which this plan is available (inclusive). Null if the plan has no end date.
- `coverage_options` (list of PlanCoverageResponse, optional, nullable) — Coverage options available for this plan, organized by scope and input type.
- `eligible_count` (integer, optional, nullable) — Number of employees in the queried group eligible for this plan as-of `start_date`. Only present when both `group_id` and `start_date` query parameters are provided.
- `ineligible_count` (integer, optional, nullable) — Number of employees in the queried group ineligible for this plan as-of `start_date`. Only present when both `group_id` and `start_date` query parameters are provided.
- `total_count` (integer, optional, nullable) — Total employees in the queried group. Only present when both `group_id` and `start_date` query parameters are provided.

### PlanProviderResponse

- `id` (string, required) — Unique identifier for the provider. Prefixed with `pr_`.
- `name` (string, required) — The name of the provider.
- `description` (string, required) — Description of the provider.
- `logo_url` (string, required) — URL to the provider's logo.

### PlanDocumentResponse

- `title` (string, required) — Title of the document.
- `link` (string, required) — Public URL to the document. This could be any format (PDF, HTML, etc.).
- `type` (enum, optional) — Machine-readable document kind used for display and i18n. Possible values are listed below; as this enum can expand with new benefits, unknown values MUST be handled gracefully by clients (fallback to a generic `document` label).
  - Allowed values: `ipid`, `table_of_cover`, `waiting_periods`, `hospital_list`, `plan_summary`, `terms_and_conditions`, `other`

### EmployerEligibilityCriterionResponse

- `type` (enum, required) — The type of eligibility criterion.
  - Allowed values: `employees_count`, `members_count`, `industry_exclusions`
- `description` (string, required) — Human-readable description of the criterion.
- `employees_count` (EmployeesCountDetails, optional) — Employee count constraints. Only populated when type is `employees_count`.
- `members_count` (MembersCountDetails, optional) — Member count constraints. Only populated when type is `members_count`.
- `industry_exclusions` (IndustryExclusionsDetails, optional) — Industry exclusion details. Only populated when type is `industry_exclusions`.

### EmployeeEligibilityCriterionResponse

- `type` (enum, required) — The type of eligibility criterion.
  - Allowed values: `age_range`
- `description` (string, required) — Human-readable description of the criterion.
- `age_range` (AgeRangeDetails, optional) — Age range constraints. Only populated when type is `age_range`.

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

### PlanHealthInsuranceResponse

- `health_insurance_type` (enum, required) — Whether this is an international or local insurance plan.
  - Allowed values: `international`, `local`
- `supported_cost_sharing_options` (list of enum, required) — Cost sharing options supported by this plan.
  - Allowed values: `percentage`, `fixed_amount`, `member_count`, `policyholder_only`, `member_selection`, `member_selection_percentage_based`, `family_type`, `full_coverage`
- `supported_cost_sharing_restrictions` (list of CostSharingRestrictions, required) — Cost sharing restrictions, this helps you figure out the possible minimums / maximums that can be covered.
- `supported_member_types` (list of enum, required) — Member types supported by this plan.
  - Allowed values: `policyholder`, `spouse`, `partner`, `adult_dependant`, `child`
- `pricing` (HealthPlanPricingResponse, required) — Pricing information for the plan.

### PlanLifeAssuranceResponse

- `life_assurance_type` (enum, required) — Whether this is an international or local assurance plan.
  - Allowed values: `international`, `local`
- `supported_cost_sharing_options` (list of enum, required) — Cost sharing options supported by this plan.
  - Allowed values: `percentage`, `fixed_amount`, `member_count`, `policyholder_only`, `member_selection`, `member_selection_percentage_based`, `family_type`, `full_coverage`
- `supported_cost_sharing_restrictions` (list of CostSharingRestrictions, required) — Cost sharing restrictions, this helps you figure out the possible minimums / maximums that can be covered.

### IndicativePricingResponse

- `currency` (enum, optional) — Currency used for both average monthly guide prices.
  - Allowed values: `eur`, `aed`, `afn`, `xcd`, `all`, `amd`, `aoa`, `ars`, `usd`, `aud`, `awg`, `azn`, `bam`, `bbd`, `bdt`, `xof`, `bgn`, `bhd`, `bif`, `bmd`, `bnd`, `bob`, `bov`, `brl`, `bsd`, `inr`, `btn`, `nok`, `bwp`, `byn`, `bzd`, `cad`, `xaf`, `cdf`, `chf`, `che`, `chw`, `nzd`, `clp`, `clf`, `cny`, `cop`, `cou`, `crc`, `cup`, `cuc`, `cve`, `ang`, `czk`, `djf`, `dkk`, `dop`, `dzd`, `egp`, `mad`, `ern`, `etb`, `fjd`, `fkp`, `mdl`, `gbp`, `gel`, `ghs`, `gip`, `gmd`, `gnf`, `gtq`, `gyd`, `hkd`, `hnl`, `hrk`, `htg`, `huf`, `idr`, `xdr`, `ils`, `iqd`, `irr`, `isk`, `jmd`, `jod`, `jpy`, `kes`, `kgs`, `khr`, `kmf`, `kpw`, `krw`, `kwd`, `kyd`, `kzt`, `lak`, `lbp`, `lkr`, `lrd`, `lsl`, `zar`, `lyd`, `mga`, `mkd`, `mmk`, `mnt`, `mop`, `mru`, `mur`, `mvr`, `mwk`, `mxn`, `mxv`, `myr`, `mzn`, `nad`, `xpf`, `ngn`, `nio`, `npr`, `omr`, `pab`, `pen`, `pgk`, `php`, `pkr`, `pln`, `pyg`, `qar`, `ron`, `rsd`, `rub`, `rwf`, `sar`, `sbd`, `scr`, `sdg`, `sek`, `sgd`, `shp`, `sll`, `sos`, `srd`, `ssp`, `stn`, `svc`, `xsu`, `syp`, `twd`, `szl`, `thb`, `tjs`, `tmt`, `tnd`, `top`, `try`, `ttd`, `tzs`, `uah`, `ugx`, `usn`, `uyu`, `uyi`, `uyw`, `uzs`, `ves`, `vnd`, `vuv`, `wst`, `yer`, `xua`, `zmw`, `zwl`
- `adult_monthly_premium` (double, optional, nullable) — Average monthly guide price for an adult. The actual premium may be higher or lower based on the whole policy and this value must not be used in premium calculations.
- `child_monthly_premium` (double, optional, nullable) — Average monthly guide price for a child. The actual premium may be higher or lower based on the whole policy and this value must not be used in premium calculations.

### PlanCoverageResponse

- `id` (string, required) — Unique identifier for the coverage selection. Prefixed with `pc_`.
- `name` (string, required) — Title for this coverage selection. Typically used as the display heading.
- `scope` (enum, required) — Scope of selection for this coverage selection: `group_policy` (employer selects for the group), `policy` (per-policy selection), or `member` (individual member selects).
  - Allowed values: `group_policy`, `policy`, `member`
- `input_type` (enum, required) — Describes whether this input allows selecting a single option or multiple options.
  - Allowed values: `single_select`, `multi_select`
- `required` (boolean, required) — Whether a selection is mandatory.
- `options` (list of PlanCoverageOptionResponse, required) — Available options within this coverage selection.
- `description` (string, optional, nullable) — Full description of this coverage selection.
- `min_selections` (integer, optional, nullable) — Minimum required selections (multi-select only).
- `max_selections` (integer, optional, nullable) — Maximum allowed selections (multi-select only).
- `sort_order` (integer, optional, nullable) — Display ordering hint.
- `group_label` (string, optional, nullable) — Optional grouping label for UI rendering. Indicates which coverage selections are best presented together from a UX standpoint.

### EmployeesCountDetails

- `min` (integer, optional, nullable) — Minimum number of employees required.
- `max` (integer, optional, nullable) — Maximum number of employees allowed.

### MembersCountDetails

- `min` (integer, optional, nullable) — Minimum number of members required.
- `max` (integer, optional, nullable) — Maximum number of members allowed.

### IndustryExclusionsDetails

- `excluded_industries` (list of string, required) — List of excluded industries.

### AgeRangeDetails

- `min` (integer, optional, nullable) — Minimum age required.
- `max` (integer, optional, nullable) — Maximum age allowed.

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

### CostSharingRestrictions

- `type` (enum, required) — The type of cost sharing this restriction applies to
  - Allowed values: `percentage`, `fixed_amount`, `member_count`, `policyholder_only`, `member_selection`, `member_selection_percentage_based`, `family_type`, `full_coverage`
- `percentage` (PercentageCostSharingRestrictions, optional) — Restrictions applied to 'percentage' type cost sharing
- `member_selection_percentage_based` (MemberSelectionPercentageBasedCostSharingRestrictions, optional) — Restrictions applied to 'member_selection_percentage_based' type cost sharing

### HealthPlanPricingResponse

- `type` (enum, required) — Type of pricing structure
  - Allowed values: `per_member`, `tier_based`
- `per_member` (PerMemberPricingResponse, optional) — Per-member pricing details (populated when type is 'per_member').
- `tier_based` (TierBasedPricingResponse, optional) — Tier-based pricing details (populated when type is 'tier_based').

### PlanCoverageOptionResponse

- `id` (string, required) — Unique identifier for this coverage option. Prefixed with `pco_`.
- `name` (string, required) — Display name for this coverage option.
- `description` (string, optional, nullable) — Longer explanation of this coverage option.
- `learn_more_url` (string, optional, nullable) — Link to learn more about this coverage option.
- `from_price` (double, optional, nullable) — Lowest applicable monthly price for this coverage option.
- `benefits` (list of PlanCoverageOptionBenefitResponse, optional, nullable) — Benefit items included with this coverage option.
- `sub_options` (list of PlanCoverageOptionResponse, optional, nullable) — Nested sub-options available when this option is selected.
- `eligibility_criteria` (list of EmployerEligibilityCriterionResponse, optional, nullable) — Eligibility criteria that must be met to select this coverage option.

### PercentageCostSharingRestrictions

- `minimum_percentage` (integer, optional) — Minimum percentage of the percentage
- `maximum_percentage` (integer, optional) — Maximum percentage of the percentage

### MemberSelectionPercentageBasedCostSharingRestrictions

- `minimum_percentage` (integer, optional) — Minimum percentage of the member selection percentage based
- `maximum_percentage` (integer, optional) — Maximum percentage of the member selection percentage based

### PerMemberPricingResponse

- `currency` (enum, required) — Currency code (e.g., 'eur', 'usd').
  - Allowed values: `eur`, `aed`, `afn`, `xcd`, `all`, `amd`, `aoa`, `ars`, `usd`, `aud`, `awg`, `azn`, `bam`, `bbd`, `bdt`, `xof`, `bgn`, `bhd`, `bif`, `bmd`, `bnd`, `bob`, `bov`, `brl`, `bsd`, `inr`, `btn`, `nok`, `bwp`, `byn`, `bzd`, `cad`, `xaf`, `cdf`, `chf`, `che`, `chw`, `nzd`, `clp`, `clf`, `cny`, `cop`, `cou`, `crc`, `cup`, `cuc`, `cve`, `ang`, `czk`, `djf`, `dkk`, `dop`, `dzd`, `egp`, `mad`, `ern`, `etb`, `fjd`, `fkp`, `mdl`, `gbp`, `gel`, `ghs`, `gip`, `gmd`, `gnf`, `gtq`, `gyd`, `hkd`, `hnl`, `hrk`, `htg`, `huf`, `idr`, `xdr`, `ils`, `iqd`, `irr`, `isk`, `jmd`, `jod`, `jpy`, `kes`, `kgs`, `khr`, `kmf`, `kpw`, `krw`, `kwd`, `kyd`, `kzt`, `lak`, `lbp`, `lkr`, `lrd`, `lsl`, `zar`, `lyd`, `mga`, `mkd`, `mmk`, `mnt`, `mop`, `mru`, `mur`, `mvr`, `mwk`, `mxn`, `mxv`, `myr`, `mzn`, `nad`, `xpf`, `ngn`, `nio`, `npr`, `omr`, `pab`, `pen`, `pgk`, `php`, `pkr`, `pln`, `pyg`, `qar`, `ron`, `rsd`, `rub`, `rwf`, `sar`, `sbd`, `scr`, `sdg`, `sek`, `sgd`, `shp`, `sll`, `sos`, `srd`, `ssp`, `stn`, `svc`, `xsu`, `syp`, `twd`, `szl`, `thb`, `tjs`, `tmt`, `tnd`, `top`, `try`, `ttd`, `tzs`, `uah`, `ugx`, `usn`, `uyu`, `uyi`, `uyw`, `uzs`, `ves`, `vnd`, `vuv`, `wst`, `yer`, `xua`, `zmw`, `zwl`
- `member_type_pricing` (list of MemberTypePricingResponse, required) — Pricing for each member type.

### TierBasedPricingResponse

- `currency` (enum, required) — Currency code (e.g., 'eur', 'usd').
  - Allowed values: `eur`, `aed`, `afn`, `xcd`, `all`, `amd`, `aoa`, `ars`, `usd`, `aud`, `awg`, `azn`, `bam`, `bbd`, `bdt`, `xof`, `bgn`, `bhd`, `bif`, `bmd`, `bnd`, `bob`, `bov`, `brl`, `bsd`, `inr`, `btn`, `nok`, `bwp`, `byn`, `bzd`, `cad`, `xaf`, `cdf`, `chf`, `che`, `chw`, `nzd`, `clp`, `clf`, `cny`, `cop`, `cou`, `crc`, `cup`, `cuc`, `cve`, `ang`, `czk`, `djf`, `dkk`, `dop`, `dzd`, `egp`, `mad`, `ern`, `etb`, `fjd`, `fkp`, `mdl`, `gbp`, `gel`, `ghs`, `gip`, `gmd`, `gnf`, `gtq`, `gyd`, `hkd`, `hnl`, `hrk`, `htg`, `huf`, `idr`, `xdr`, `ils`, `iqd`, `irr`, `isk`, `jmd`, `jod`, `jpy`, `kes`, `kgs`, `khr`, `kmf`, `kpw`, `krw`, `kwd`, `kyd`, `kzt`, `lak`, `lbp`, `lkr`, `lrd`, `lsl`, `zar`, `lyd`, `mga`, `mkd`, `mmk`, `mnt`, `mop`, `mru`, `mur`, `mvr`, `mwk`, `mxn`, `mxv`, `myr`, `mzn`, `nad`, `xpf`, `ngn`, `nio`, `npr`, `omr`, `pab`, `pen`, `pgk`, `php`, `pkr`, `pln`, `pyg`, `qar`, `ron`, `rsd`, `rub`, `rwf`, `sar`, `sbd`, `scr`, `sdg`, `sek`, `sgd`, `shp`, `sll`, `sos`, `srd`, `ssp`, `stn`, `svc`, `xsu`, `syp`, `twd`, `szl`, `thb`, `tjs`, `tmt`, `tnd`, `top`, `try`, `ttd`, `tzs`, `uah`, `ugx`, `usn`, `uyu`, `uyi`, `uyw`, `uzs`, `ves`, `vnd`, `vuv`, `wst`, `yer`, `xua`, `zmw`, `zwl`
- `tiers` (list of PricingTierResponse, required) — Pricing tiers for different family compositions.

### PlanCoverageOptionBenefitResponse

- `name` (string, required) — Benefit name.
- `description` (string, optional, nullable) — Benefit description.

### MemberTypePricingResponse

- `code` (enum, required) — Member type code.
  - Allowed values: `adult`, `young_adult`, `child`
- `display_name` (string, required) — Display name for the member type.
- `monthly_premium` (double, required) — Monthly premium amount.

### PricingTierResponse

- `code` (enum, required) — Tier code.
  - Allowed values: `single`, `couple`, `single_parent`, `family`
- `display_name` (string, required) — Display name for the tier.
- `monthly_premium` (double, required) — Monthly premium amount for this tier.
- `annual_premium` (double, required) — Annual premium amount for this tier.
- `display_dependent_requirements` (string, required) — Description of dependent requirements for this tier.

## Examples

**Response**

```json
{
  "items": [
    {
      "id": "pl_3b1333d87d9d4fd6ad83ba7f6b0e951a",
      "type": "health_insurance",
      "name": "string",
      "description": "string",
      "country": "af",
      "provider": {
        "id": "pr_3b1333d87d9d4fd6ad83ba7f6b0e951a",
        "name": "string",
        "description": "string",
        "logo_url": "string"
      },
      "documents": [
        {
          "title": "string",
          "link": "string",
          "type": "ipid"
        }
      ],
      "employer_eligibility_criteria": [
        {
          "type": "employees_count",
          "description": "string",
          "employees_count": null,
          "members_count": null,
          "industry_exclusions": null
        }
      ],
      "employee_eligibility_criteria": [
        {
          "type": "age_range",
          "description": "string",
          "age_range": null
        }
      ],
      "disclosures": [
        {
          "category": "regulatory",
          "type": "intermediary_role",
          "text": "string",
          "links": [
            {
              "token": "string",
              "type": "intermediary_role",
              "label": "string",
              "url": "string",
              "version": "string"
            }
          ]
        }
      ],
      "available_from": "2024-12-01",
      "object": "string",
      "health_insurance": null,
      "life_assurance": null,
      "indicative_pricing": null,
      "available_to": "2024-12-01",
      "coverage_options": null,
      "eligible_count": null,
      "ineligible_count": null,
      "total_count": null
    }
  ],
  "page": 123,
  "page_size": 123,
  "total_count": 123,
  "has_next_page": true,
  "has_previous_page": true
}
```

**SDK Code**

```python
import requests

url = "https://test.api.kota.io/plans"

querystring = {"group_id":"gr_3b1333d87d9d4fd6ad83ba7f6b0e951a"}

headers = {"Authorization": "Bearer <apiKey>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://test.api.kota.io/plans?group_id=gr_3b1333d87d9d4fd6ad83ba7f6b0e951a';
const options = {method: 'GET', headers: {Authorization: 'Bearer <apiKey>'}};

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/plans?group_id=gr_3b1333d87d9d4fd6ad83ba7f6b0e951a"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <apiKey>")

	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/plans?group_id=gr_3b1333d87d9d4fd6ad83ba7f6b0e951a")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://test.api.kota.io/plans?group_id=gr_3b1333d87d9d4fd6ad83ba7f6b0e951a")
  .header("Authorization", "Bearer <apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://test.api.kota.io/plans?group_id=gr_3b1333d87d9d4fd6ad83ba7f6b0e951a', [
  'headers' => [
    'Authorization' => 'Bearer <apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://test.api.kota.io/plans?group_id=gr_3b1333d87d9d4fd6ad83ba7f6b0e951a");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://test.api.kota.io/plans?group_id=gr_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()
```