Steadily Draft Quote API

A Draft Quote is an editable draft of a policy. Create a new draft quote by passing in basic insured and property information to `POST /v1/agency/draft_quote` with an authenticated bearer token header. Provide any known details about the property in the request - Steadily will resolve the rest of the information from our data sources. Our requests and responses are designed to mirror each other so that the request structure is self-documenting. To perform updates, send back the full quote payload you got from create with any modifications made in-place. Use the `/price` endpoint to get a pricing breakdown and `/underwrite` to check for underwriting decisions and alerts. The response includes an `agent_ui_url` field — this is the URL used to bridge the agent into the Steadily UI to review the quote, resolve any underwriting alerts, and complete the bind flow.

Operations 6

POST /v1/agency/draft_quote Quote Create #
GET /v1/agency/draft_quote Quote List #
GET /v1/agency/draft_quote/{quote_id} Quote Info #
PUT /v1/agency/draft_quote/{quote_id} Quote Update #
GET /v1/agency/draft_quote/{quote_id}/price Price Quote #
GET /v1/agency/draft_quote/{quote_id}/underwrite Underwriting Info #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/steadily-draft-quote-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

steadily-draft-quote-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Partner Account Draft Quote API
  description: '

    Get instant insurance quote estimates and manage referrals through our Partner API.

    To request an API key contact partnerships-team@steadily.com

    '
  version: 1.0-cc63f79
  x-logo:
    url: https://app.staging.steadily.com/static/images/steadily-logo.svg
    altText: Steadily
    href: /redoc
servers:
- url: https://api.steadily.com
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Draft Quote
  description: '

    A Draft Quote is an editable draft of a policy.


    Create a new draft quote by passing in basic insured and property information to `POST /v1/agency/draft_quote` with an authenticated bearer token header.

    Provide any known details about the property in the request - Steadily will resolve the rest of the information from our data sources.


    Our requests and responses are designed to mirror each other so that the request structure is self-documenting.

    To perform updates, send back the full quote payload you got from create with any modifications made in-place.


    Use the `/price` endpoint to get a pricing breakdown and `/underwrite` to check for underwriting decisions and alerts.


    The response includes an `agent_ui_url` field — this is the URL used to bridge the agent into the Steadily UI

    to review the quote, resolve any underwriting alerts, and complete the bind flow.

    '
paths:
  /v1/agency/draft_quote:
    post:
      tags:
      - Draft Quote
      summary: Quote Create
      description: "Create a new quote from scratch by providing\n\n  - **Policy Type** — See [DP1 vs DP3](https://www.steadily.com/blog/dp1-vs-dp3-insurance-policies) and [Policy\nTypes](https://www.steadily.com/agent-hub/policy-types) for details.\n  - **Primary Insured** — Name, date of birth, and email\n  - **Policy Details** — Occupancy status\n  - **Property Addresses** — One or more addresses to cover\n\n  You can omit coverages from your create request and we'll configure everything to available defaults.\n  Since our coverage options often vary by state, territory and even by other coverages you have selected, use the options returned in the quote response as the source-of-truth for which coverages are available.\n  If the coverage option you selected is not available, the response will automatically match against the nearest value (default) or return an error if `exact` `coverage_matching` is requested."
      operationId: quote_create
      security:
      - HTTPBearer: []
      parameters:
      - name: coverage_matching
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/CoverageMatching'
          - type: 'null'
          description: Specify how coverages should be configured. Default to `nearest`, which caps coverage values to the closest min/max.
          title: Coverage Matching
        description: Specify how coverages should be configured. Default to `nearest`, which caps coverage values to the closest min/max.
      - name: aud
        in: query
        required: false
        schema:
          type: string
          default: steadily:api
          title: Aud
      - name: quote_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Quote Id
      - name: offer_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Offer Id
      - name: policy_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Policy Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: Req
              allOf:
              - $ref: '#/components/schemas/QuoteCreateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Draft Quote
      summary: Quote List
      description: Return a history of quotes for an agency.
      operationId: quote_list
      security:
      - HTTPBearer: []
      parameters:
      - name: aud
        in: query
        required: false
        schema:
          type: string
          default: steadily:api
          title: Aud
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          default: 50
          title: Limit
      - name: starting_after_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Starting After Id
      - name: policy_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Policy Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteListPage'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agency/draft_quote/{quote_id}:
    get:
      tags:
      - Draft Quote
      summary: Quote Info
      description: Retrieve quote details
      operationId: quote_info
      security:
      - HTTPBearer: []
      parameters:
      - name: quote_id
        in: path
        required: true
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Quote Id
      - name: aud
        in: query
        required: false
        schema:
          type: string
          default: steadily:api
          title: Aud
      - name: offer_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Offer Id
      - name: policy_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Policy Id
      requestBody:
        content:
          application/json:
            schema:
              title: Req
              anyOf:
              - $ref: '#/components/schemas/QuoteOfferCreateRequest'
              - $ref: '#/components/schemas/PolicyCreateRequest'
              - $ref: '#/components/schemas/QuoteCreateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
      - Draft Quote
      summary: Quote Update
      description: Update fields on an existing draft quote.
      operationId: quote_update
      security:
      - HTTPBearer: []
      parameters:
      - name: quote_id
        in: path
        required: true
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Quote Id
      - name: aud
        in: query
        required: false
        schema:
          type: string
          default: steadily:api
          title: Aud
      - name: offer_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Offer Id
      - name: policy_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Policy Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: Req
              allOf:
              - $ref: '#/components/schemas/QuoteUpdateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agency/draft_quote/{quote_id}/price:
    get:
      tags:
      - Draft Quote
      summary: Price Quote
      description: Get pricing breakdown and details for a quote.
      operationId: price_quote
      security:
      - HTTPBearer: []
      parameters:
      - name: quote_id
        in: path
        required: true
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Quote Id
      - name: include_payment_schedules_breakdown
        in: query
        required: false
        schema:
          type: boolean
          default: true
          title: Include Payment Schedules Breakdown
      - name: aud
        in: query
        required: false
        schema:
          type: string
          default: steadily:api
          title: Aud
      - name: offer_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Offer Id
      - name: policy_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Policy Id
      requestBody:
        content:
          application/json:
            schema:
              title: Req
              anyOf:
              - $ref: '#/components/schemas/QuoteOfferCreateRequest'
              - $ref: '#/components/schemas/PolicyCreateRequest'
              - $ref: '#/components/schemas/QuoteCreateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuotePriceResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agency/draft_quote/{quote_id}/underwrite:
    get:
      tags:
      - Draft Quote
      summary: Underwriting Info
      description: Check underwriting rules for this Quote.
      operationId: underwriting_info
      security:
      - HTTPBearer: []
      parameters:
      - name: quote_id
        in: path
        required: true
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Quote Id
      - name: aud
        in: query
        required: false
        schema:
          type: string
          default: steadily:api
          title: Aud
      - name: offer_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Offer Id
      - name: policy_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Policy Id
      requestBody:
        content:
          application/json:
            schema:
              title: Req
              anyOf:
              - $ref: '#/components/schemas/QuoteOfferCreateRequest'
              - $ref: '#/components/schemas/PolicyCreateRequest'
              - $ref: '#/components/schemas/QuoteCreateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnderwriteResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ralphie__models__coverage_models__VandalismOrMaliciousMischiefSelectionFactorValueRequest__ValueOptions:
      type: string
      enum:
      - 5%
      - 10%
      - 25%
      - 50%
      - 100%
      title: ValueOptions
      description: An enumeration.
    SelectedValueRequest:
      properties:
        type:
          type: string
          enum:
          - selected
          title: Type
        value:
          $ref: '#/components/schemas/YesNo'
        label:
          type: string
          title: Label
          nullable: true
        editable:
          type: string
          title: Editable
          nullable: true
      additionalProperties: false
      type: object
      required:
      - type
      - value
      title: SelectedValueRequest
    ralphie__models__coverage_models__DwellingLossValuationOptionValueRequest__ValueOptions:
      type: string
      enum:
      - actual_cash_value
      - replacement_cost
      - repair_cost
      - extended_replacement_cost
      - functional_replacement_cost
      title: ValueOptions
      description: An enumeration.
    SquattersAndEvictionExpenseLimitDeductibleValueRequest:
      properties:
        type:
          type: string
          enum:
          - limit_deductible
          title: Type
        value:
          $ref: '#/components/schemas/ralphie__models__coverage_models__SquattersAndEvictionExpenseLimitDeductibleValueRequest__ValueOptions'
        label:
          type: string
          title: Label
          nullable: true
        editable:
          type: string
          title: Editable
          nullable: true
      additionalProperties: false
      type: object
      required:
      - type
      - value
      title: SquattersAndEvictionExpenseLimitDeductibleValueRequest
    EquipmentBreakdownCoverageRequest:
      properties:
        name:
          type: string
          enum:
          - equipment_breakdown
          title: Name
        config:
          items:
            $ref: '#/components/schemas/SelectedValueRequest'
          type: array
          title: Config
      additionalProperties: false
      type: object
      required:
      - name
      - config
      title: EquipmentBreakdownCoverageRequest
      description: 'Coverage request can specify just the list of coverages that need to change.

        Anything unspecified is unmodified.

        Coverages are de-selected rather than removed.

        To de-select an optional coverage, set the "Selected" configuration to "no".'
      example:
        name: water_damage_limitation
        config:
        - type: limit
          label: Water Damage Limitation
          value: 10%
        - type: sublimit
          label: Water Damage Limitation - Fungi Rot Sublimit
          value: '5000'
    AnnualPremiumIncreaseCoverageRequest:
      properties:
        name:
          type: string
          enum:
          - annual_premium_increase
          title: Name
        config:
          items:
            $ref: '#/components/schemas/SelectedValueRequest'
          type: array
          title: Config
      additionalProperties: false
      type: object
      required:
      - name
      - config
      title: AnnualPremiumIncreaseCoverageRequest
      description: 'Coverage request can specify just the list of coverages that need to change.

        Anything unspecified is unmodified.

        Coverages are de-selected rather than removed.

        To de-select an optional coverage, set the "Selected" configuration to "no".'
      example:
        name: water_damage_limitation
        config:
        - type: limit
          label: Water Damage Limitation
          value: 10%
        - type: sublimit
          label: Water Damage Limitation - Fungi Rot Sublimit
          value: '5000'
    ralphie__models__coverage_models__OffPremisesLiabilityExtensionValueRequest__ValueOptions:
      type: string
      enum:
      - 10%
      title: ValueOptions
      description: An enumeration.
    QuoteCreateRequest:
      properties:
        quote_id:
          type: string
          title: Quote Id
          description: Optional - Existing quote ID to clone for rewrites.
          example: '100034386'
        quote:
          $ref: '#/components/schemas/QuoteRequest'
      type: object
      title: QuoteCreateRequest
      examples:
      - quote:
          policy_type: DP3
          primary_insured:
            first_name: John
            last_name: Doe
            email: john@doe.com
            date_of_birth: '1980-01-01'
          policy_details:
            occupancy: rental
          properties:
          - address:
              street_address: 1564 Deer Run Pl
              city: Lancaster
              state: OH
              zip_code: '43130'
              county: Fairfield
    ralphie__models__coverage_models__RoofSurfacingLossValuationOptionValueRequest__ValueOptions:
      type: string
      enum:
      - actual_cash_value
      title: ValueOptions
      description: An enumeration.
    LossAssessmentCoverageRequest:
      properties:
        name:
          type: string
          enum:
          - loss_assessment
          title: Name
        config:
          items:
            anyOf:
            - $ref: '#/components/schemas/SelectedValueRequest'
            - $ref: '#/components/schemas/LossAssessmentLimitValueRequest'
          type: array
          title: Config
      additionalProperties: false
      type: object
      required:
      - name
      - config
      title: LossAssessmentCoverageRequest
      description: 'Coverage request can specify just the list of coverages that need to change.

        Anything unspecified is unmodified.

        Coverages are de-selected rather than removed.

        To de-select an optional coverage, set the "Selected" configuration to "no".'
      example:
        name: water_damage_limitation
        config:
        - type: limit
          label: Water Damage Limitation
          value: 10%
        - type: sublimit
          label: Water Damage Limitation - Fungi Rot Sublimit
          value: '5000'
    RentalDurationOptions:
      type: string
      enum:
      - long_term
      - short_term
      title: RentalDurationOptions
      description: An enumeration.
    SelfReportedClaims:
      properties:
        date_of_loss:
          type: string
          format: date
          title: Date of Loss
          description: Approximate date of the loss
          nullable: true
        loss_reason:
          allOf:
          - $ref: '#/components/schemas/LossReason'
          title: Loss Reason
          example: weather
          nullable: true
        loss_amount_dollars:
          type: integer
          exclusiveMinimum: 0.0
          title: Loss Amount in Dollars
          nullable: true
        caused_by_catastrophe:
          allOf:
          - $ref: '#/components/schemas/YesNo'
          title: Loss related to Catastrophe
          nullable: true
      additionalProperties: false
      type: object
      title: SelfReportedClaims
      description: Details of any self-reported claims
    QuotePaymentRequest:
      properties:
        schedule:
          $ref: '#/components/schemas/PaymentScheduleTypes'
        payment_schedule_discount:
          $ref: '#/components/schemas/YesNo'
      type: object
      required:
      - schedule
      title: QuotePaymentRequest
      example:
        schedule: full
    IpodUnderwritingResultNoteFields:
      properties:
        dwelling:
          items:
            type: string
          type: array
          title: Dwelling
          nullable: true
        policy:
          items:
            type: string
          type: array
          title: Policy
          nullable: true
      type: object
      title: IpodUnderwritingResultNoteFields
    Type:
      type: string
      enum:
      - days
      - flat_cents
      title: Type
      description: An enumeration.
    QuoteRequest:
      properties:
        policy_type:
          allOf:
          - $ref: '#/components/schemas/PolicyTypeOptions'
          example: DP3
        insurance_structure:
          $ref: '#/components/schemas/InsuranceStructure'
          nullable: true
        primary_insured:
          $ref: '#/components/schemas/Policyholder'
        additional_named_insured:
          items:
            $ref: '#/components/schemas/AdditionalNamedInsured'
          type: array
          title: Additional Named Insured
          nullable: true
        effective_date:
          type: string
          format: date
          title: Effective Date
          description: Effective date in YYYY-MM-DD format. Defaults to today.
          example: '2022-01-15'
        effective_date_timezone:
          type: string
          title: Effective Date Timezone
          nullable: true
        policy_details:
          $ref: '#/components/schemas/PolicyDetails'
        previous_policy_id:
          type: string
          title: Previous Policy Id
          nullable: true
        renewal_policy_id:
          type: string
          title: Renewal Policy Id
          nullable: true
        renewal_quote_id:
          type: string
          title: Renewal Quote Id
          nullable: true
        renewal_status:
          $ref: '#/components/schemas/RenewalStatus'
          nullable: true
        renewal_start_date:
          type: string
          format: date
          title: Renewal Start Date
          nullable: true
        renewal_end_date:
          type: string
          format: date
          title: Renewal End Date
          nullable: true
        properties:
          items:
            $ref: '#/components/schemas/PropertyRequest'
          type: array
          title: Properties
        policy_coverages:
          items:
            oneOf:
            - $ref: '#/components/schemas/MedicalPaymentsCoverageRequest'
            - $ref: '#/components/schemas/PersonalLiabilityCoverageRequest'
            - $ref: '#/components/schemas/PremisesLiabilityCoverageRequest'
            discriminator:
              propertyName: name
              mapping:
                medical_payments: '#/components/schemas/MedicalPaymentsCoverageRequest'
                personal_liability: '#/components/schemas/PersonalLiabilityCoverageRequest'
                premises_liability: '#/components/schemas/PremisesLiabilityCoverageRequest'
          type: array
          title: Policy Coverages
        payment:
          $ref: '#/components/schemas/QuotePaymentRequest'
          title: QuotePaymentRequest
          nullable: true
        underwriting:
          $ref: '#/components/schemas/QuoteUnderwritingRequest'
          title: QuoteUnderwritingRequest
          nullable: true
      additionalProperties: false
      type: object
      required:
      - policy_type
      - primary_insured
      - policy_details
      title: QuoteRequest
      description: Base quote structure shared by both requests and responses.
    DwellingLossValuationOptionValueRequest:
      properties:
        type:
          type: string
          enum:
          - loss_valuation_option
          title: Type
        value:
          $ref: '#/components/schemas/ralphie__models__coverage_models__DwellingLossValuationOptionValueRequest__ValueOptions'
        label:
          type: string
          title: Label
          nullable: true
        editable:
          type: string
          title: Editable
          nullable: true
      additionalProperties: false
      type: object
      required:
      - type
      - value
      title: DwellingLossValuationOptionValueRequest
    TheftCoverageRequest:
      properties:
        name:
          type: string
          enum:
          - theft
          title: Name
        config:
          items:
            anyOf:
            - $ref: '#/components/schemas/SelectedValueRequest'
            - $ref: '#/components/schemas/LimitValueRequest'
            - $ref: '#/components/schemas/DeductibleValueRequest'
          type: array
          title: Config
      additionalProperties: false
      type: object
      required:
      - name
      - config
      title: TheftCoverageRequest
      description: 'Coverage request can specify just the list of coverages that need to change.

        Anything unspecified is unmodified.

        Coverages are de-selected rather than removed.

        To de-select an optional coverage, set the "Selected" configuration to "no".'
      example:
        name: water_damage_limitation
        config:
        - type: limit
          label: Water Damage Limitation
          value: 10%
        - type: sublimit
          label: Water Damage Limitation - Fungi Rot Sublimit
          value: '5000'
    MineSubsidenceDwellingCoverageRequest:
      properties:
        name:
          type: string
          enum:
          - mine_subsidence_dwelling
          title: Name
        config:
          items:
            anyOf:
            - $ref: '#/components/schemas/SelectedValueRequest'
            - $ref: '#/components/schemas/LimitValueRequest'
            - $ref: '#/components/schemas/DeductibleValueRequest'
          type: array
          title: Config
      additionalProperties: false
      type: object
      required:
      - name
      - config
      title: MineSubsidenceDwellingCoverageRequest
      description: 'Coverage request can specify just the list of coverages that need to change.

        Anything unspecified is unmodified.

        Coverages are de-selected rather than removed.

        To de-select an optional coverage, set the "Selected" configuration to "no".'
      example:
        name: water_damage_limitation
        config:
        - type: limit
          label: Water Damage Limitation
          value: 10%
        - type: sublimit
          label: Water Damage Limitation - Fungi Rot Sublimit
          value: '5000'
    ralphie__models__coverage_models__ExclusionDescriptionValueRequest__ValueOptions:
      type: string
      enum:
      - ''
      - Accessory Dwelling Unit Insured on Another Policy
      - Detached Barn
      - Detached Carport
      - Detached Garage
      - Detached Pool House
      - Detached Shed
      - Detached Shed/Storage Unit
      - Detached Structure
      - Detached Structures Over and/or Partially Over Water
      - Dock and Attached Deck
      title: ValueOptions
      description: An enumeration.
    QuoteResponse:
      properties:
        policy_type:
          allOf:
          - $ref: '#/components/schemas/PolicyTypeOptions'
          example: DP3
        insurance_structure:
          $ref: '#/components/schemas/InsuranceStructure'
          nullable: true
        primary_insured:
          $ref: '#/components/schemas/Policyholder'
        additional_named_insured:
          items:
            $ref: '#/components/schemas/AdditionalNamedInsured'
          type: array
          title: Additional Named Insured
          nullable: true
        effective_date:
          type: string
          format: date
          title: Effective Date
          description: Effective date in YYYY-MM-DD format. Defaults to today.
          example: '2022-01-15'
        effective_date_timezone:
          type: string
          title: Effective Date Timezone
          nullable: true
        policy_details:
          $ref: '#/components/schemas/PolicyDetails'
          title: PolicyDetails
          nullable: true
        updated_at:
          type: string
          format: date-time
          title: Updated At
          nullable: true
        previous_policy_id:
          type: string
          title: Previous Policy Id
          nullable: true
        renewal_policy_id:
          type: string
          title: Renewal Policy Id
          nullable: true
        renewal_quote_id:
          type: string
          title: Renewal Quote Id
          nullable: true
        renewal_status:
          $ref: '#/components/schemas/RenewalStatus'
          nullable: true
        renewal_start_date:
          type: string
          format: date
          title: Renewal Start Date
          nullable: true
        renewal_end_date:
          type: string
          format: date
          title: Renewal End Date
          nullable: true
        properties:
          items:
            $ref: '#/components/schemas/PropertyResponse'
          type: array
          title: Properties
        policy_coverages:
          items:
            $ref: '#/components/schemas/CoverageResponse'
          type: array
          title: Policy Coverages
        payment:
          $ref: '#/components/schemas/QuotePaymentResponse'
          title: QuotePaymentResponse
          nullable: true
        underwriting:
          $ref: '#/components/schemas/QuoteUnderwritingResponse'
          title: QuoteUnderwritingResponse
          nullable: true
        signing_requirements:
          $ref: '#/components/schemas/SigningRequirements'
        agent_ui_url:
          type: string
          title: Agent Ui Url
          description: Direct link to Agent UI, which can be used to complete quote.
          example: https://app.steadily.com/spa/create-policy/?policy_loc={policy_id}
          nullable: true
        errors:
          items:
            $ref: '#/components/schemas/ApiValidationError'
          type: array
          title: Errors
          nullable: true
        carrier:
          type: string
          title: Carrier
        public_policy_id:
          type: string
          title: Public Policy Id
          example: OB3-AZ-100034386
          nullable: true
        quote_id:
          type: string
          title: Quote Id
          example: qte_100034386
        public_quote_id:
          type: string
          title: Public Quote Id
        status:
          $ref: '#/components/schemas/QuoteStatus'
        insurance_score_messages:
          items:
            type: object
          type: array
          title: Insurance Score Messages
          nullable: true
      type: object
      required:
      - policy_type
      - primary_insured
      - properties
      - policy_coverages
      - carrier
      - public_policy_id
      - quote_id
      - public_quote_id
      - status
      title: QuoteResponse
      description: Base response structure, shared by DraftQuote, QuoteOffer, etc.
    ExtendedReplacementCostCoverageRequest:
      properties:
        name:
          type: string
          enum:
          - extended_replacement_cost
          title: Name
        config:
          items:
            anyOf:
            - $ref: '#/components/schemas/SelectedValueRequest'
            - $ref: '#/components/schemas/ExtendedReplacementCostSelectionFactorValueRequest'
          type: array
          title: Config
        parent_coverage:
          type: string
          title: Parent Coverage
      additionalProperties: false
      type: object
      required:
      - name
      - config
      title: ExtendedReplacementCostCoverageRequest
      description: 'Coverage request can specify just the list of coverages that need to change.

        Anything unspecified is unmodified.

        Coverages are de-selected rather than removed.

        To de-select an optional coverage, set the "Selected" configuration to "no".'
      example:
        name: water_damage_limitation
        config:
        - type: limit
          label: Water Damage Limitation
          value: 10%
        - type: sublimit
          label: Water Damage Limitation - Fungi Rot Sublimit
          value: '5000'
    ralphie__models__coverage_models__WaterDamageLimitationSelectionFactorValueRequest__ValueOptions:
      type: string
      enum:
      - 0%
      - 10%
      - 25%
      - 50%
      - 75%
      - 100%
      - '5000'
      title: ValueOptions
      description: An enumeration.
    UwAppQuestion:
      properties:
        name:
          type: string
          title: Name
        prefix:
          type: string
          title: Prefix
          nullable: true
        text:
          items:
            type: string
          type: array
          title: Text
        answer:
          type: string
          title: Answer
          nullable: true
      type: object
      required:
      - name
      - text
      title: UwAppQuestion
    PersonalInjuryLiabilityCoverageRequest:
      properties:
        name:
          type: string
       

# --- truncated at 32 KB (174 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/steadily/refs/heads/main/openapi/steadily-draft-quote-api-openapi.yml