---
title: "The application question schema for an instant-quote program"
method: GET
path: "/broker/programs/{program_id}/application-schema"
tags: ["Programs"]
---

# The application question schema for an instant-quote program

`GET /broker/programs/{program_id}/application-schema`

## Request

- Base URL: `https://api.hedgespecialty.com/api/v1`
- URL: `https://api.hedgespecialty.com/api/v1/broker/programs/{program_id}/application-schema`
- Auth: OAuth 2
  - Authorization code: `https://api.hedgespecialty.com/api/v1/oauth/authorize`
  - Client credentials
  - Token URL: `https://api.hedgespecialty.com/api/v1/oauth/token`

Exactly the questions Hedge's carrier integration asks for this
program — the schema the carrier application is filed on — projected
for your own application builder: sections of questions with stable
keys, labels, types, options, help, and `depends_on` visibility
dependencies. Collect answers against these keys, then save them to
the submission's application via the application-workspace
checkpoint. Optional `lob`/`state` check that the program lists that
line / state.

Served from Hedge's schema cache only — the schema Hedge's own
quoting already filed on; this read never calls the carrier. Until
Hedge's first quote with a program the response is 404
`code: application_schema_unavailable` (the list endpoint's
`application_schema_available` tells you in advance). Programs Hedge
quotes itself have no schema: 404 `code: no_application_schema`
pointing at GET /broker/markets/{market_id}/requirements.

`questions` (with `schema_version`) is the same application in the
shared question shape: exactly the questions the Hedge broker
workspace asks for this program, one flat list in order. `key` is
the shared answer key: Hedge's fact key where the program's question
means the same fact in the same form (so one answer can prefill
every program that asks it), otherwise
`program.<program_slug>.<id>`. `show_if` / `required_if` are the
full condition rules, keyed by `key`. Pass `lob` for the coverage
being quoted: programs whose questions depend on the products Hedge
selects for a line (Blitz) resolve them from it. `schema_version`
changes whenever `questions` change; cache per `schema_version`.

## Path parameters

- `program_id` string, uuid, required

## Query parameters

- `lob` string
- `state` string

## Response `200`

The projected question schema and the program's shared questions

- object
  - `program_id` string, uuid, required
  - `market_id` string, uuid, required
  - `name` string, required
  - `program_category` 'instant_quote', required
  - `contract_version` 'structured_v1', required
  - `schema_fingerprint` string, required: Content hash of the served schema; changes when the carrier's questions change. Per-application fingerprints for checkpoints come from the application-workspace.
  - `title` string, nullable
  - `description` string, nullable
  - `sections` object[], required
    - `key` string, required
    - `label` string, required
    - `questions` ProgramQuestion[], required
      - `key` string, required: Stable answer key; use it as the answer key in application checkpoints.
      - `label` string, required
      - `type` string, required: Normalized field type (e.g. text, number, boolean, select, multiselect, date, group, collection).
      - `required` boolean, required
      - `options` object[], nullable
        - `value` unknown
        - `label` string
      - `help` string, nullable
      - `depends_on` string[], nullable: Keys of other questions whose answers decide whether this one applies.
      - `required_when` object, nullable: Conditional requiredness when declared: {field, op (equals|not_equals|in|not_in|truthy|falsy), value}.
      - `one_of_group` string, nullable
      - `repeatable` boolean, required: True for collections (answer is a list of items shaped by `questions`).
      - `questions` ProgramQuestion[], nullable: Nested questions for group / collection items.
  - `schema_version` string, required: Content hash of `questions`.
  - `questions` SharedQuestion[], required
    - `id` string, required: The program's own answer path, stable within the set (an object's parts are `<object>.<part>`).
    - `key` string, required: Shared answer key: Hedge's fact key when the question means that fact in the same form, else `program.<program_slug>.<id>`.
    - `label` string, required
    - `help` string, nullable, required
    - `type` 'text' | 'textarea' | 'number' | 'currency' | 'percent' | 'integer' | 'boolean' | 'select' | 'multiselect' | 'date' | 'state' | 'address' | 'list', required: `list`: the answer is a JSON array; rows shaped by `item_questions`, or plain text values when `item_questions` is absent.
    - `options` object[], required: Choices for select / multiselect (empty otherwise). Send `value` unchanged; it may be a string, number or boolean.
      - `value` unknown, required
      - `label` string, required
    - `required` boolean, required: Required whenever the question is shown.
    - `show_if` SharedQuestionCondition[], required
      - `key` string, nullable, required
      - `op` 'eq' | 'ne' | 'in' | 'not_in' | 'truthy' | 'falsy' | 'gt' | 'gte' | 'lt' | 'lte' | 'exists' | 'any_of' | 'all_of', required
      - `value` unknown, required
      - `any_item` boolean
      - `reference` object: A keyed-row lookup Hedge evaluates natively.
      - `conditions` SharedQuestionCondition[]
    - `required_if` SharedQuestionCondition[]: When present, the question is required only while these conditions hold.
      - `key` string, nullable, required
      - `op` 'eq' | 'ne' | 'in' | 'not_in' | 'truthy' | 'falsy' | 'gt' | 'gte' | 'lt' | 'lte' | 'exists' | 'any_of' | 'all_of', required
      - `value` unknown, required
      - `any_item` boolean
      - `reference` object: A keyed-row lookup Hedge evaluates natively.
      - `conditions` SharedQuestionCondition[]
    - `one_of_group` string: An answer to any question in the same group satisfies the group.
    - `section` string, nullable, required
    - `assumed_default` unknown, required
    - `prefill_from` string, nullable, required
    - `item_questions` SharedQuestion[]: For a `list`: each row's questions. Keys are `<list key>.<id>`; a row condition on a sibling uses the sibling's key.

## Other responses

- `404`: Program not visible to your brokerage or not available for the given line/state (plain detail); not an instant-quote program (`code: no_application_schema`); or no schema cached yet (`code: application_schema_unavailable`)

## Changes

- **2026-09-29** `90c41460541f`: 8 breaking, 2 warning, 1 info
  - the response's body type changed from `object` to no type for status `200`
  - removed the required property `contract_version` from the response with the `200` status
  - removed the required property `market_id` from the response with the `200` status
  - removed the required property `name` from the response with the `200` status
  - …7 more
- **2026-09-20** `7928528d98b2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hedgespecialty/apis/hedge-submission-api/changes/broker/programs/:program_id/application-schema/get.md)

---

[API](https://skmtc.dev/hedgespecialty/apis/hedge-submission-api.md) - [All operations](https://skmtc.dev/hedgespecialty/apis/hedge-submission-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hedgespecialty/apis/hedge-submission-api/revisions/beefa9cdc11c?raw)
