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

# What points at this act

> Inbound citations: provisions elsewhere in the corpus that name this act.

**Cost: 2 credits.** A confident "nothing cites this" is the answer and is
charged.

🔴 **Matched on the act's TITLE, not on an identifier**, because that is what
the corpus stores. A citing document that wrote the title differently is
missed, and the publisher's own line breaks make that measurable. Read
`matchBasis` and treat the result as a floor rather than a complete set.

A foundational act can be cited by thousands of provisions, so the answer is
PAGED with `page` + `pageSize`, the same as the rest of this API.

`total` is the number of distinct citing PROVISIONS across all pages, not the
size of the page you were served (`returned`) and not the number of matching
passages. One provision is stored as many passages: the Indian Penal Code
matches 9,586 passages belonging to 1,367 distinct provisions, and `total` is
the 1,367. `totalIsExact` goes false only if the corpus scan behind that count
hits its ceiling, which no act in the corpus currently reaches.



## OpenAPI

````yaml https://api.vaquill.ai/in/openapi.json get /api/v1/in/acts/{act_id}/cited-by
openapi: 3.1.0
info:
  title: Vaquill India API
  description: >-
    Public API for Indian primary law: Central and State Acts, the instruments
    of the principal regulators, and their individual sections.


    **Authentication**: Pass your API key via the `Authorization: Bearer
    vq_key_...` header. The same key works against the US API; the two share one
    credit balance.


    **Credits**: Each call costs API credits. See `GET
    /api/v1/api-credits/pricing` for the full pricing matrix.


    ## Coverage


    | Layer | Volume |

    |---|---|

    | Enactments (Central, State and UT) | 22,265 |

    | Individually addressable provisions | 1,098,577 |

    | Regulator instruments | roughly half the corpus |


    Regulators covered include SEBI, RBI, MCA, IRDAI, TRAI, DGFT, MOEFCC and
    CPCB.


    `sourceUrl` points at the publisher's own document where we hold a live one,
    and is `null` otherwise. India Code migrated hosts in August 2026 and
    re-minted its identifiers, so links into the old site no longer resolve; we
    return nothing rather than a link that 404s. `pdfUrl` and `textUrl` are
    served from our own mirror and are unaffected.


    ## Scope


    This document describes the **India** surface only. US statutes are a
    separate document at `/external/openapi.json`, so an MCP client configured
    here sees Indian tools and nothing else.
  version: 1.0.0
  contact:
    name: Vaquill API Support
    url: https://www.vaquill.ai
    email: support@vaquill.ai
  license:
    name: Proprietary
    url: https://www.vaquill.ai/terms
  termsOfService: https://www.vaquill.ai/terms
servers:
  - url: https://api.vaquill.ai
    description: Production
security:
  - ApiKeyAuth: []
paths:
  /api/v1/in/acts/{act_id}/cited-by:
    get:
      tags:
        - Indian Acts and Legislation
      summary: What points at this act
      description: >-
        Inbound citations: provisions elsewhere in the corpus that name this
        act.


        **Cost: 2 credits.** A confident "nothing cites this" is the answer and
        is

        charged.


        🔴 **Matched on the act's TITLE, not on an identifier**, because that is
        what

        the corpus stores. A citing document that wrote the title differently is

        missed, and the publisher's own line breaks make that measurable. Read

        `matchBasis` and treat the result as a floor rather than a complete set.


        A foundational act can be cited by thousands of provisions, so the
        answer is

        PAGED with `page` + `pageSize`, the same as the rest of this API.


        `total` is the number of distinct citing PROVISIONS across all pages,
        not the

        size of the page you were served (`returned`) and not the number of
        matching

        passages. One provision is stored as many passages: the Indian Penal
        Code

        matches 9,586 passages belonging to 1,367 distinct provisions, and
        `total` is

        the 1,367. `totalIsExact` goes false only if the corpus scan behind that
        count

        hits its ceiling, which no act in the corpus currently reaches.
      operationId: india_act_cited_by
      parameters:
        - name: act_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 200
            pattern: ^[a-zA-Z0-9_-]+$
            description: Act identifier, as returned by search, /list or /resolve.
            examples:
              - IND_state_17068
            title: Act Id
          description: Act identifier, as returned by search, /list or /resolve.
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            description: 1-based page number.
            examples:
              - 1
            default: 1
            title: Page
          description: 1-based page number.
        - name: pageSize
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 100
                minimum: 1
              - type: 'null'
            description: Rows per page (1-100). Defaults to 25.
            examples:
              - 25
            title: Pagesize
          description: Rows per page (1-100). Defaults to 25.
        - name: limit
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 100
                minimum: 1
              - type: 'null'
            description: >-
              DEPRECATED alias for `pageSize`, kept working for clients written
              against the original shape. Send one or the other, not both.
            deprecated: true
            examples:
              - 25
            title: Limit
          description: >-
            DEPRECATED alias for `pageSize`, kept working for clients written
            against the original shape. Send one or the other, not both.
          deprecated: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActCitedByResponse'
              example:
                actId: IND_state_17068
                title: The Factories Act, 1948
                citation: The Factories Act, 1948
                citers:
                  - actId: INC_597400
                    title: The Tamil Nadu Lifts and Escalators Rules,1997
                    citation: The Tamil Nadu Lifts and Escalators Rules,1997, s. 3
                    sectionNumber: '3'
                    sectionTitle: >-
                      Documents to be enclosed herewith along with renewal
                      application:
                  - actId: IND_state_12592
                    title: The C.G. SHOPS & ESTABLISHMENTS ACT, 1958
                    citation: The C.G. SHOPS & ESTABLISHMENTS ACT, 1958, s. 3
                    sectionNumber: '3'
                    sectionTitle: >-
                      Act not applicable to certain persons and establishment —
                      (1) Nothing in this Act
                total: 884
                totalIsExact: true
                returned: 3
                page: 1
                pageSize: 3
                hasMore: true
                truncated: true
                matchBasis: publisher_title
                note: >-
                  Edges are matched on the act's TITLE as the publisher wrote
                  it, because that is what the corpus stores. A citing document
                  that spelled the title differently is not found, and the
                  publisher's own line breaks make this measurable: one act can
                  appear as two dist…
                meta:
                  processingTimeMs: 1390.7
                  creditsConsumed: 2
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '402':
          description: Insufficient credits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '403':
          description: Key lacks the research:read scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '404':
          description: No such act or provision
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '422':
          description: Unrecognised or conflicting parameter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiDetailError'
components:
  schemas:
    ActCitedByResponse:
      properties:
        actId:
          type: string
          title: Actid
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
        citation:
          anyOf:
            - type: string
            - type: 'null'
          title: Citation
        citers:
          items:
            $ref: '#/components/schemas/CitedByRow'
          type: array
          title: Citers
        total:
          type: integer
          title: Total
          description: >-
            Distinct citing PROVISIONS across all pages, not rows on this page
            (that is `returned`) and not matching passages. One provision can be
            stored as many passages: the Indian Penal Code matches 9,586
            passages belonging to 1,367 distinct provisions, and this is the
            1,367.
        totalIsExact:
          type: boolean
          title: Totalisexact
          description: >-
            False when the corpus scan behind `total` hit its ceiling, which
            makes `total` a floor rather than a count. True on every act in the
            corpus today: the ceiling sits above the largest citing set
            measured, the Companies Act, 2013 at 53,699 passages.
        returned:
          type: integer
          title: Returned
          description: Rows in `citers` on THIS page.
        page:
          type: integer
          title: Page
          description: 1-based page this response answers.
        pageSize:
          type: integer
          title: Pagesize
          description: Rows per page requested.
        hasMore:
          type: boolean
          title: Hasmore
          description: True when a further page of citing provisions exists.
        truncated:
          type: boolean
          title: Truncated
          description: >-
            DEPRECATED, kept so an existing client does not break. True when
            `hasMore` is true or `totalIsExact` is false. Read those two
            instead: this one field cannot tell 'there is a page 2' apart from
            'we stopped counting'.
        matchBasis:
          type: string
          title: Matchbasis
          description: >-
            `publisher_title`: edges are matched on the act's title as the
            publisher wrote it, so treat the result as a floor.
        note:
          anyOf:
            - type: string
            - type: 'null'
          title: Note
        meta:
          $ref: '#/components/schemas/Meta'
      type: object
      required:
        - actId
        - total
        - totalIsExact
        - returned
        - page
        - pageSize
        - hasMore
        - truncated
        - matchBasis
        - meta
      title: ActCitedByResponse
    ApiDetailError:
      properties:
        detail:
          type: string
          title: Detail
          description: >-
            Human-readable reason, safe to surface to an end user. Branch on the
            HTTP status rather than on this string: the wording is not part of
            the contract and may be reworded, but 401 (bad key), 402 (out of
            credits), 403 (missing scope), 404 (no such resource) and 429 (rate
            limited) are stable.
          examples:
            - Insufficient API credits.
      type: object
      required:
        - detail
      title: ApiDetailError
      description: |-
        Error envelope the API actually returns.

        All errors (401/402/403/404/422/429/5xx) come back as a single
        `detail` string (FastAPI default), e.g. `{"detail": "Insufficient API
        credits."}`. Documenting the real shape so client code can rely on it.
    CitedByRow:
      properties:
        actId:
          type: string
          title: Actid
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
        citation:
          anyOf:
            - type: string
            - type: 'null'
          title: Citation
        sectionNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Sectionnumber
        sectionTitle:
          anyOf:
            - type: string
            - type: 'null'
          title: Sectiontitle
      type: object
      required:
        - actId
      title: CitedByRow
    Meta:
      properties:
        processingTimeMs:
          type: number
          title: Processingtimems
          description: >-
            Server-side time for this request in milliseconds, excluding network
            transit. Not billed on.
          default: 0
          examples:
            - 142.7
        creditsConsumed:
          type: number
          title: Creditsconsumed
          description: >-
            Credits actually charged. Read this rather than assuming the list
            price: refunded work bills 0.
          default: 0
          examples:
            - 2
      type: object
      title: Meta
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: vq_key_*
      description: >-
        API key issued from the developer dashboard. Pass as `Authorization:
        Bearer vq_key_...`

````