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

# Find regulatory documents

> Find US statutes, regulations, bulletins, orders, bills, filing requirements, form checklists and NAIC material. With `query`, results are ranked by relevance from a bounded window of the best 200 word matches and the best 200 meaning matches, so `exhaustive` is false and other documents can match. Without `query`, every matching document is listed in a fixed `sort` order; follow `nextCursor` to the end. Different filters combine with AND; repeated values of one filter combine with OR. No date bounds apply unless you send them. To poll for new documents, use `firstSeenFrom` with sort=-firstSeenAt, overlap each poll and drop IDs you have seen. Read one document with getRegulatoryDocument and its text with getRegulatoryDocumentText. Charges: with `query`, a nonempty page costs $0.02 plus $0.003 per returned document; without `query`, $0.003 per returned document. Empty pages and failed requests are free.



## OpenAPI

````yaml /openapi.json get /insurance/regulatory-documents
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/regulatory-documents:
    get:
      tags:
        - Regulatory documents
      summary: Find regulatory documents
      description: >-
        Find US statutes, regulations, bulletins, orders, bills, filing
        requirements, form checklists and NAIC material. With `query`, results
        are ranked by relevance from a bounded window of the best 200 word
        matches and the best 200 meaning matches, so `exhaustive` is false and
        other documents can match. Without `query`, every matching document is
        listed in a fixed `sort` order; follow `nextCursor` to the end.
        Different filters combine with AND; repeated values of one filter
        combine with OR. No date bounds apply unless you send them. To poll for
        new documents, use `firstSeenFrom` with sort=-firstSeenAt, overlap each
        poll and drop IDs you have seen. Read one document with
        getRegulatoryDocument and its text with getRegulatoryDocumentText.
        Charges: with `query`, a nonempty page costs $0.02 plus $0.003 per
        returned document; without `query`, $0.003 per returned document. Empty
        pages and failed requests are free.
      operationId: listRegulatoryDocuments
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
            description: Maximum items to return, 1–100. Default 50.
          required: false
          description: Maximum items to return, 1–100. Default 50.
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            maxLength: 128
            description: >-
              Opaque nextCursor from the previous page. Repeat the same filters
              and limit. Expires 24 hours after the first page.
          required: false
          description: >-
            Opaque nextCursor from the previous page. Repeat the same filters
            and limit. Expires 24 hours after the first page.
          name: cursor
          in: query
        - schema:
            type: string
            minLength: 1
            maxLength: 500
            description: >-
              Words or a question to rank documents by relevance. Results come
              from a bounded window of the best word and meaning matches, so
              exhaustive is false. Omit it to list every matching document in a
              fixed order.
          required: false
          description: >-
            Words or a question to rank documents by relevance. Results come
            from a bounded window of the best word and meaning matches, so
            exhaustive is false. Omit it to list every matching document in a
            fixed order.
          name: query
          in: query
        - schema:
            anyOf:
              - type: string
                pattern: ^(?:[A-Za-z]{2}|[Aa][Ll][Ll])$
              - type: array
                items:
                  type: string
                  pattern: ^(?:[A-Za-z]{2}|[Aa][Ll][Ll])$
                minItems: 1
                maxItems: 100
            description: >-
              Two-letter jurisdiction codes, or ALL for national NAIC material.
              Repeat for OR.
          required: false
          description: >-
            Two-letter jurisdiction codes, or ALL for national NAIC material.
            Repeat for OR.
          name: state
          in: query
        - schema:
            anyOf:
              - $ref: '#/components/schemas/V2RegulatoryDocumentKind'
              - type: array
                items:
                  $ref: '#/components/schemas/V2RegulatoryDocumentKind'
                minItems: 1
                maxItems: 100
            description: Document kinds. Repeat for OR.
          required: false
          description: Document kinds. Repeat for OR.
          name: kind
          in: query
        - schema:
            anyOf:
              - $ref: '#/components/schemas/V2RegulatoryDocumentStatus'
              - type: array
                items:
                  $ref: '#/components/schemas/V2RegulatoryDocumentStatus'
                minItems: 1
                maxItems: 100
            description: >-
              Exact statuses. Repeat for OR. Documents without a status never
              match.
          required: false
          description: >-
            Exact statuses. Repeat for OR. Documents without a status never
            match.
          name: status
          in: query
        - schema:
            anyOf:
              - type: string
                minLength: 1
                maxLength: 20
                pattern: ^[A-Za-z0-9.]+$
                description: >-
                  Exact TOI value, such as 17.0 or 21.1. Also H (health), L
                  (life), T (title) and ALL (all lines). 21.0 does not match
                  21.1, and ALL matches only documents tagged ALL.
              - type: array
                items:
                  type: string
                  minLength: 1
                  maxLength: 20
                  pattern: ^[A-Za-z0-9.]+$
                  description: >-
                    Exact TOI value, such as 17.0 or 21.1. Also H (health), L
                    (life), T (title) and ALL (all lines). 21.0 does not match
                    21.1, and ALL matches only documents tagged ALL.
                minItems: 1
                maxItems: 100
            description: >-
              Exact TOI values (OR). 21.0 does not match 21.1. H, L, T and ALL
              are separate values; ALL matches only documents tagged ALL.
              Statutes and most orders have no TOI.
          required: false
          description: >-
            Exact TOI values (OR). 21.0 does not match 21.1. H, L, T and ALL are
            separate values; ALL matches only documents tagged ALL. Statutes and
            most orders have no TOI.
          name: toi
          in: query
        - schema:
            anyOf:
              - $ref: '#/components/schemas/V2RegulatoryImpactTag'
              - type: array
                items:
                  $ref: '#/components/schemas/V2RegulatoryImpactTag'
                minItems: 1
                maxItems: 100
            description: Impact tags. Repeat for OR.
          required: false
          description: Impact tags. Repeat for OR.
          name: impact
          in: query
        - schema:
            type: string
            minLength: 1
            maxLength: 500
            description: >-
              Exact publisher identifier, such as 28 TAC § 5.7013. Identifiers
              repeat across documents, so this returns a list.
          required: false
          description: >-
            Exact publisher identifier, such as 28 TAC § 5.7013. Identifiers
            repeat across documents, so this returns a list.
          name: identifier
          in: query
        - schema:
            type: string
            format: date
            description: Inclusive lower bound on publishedDate. Drops undated documents.
          required: false
          description: Inclusive lower bound on publishedDate. Drops undated documents.
          name: publishedDateFrom
          in: query
        - schema:
            type: string
            format: date
            description: Inclusive upper bound on publishedDate. Drops undated documents.
          required: false
          description: Inclusive upper bound on publishedDate. Drops undated documents.
          name: publishedDateTo
          in: query
        - schema:
            type: string
            format: date-time
            description: >-
              Inclusive lower bound on firstSeenAt, as an RFC 3339 timestamp.
              Use it with sort=-firstSeenAt to poll for new documents.
          required: false
          description: >-
            Inclusive lower bound on firstSeenAt, as an RFC 3339 timestamp. Use
            it with sort=-firstSeenAt to poll for new documents.
          name: firstSeenFrom
          in: query
        - schema:
            type: string
            enum:
              - '-firstSeenAt'
              - '-publishedDate'
              - identifier
            description: >-
              Fixed order without query. -firstSeenAt (default) and
              -publishedDate are newest first; identifier is ascending. Missing
              values sort last, then ID. Not allowed with query, which ranks by
              relevance.
          required: false
          description: >-
            Fixed order without query. -firstSeenAt (default) and -publishedDate
            are newest first; identifier is ascending. Missing values sort last,
            then ID. Not allowed with query, which ranks by relevance.
          name: sort
          in: query
      responses:
        '200':
          description: A page of documents.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2RegulatoryDocumentList'
        '400':
          description: >-
            invalid_request or invalid_cursor. Restart without cursor after
            expiry or a changed query, filter or limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '401':
          description: Authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '403':
          description: 'forbidden: SERFF view permission, which covers regulatory documents.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '503':
          description: >-
            temporarily_unavailable: the search embedding, a 60-second statement
            timeout or the cursor store failed. Retry after Retry-After seconds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
      security:
        - bearerAuth: []
components:
  schemas:
    V2RegulatoryDocumentKind:
      type: string
      enum:
        - bulletin
        - circular_letter
        - data_call
        - examination_standards
        - filing_requirement
        - form_checklist
        - guideline
        - informational_memo
        - legislative_bill
        - mcas_scorecard
        - meeting_materials
        - model_law
        - model_law_adoption
        - news_release
        - order
        - reference_document
        - regulation
        - statute
        - survey
      description: >-
        Document kind. New values can be added; tolerate values you do not
        recognize.
    V2RegulatoryDocumentStatus:
      type: string
      enum:
        - final
        - informational
        - emergency
        - proposed
        - withdrawn
        - superseded
        - introduced
        - passed_chamber
        - enacted
        - vetoed
        - failed
      description: >-
        Lifecycle status, one flat set across kinds. Bills use introduced,
        passed_chamber, enacted, vetoed, withdrawn and failed; other kinds use
        final, informational, emergency, proposed, withdrawn and superseded. New
        values can be added; tolerate values you do not recognize.
    V2RegulatoryImpactTag:
      type: string
      enum:
        - rating
        - underwriting
        - claims
        - forms
        - market_conduct
        - licensing
        - data_reporting
        - consumer_protection
        - fraud
        - reinsurance
        - solvency
        - ai_ml
        - climate
        - cybersecurity
      description: Impact area assigned during classification.
    V2RegulatoryDocumentList:
      type: object
      properties:
        documents:
          type: array
          items:
            $ref: '#/components/schemas/V2RegulatoryDocumentListItem'
        exhaustive:
          type: boolean
          description: >-
            False with query: results come from a bounded relevance window, and
            other documents can match. True without query: following nextCursor
            reaches every matching document.
        nextCursor:
          type: string
          nullable: true
          description: Cursor for the next page, or null on the last.
      required:
        - documents
        - exhaustive
        - nextCursor
    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
              description: Dataset needed for dataset_not_enabled.
          required:
            - code
    V2RegulatoryDocumentListItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: >-
            Document identity. A duplicate cleanup can delete an ID; find the
            document again.
        state:
          type: string
          description: Two-letter jurisdiction code, or ALL for national NAIC material.
        kind:
          $ref: '#/components/schemas/V2RegulatoryDocumentKind'
        identifier:
          type: string
          nullable: true
          description: >-
            The publisher's identifier, such as 28 TAC § 5.7013. Null when the
            source gave none. Not unique within a state.
        title:
          type: string
          description: The source title. Statute titles are path slugs today.
        status:
          type: string
          nullable: true
          enum:
            - final
            - informational
            - emergency
            - proposed
            - withdrawn
            - superseded
            - introduced
            - passed_chamber
            - enacted
            - vetoed
            - failed
            - null
          description: >-
            Lifecycle status, one flat set across kinds. Bills use introduced,
            passed_chamber, enacted, vetoed, withdrawn and failed; other kinds
            use final, informational, emergency, proposed, withdrawn and
            superseded. New values can be added; tolerate values you do not
            recognize. Null means the source gave none.
        publishedDate:
          type: string
          nullable: true
          format: date
          description: >-
            The publisher's date, as stored. It can be null or wrong. A
            year-only date is stored as 1 January.
        firstSeenAt:
          type: string
          format: date-time
          description: >-
            When the corpus first stored this document, UTC. Backfills and
            changed source URLs can make an old document look new.
        toiCodes:
          type: array
          nullable: true
          items:
            type: string
          description: >-
            TOI values, including H, L, T and ALL. Null means never classified;
            [] means classified and none apply.
        impactTags:
          type: array
          nullable: true
          items:
            type: string
          description: >-
            Impact tags, normally values of V2RegulatoryImpactTag; a few stored
            tags fall outside that set. Same null and [] rule as toiCodes.
        summary:
          type: string
          nullable: true
          description: A research aid, not the source. Null for most documents.
      required:
        - id
        - state
        - kind
        - identifier
        - title
        - status
        - publishedDate
        - firstSeenAt
        - toiCodes
        - impactTags
        - summary
    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.