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

# Match a said or read answer to a planning question

> Find what an answer said in words or read from a document means for one planning question, across the same market rater versions as [Plan the next question](/api-reference/market-raters/plan-the-next-question-for-market-rater-versions).

The result is `exact` with the value to store at `path`, `candidates` best first for the person to pick from, or `none`. It never picks between two. A choice's label, value or alias matches exactly; dates take written forms that parse one way, money and limits forms such as `100/300` or `100k`, a full VIN the part its contract keeps (`x-reduce`), checked by its check digit (`x-check`).

Send `answers` when the question's answers depend on earlier ones, as a car's model does on its make.

Needs access to rate every named version and your `raters:run` permission. Matching changes nothing, so the request is safe to repeat.



## OpenAPI

````yaml /openapi.json post /insurance/rating-programs/match
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/match:
    post:
      tags:
        - Market raters
      summary: Match a said or read answer to a planning question
      description: >-
        Find what an answer said in words or read from a document means for one
        planning question, across the same market rater versions as [Plan the
        next
        question](/api-reference/market-raters/plan-the-next-question-for-market-rater-versions).


        The result is `exact` with the value to store at `path`, `candidates`
        best first for the person to pick from, or `none`. It never picks
        between two. A choice's label, value or alias matches exactly; dates
        take written forms that parse one way, money and limits forms such as
        `100/300` or `100k`, a full VIN the part its contract keeps
        (`x-reduce`), checked by its check digit (`x-check`).


        Send `answers` when the question's answers depend on earlier ones, as a
        car's model does on its make.


        Needs access to rate every named version and your `raters:run`
        permission. Matching changes nothing, so the request is safe to repeat.
      operationId: matchRatingProgramAnswer
      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
                      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
                      - version
                    additionalProperties: false
                  minItems: 1
                  maxItems: 10
                  description: >-
                    Pinned program versions. 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`.
                value:
                  nullable: true
                  description: 'The answer as said or read: text, or a value.'
                answers:
                  type: object
                  additionalProperties:
                    nullable: true
                  description: >-
                    Every answer so far. Send it when the card’s answers depend
                    on earlier ones, such as a car model on its make.
              required:
                - programs
                - path
              additionalProperties: false
      responses:
        '200':
          description: The matched value, the candidates, or none.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2RatingProgramMatch'
        '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: >-
            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:
    V2RatingProgramMatch:
      anyOf:
        - type: object
          properties:
            exact:
              nullable: true
              description: The stored value to answer with.
          additionalProperties: false
        - type: object
          properties:
            candidates:
              type: array
              items:
                type: object
                properties:
                  value:
                    nullable: true
                  label:
                    type: string
                required:
                  - label
              description: The answers that may be meant, best first.
          required:
            - candidates
          additionalProperties: false
        - type: object
          properties:
            none:
              type: boolean
              enum:
                - true
          required:
            - none
          additionalProperties: false
    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.