> ## Documentation Index
> Fetch the complete documentation index at: https://docs.canary.effectiveai.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Search the answers of a planning question

> Find the answers of any planning question of kind `search` that match what the person typed, by the card's path, across the same market rater versions as the plan. Search is the one lenient reading of what was typed; saving takes a listed value or label exactly.

Ranking: an exact label, an exact other name, a label that starts with the query, a label each typed word starts a word of, the same two for the other names, then a small misspelling (one edit for a word of four to seven letters, two from eight), nearer first. Ties keep the list's own order. Case, spacing and punctuation are folded. When `query` holds a word and nothing matches, `noMatch` is true and `choices` holds the answers the query says in full and adds to, then the list's catch-all answers.

Send `answers` when the question's answers depend on earlier ones. Searching changes nothing, so the request is safe to repeat.



## OpenAPI

````yaml /openapi.json post /insurance/rating-programs/search
openapi: 3.0.3
info:
  title: Effective API
  version: 2.0.0
  description: The public Effective REST API. Authenticate using an Effective API key.
servers:
  - url: https://api.canary.effectiveai.app/api/v2
    description: Canary
security:
  - bearerAuth: []
paths:
  /insurance/rating-programs/search:
    post:
      tags:
        - Market raters
      summary: Search the answers of a planning question
      description: >-
        Find the answers of any planning question of kind `search` that match
        what the person typed, by the card's path, across the same market rater
        versions as the plan. Search is the one lenient reading of what was
        typed; saving takes a listed value or label exactly.


        Ranking: an exact label, an exact other name, a label that starts with
        the query, a label each typed word starts a word of, the same two for
        the other names, then a small misspelling (one edit for a word of four
        to seven letters, two from eight), nearer first. Ties keep the list's
        own order. Case, spacing and punctuation are folded. When `query` holds
        a word and nothing matches, `noMatch` is true and `choices` holds the
        answers the query says in full and adds to, then the list's catch-all
        answers.


        Send `answers` when the question's answers depend on earlier ones.
        Searching changes nothing, so the request is safe to repeat.
      operationId: searchRatingProgramAnswers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                programs:
                  type: array
                  items:
                    type: object
                    properties:
                      programId:
                        type: string
                      version:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                        description: >-
                          Leave it out to read the program at the version this
                          server rates with: the newest published version its
                          rating engine can load. The response names it. Send a
                          version only to pin one.
                      title:
                        type: string
                        maxLength: 100
                        description: >-
                          How the host names this program to the person, such as
                          `GEICO`. Defaults to the program’s name.
                    required:
                      - programId
                    additionalProperties: false
                  minItems: 1
                  maxItems: 10
                  description: >-
                    The programs, each at the version this server rates with or
                    at a pinned version. Each reads only the paths its own
                    contract declares.
                path:
                  type: string
                  maxLength: 500
                  pattern: >-
                    ^[A-Za-z_][A-Za-z0-9_]*(\[\d+\])*(\.[A-Za-z_][A-Za-z0-9_]*(\[\d+\])*)*$
                  description: The card’s path, such as `Policy.drivers[0].occupation`.
                query:
                  type: string
                  maxLength: 200
                  default: ''
                  description: What the person typed.
                limit:
                  type: integer
                  minimum: 1
                  maximum: 100
                answers:
                  type: object
                  additionalProperties:
                    nullable: true
                  description: >-
                    Every answer so far, when the card’s answers depend on
                    earlier ones (a car’s model on its make). An answer stored
                    at `path` is left out when the programs are rated.
                context:
                  type: object
                  additionalProperties:
                    anyOf:
                      - type: string
                        maxLength: 200
                      - type: number
                      - type: boolean
                  description: >-
                    The plan request’s `context`. Send what the plan was sent,
                    so the card is searched in the answers the plan narrowed it
                    to.
                asOf:
                  type: string
                  format: date
                  description: The plan request’s `asOf`.
              required:
                - programs
                - path
              additionalProperties: false
      responses:
        '200':
          description: Up to `limit` answers, best first.
          content:
            application/json:
              schema:
                type: object
                properties:
                  choices:
                    type: array
                    items:
                      nullable: true
                    description: >-
                      Each `{value, label}`, with `catchAll` where it stands for
                      any answer the list does not name.
                  noMatch:
                    type: boolean
                  notAsked:
                    type: array
                    items:
                      type: object
                      properties:
                        programId:
                          type: string
                        version:
                          type: integer
                          minimum: 0
                          exclusiveMinimum: true
                        reason:
                          type: object
                          properties:
                            code:
                              type: string
                              nullable: true
                              description: >-
                                A stable code to word it by: the program’s own
                                (`LIST-MAX`, `CORE-1`), or `CHOICE_REQUIRED`
                                (the program needs a value for a choice that was
                                confirmed without one), `NOTHING_TO_ASK` (it is
                                not settled and nothing asks for what it needs),
                                or why the program could not be read or rated:
                                `rater_unavailable` (its engine could not load
                                or its rater did not answer),
                                `rater_overloaded`, `rate_timeout`,
                                `internal_evaluation_fault`, `conflict` (its
                                engine is not the one its version names) or
                                `no_input_contract`. Null when the program gave
                                none.
                            message:
                              type: string
                              description: Why, in the program’s or the planner’s words.
                          required:
                            - code
                            - message
                          additionalProperties: false
                          description: >-
                            Why it could not be asked, as a failed program’s
                            `state.reason`.
                      required:
                        - programId
                        - version
                        - reason
                      additionalProperties: false
                    description: >-
                      The programs that could not be asked: one that could not
                      be read is asked nothing, and one that could not rate
                      `answers` gave none of the choices they narrow. The match
                      is the other programs’ alone, so an answer only these
                      programs take reads as `none`. Absent when every program
                      was asked.
                required:
                  - choices
                additionalProperties: false
        '400':
          description: Invalid request or cursor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '401':
          description: Authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '403':
          description: >-
            Your organization’s access to the rater, or your permission, is
            missing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '404':
          description: The rater, version or package is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '409':
          description: >-
            version_not_loadable: this server’s rating engine cannot load the
            version; it was built for another release of the engine. Leave the
            version out to use the newest version this server loads; with no
            version named, none of the newest loads. conflict: the engine that
            serves this version differs from the engine it records. Retry later;
            if it persists, contact Effective.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '413':
          description: The inputs exceed 1 MiB.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '415':
          description: The request body is not application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '422':
          description: >-
            invalid_inputs or business_rejection: violations lists each failed
            constraint. evaluation_failed: the engine could not rate the inputs.
          content:
            application/json:
              example:
                code: business_rejection
                error: The program doesn't cover rideshare use.
                businessCode: RIDESHARE
                violations:
                  - code: RIDESHARE
                    message: The program doesn't cover rideshare use.
                    path: Policy.vehicles[0].rideshare
                    value: true
                    constraint: 'rideshare: where not self'
                    cite: manual:anchor "eligibility"
                violationsTruncated: false
                requestId: 1793385750835-0
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '429':
          description: Too many requests, or no rating capacity. Retry after Retry-After.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '500':
          description: Unexpected failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '503':
          description: A dependency is unavailable. Retry after Retry-After.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
      security:
        - bearerAuth: []
components:
  schemas:
    V2CodedError:
      allOf:
        - $ref: '#/components/schemas/V2Error'
        - type: object
          properties:
            code:
              type: string
              minLength: 1
              description: Stable error code. Clients must tolerate unknown future codes.
            details:
              type: array
              items:
                type: object
                properties:
                  location:
                    type: string
                    enum:
                      - path
                      - query
                      - header
                      - body
                  path:
                    type: array
                    items:
                      type: string
                      maxLength: 64
                    maxItems: 12
                  code:
                    type: string
                    enum:
                      - required
                      - invalid_type
                      - invalid_value
                      - unknown_field
                  message:
                    type: string
                    minLength: 1
                    maxLength: 200
                required:
                  - location
                  - path
                  - code
                  - message
              minItems: 1
              maxItems: 20
              description: Bounded safe validation issues; may omit some invalid fields.
            requestId:
              type: string
              minLength: 1
              maxLength: 128
              description: >-
                Existing server correlation for this HTTP attempt, when
                available.
            dataset:
              type: string
              enum:
                - naic
                - osha
              description: Dataset needed for dataset_not_enabled.
            businessCode:
              type: string
              description: The rater’s own refusal code, for business_rejection.
            violations:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                    description: Authored or built-in constraint code
                  message:
                    type: string
                    description: Authored message for the failed constraint
                  path:
                    type: string
                    description: Input path of the offending value; empty for the request
                  value:
                    nullable: true
                    description: Offending input value, size-bounded by the runtime
                  constraint:
                    type: string
                    description: The constraint the value failed, as text
                  cite:
                    type: string
                    nullable: true
                    description: >-
                      Filing citation of the constraint, when the source cites
                      one
                required:
                  - code
                  - message
                  - path
                  - value
                  - constraint
                  - cite
                additionalProperties: false
              maxItems: 256
              description: >-
                Each input constraint the submission failed, for invalid_inputs
                and business_rejection.
            violationsTruncated:
              type: boolean
              description: >-
                True when the rater reported more violations than violations
                holds.
            executionId:
              type: string
              description: >-
                The recorded execution of a failed rating, for rater rating
                failures.
            accessUrl:
              type: string
              nullable: true
              format: uri
              description: Not currently returned.
          required:
            - code
    V2Error:
      type: object
      properties:
        error:
          type: string
          minLength: 1
          description: Human-readable explanation of the failure.
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Effective API key. Send Authorization: Bearer sk-eai-...'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.