> ## Documentation index
> Fetch the complete documentation index at: https://context7.com/docs/llms.txt
> Ask it with GET https://context7.com/docs/ask?q=<keywords or question>. Short keywords rank best.
> Use these to discover all available pages before exploring further.
> Feature requests: https://context7.com/docs/resources/feature-requests.md lists what users asked for and how to vote for a request or add one.
> Page rating: `GET https://context7.com/docs/feedback?path=/docs/api-reference/ask-sites/verify-an-ask-site&helpful=true` (or `false`) records whether this page helped. An optional `comment` (URL-encoded, at most 500 characters) says what was missing or wrong. It is anonymous and needs no key. Comments hold no code, secrets or personal data.

# Verify an Ask site

> Fetch the site's URL and look for the verification tag in `<head>` and the note (with this site's endpoint) in `<body>`; both are required. A site that does not verify is not an error: the response is 200 with `verified: false` and the reason in `data.verification.reason`. A verified site stays verified. Verification starts indexing the site into Context7 in the background; read `data.indexStatus` (or get the site) to follow it. Calling verify again after a failed index starts a new one. Owner or admin.

`POST /v2/teamspaces/{teamspaceId}/ask-sites/{siteKey}/verify`

## OpenAPI

````yaml https://context7.com/openapi.json post /v2/teamspaces/{teamspaceId}/ask-sites/{siteKey}/verify
openapi: 3.0.0
info:
  title: Context7 Public API
  description: The Context7 Public API provides programmatic access to library
    documentation and search functionality. Get up-to-date documentation and
    code examples for any library.
  version: 2.0.0
  contact:
    name: Context7 Support
    url: https://context7.com
    email: support@context7.com
servers:
  - url: https://context7.com/api
    description: Production server
tags:
  - name: Search
    description: Search for libraries in the Context7 database
  - name: Context
    description: Retrieve documentation context for queries
  - name: Ask
    description: Answer questions from a website registered with Context7 Ask
  - name: Refresh
    description: Refresh existing libraries to fetch latest documentation
  - name: Policies
    description: Manage teamspace access policies and filters
  - name: Add Library
    description: Submit new libraries for documentation processing
  - name: Metrics
    description: Retrieve usage metrics for libraries
  - name: Usage
    description: See member and teamspace API usage
  - name: Teamspaces
    description: Teamspaces the caller is a member of. The management API
      (`/v2/teamspaces/*`) accepts a Context7 API key created with management
      access (other keys get 403 `management_access_required`), which reaches
      only its own teamspace, or an OAuth token issued for the Context7 Admin
      MCP server (`https://admin.mcp.context7.com/mcp`), which reaches every
      teamspace of the user. A browser session is not accepted.
  - name: Teamspace Admin
    description: Members, invitations, rules, library policies and requests, usage
      and the spending limit of a teamspace.
  - name: Teamspace Libraries
    description: "A teamspace's libraries: its private sources and the libraries it
      has claimed. Add, refresh, configure, version, claim and remove them, and
      read their parse state and usage. A library id `/owner/repo` is two path
      segments."
  - name: Docs7 Sites
    description: 'Docs7 documentation sites of a teamspace: settings, custom
      domains, deployments, previews and the Docs7 agents. Any member can read;
      owners and admins can change; developers can add a site, publish one added
      for the agents only, and rebuild. Sites deployed with the `docs7 deploy`
      CLI have `source: "local"`; operations marked GitHub-only answer 404 for
      them.'
  - name: Docs7 Analytics
    description: "Traffic of one Docs7 site: visitors, AI crawlers, searches,
      assistant questions and page feedback. Docs7 Free reads the last 7 days,
      Docs7 Pro the last 90."
  - name: Ask Sites
    description: "Manage a teamspace's Context7 Ask sites: add, verify, remove, and
      read their analytics and question log"
paths:
  /v2/teamspaces/{teamspaceId}/ask-sites/{siteKey}/verify:
    post:
      tags:
        - Ask Sites
      summary: Verify an Ask site
      description: "Fetch the site's URL and look for the verification tag in `<head>`
        and the note (with this site's endpoint) in `<body>`; both are required.
        A site that does not verify is not an error: the response is 200 with
        `verified: false` and the reason in `data.verification.reason`. A
        verified site stays verified. Verification starts indexing the site into
        Context7 in the background; read `data.indexStatus` (or get the site) to
        follow it. Calling verify again after a failed index starts a new one.
        Owner or admin."
      operationId: verifyAskSite
      parameters:
        - name: teamspaceId
          in: path
          required: true
          description: Teamspace id (uuid).
          schema:
            type: string
            format: uuid
        - name: siteKey
          in: path
          required: true
          description: The site's public key, which is also its id.
          schema:
            type: string
            pattern: ^ask_[0-9a-f]{24}$
          example: ask_0123456789abcdef01234567
      responses:
        "200":
          description: The check result
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AskVerifyResponse"
        "400":
          description: Invalid teamspace id or parameters
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              example:
                error: invalid_teamspace
                message: Invalid teamspace id
        "401":
          $ref: "#/components/responses/UnauthorizedError"
        "403":
          description: Owner or admin role required, or the key belongs to another teamspace
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              example:
                error: forbidden
                message: Only owners and admins can change this.
        "404":
          description: No site with this key in this teamspace
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              example:
                error: no_site
                message: Site not found.
        "409":
          description: The site changed during the check
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              example:
                error: site_changed
                message: The site changed during the check. Try again.
        "500":
          $ref: "#/components/responses/InternalServerError"
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Get your API key at
        [context7.com/dashboard](https://context7.com/dashboard). Treat your API
        key like a password and store it securely.
  schemas:
    Error:
      type: object
      description: Standard error response
      properties:
        error:
          type: string
          description: Error code identifier
        message:
          type: string
          description: Human-readable error message
      required:
        - error
        - message
    AskVerification:
      description: Where the site stands in the ownership check.
      oneOf:
        - type: object
          required:
            - kind
          properties:
            kind:
              type: string
              enum:
                - pending
        - type: object
          required:
            - kind
            - verifiedAt
          properties:
            kind:
              type: string
              enum:
                - verified
            verifiedAt:
              type: string
              format: date-time
        - type: object
          required:
            - kind
            - reason
            - checkedAt
          properties:
            kind:
              type: string
              enum:
                - failed
            reason:
              type: string
              description: What to fix, in words for the site owner.
            checkedAt:
              type: string
              format: date-time
      discriminator:
        propertyName: kind
    AskLibrary:
      type: object
      required:
        - name
        - title
        - description
        - url
      properties:
        name:
          type: string
          description: Context7 library id.
          example: /websites/docs_example_com
        title:
          type: string
        description:
          type: string
          nullable: true
        url:
          type: string
    AskIndexStatus:
      description: Indexing of the site into Context7. `pending` until the site is
        verified and submitted; `submitted` while the parser works; `ready` when
        the library is finalized; `failed` with a reason (verify again to
        retry).
      oneOf:
        - type: object
          required:
            - kind
          properties:
            kind:
              type: string
              enum:
                - pending
        - type: object
          required:
            - kind
            - library
          properties:
            kind:
              type: string
              enum:
                - submitted
            library:
              $ref: "#/components/schemas/AskLibrary"
        - type: object
          required:
            - kind
            - library
          properties:
            kind:
              type: string
              enum:
                - ready
            library:
              $ref: "#/components/schemas/AskLibrary"
        - type: object
          required:
            - kind
            - reason
            - library
          properties:
            kind:
              type: string
              enum:
                - failed
            reason:
              type: string
            library:
              type: object
              nullable: true
              allOf:
                - $ref: "#/components/schemas/AskLibrary"
      discriminator:
        propertyName: kind
    AskSite:
      type: object
      required:
        - siteKey
        - url
        - hostname
        - verification
        - indexStatus
        - verificationTag
        - snippet
        - markdown
        - endpoint
      properties:
        siteKey:
          type: string
          description: Public site key, also the site's id.
          example: ask_0123456789abcdef01234567
        url:
          type: string
          example: https://docs.example.com
        hostname:
          type: string
          example: docs.example.com
        verification:
          $ref: "#/components/schemas/AskVerification"
        indexStatus:
          $ref: "#/components/schemas/AskIndexStatus"
        verificationTag:
          type: string
          description: Required. Add it to the server-rendered `<head>` of every page
            under `url`. Verify checks for it.
          example: <meta name="context7-site-verification"
            content="ask_0123456789abcdef01234567">
        snippet:
          type: string
          description: "Required. The hidden note for agents: an HTML block to add at the
            top of `<body>` in the shared server-rendered layout. Verify checks
            for it. Keep the `data-context7-ask` attribute. Do not render it
            with client-side JavaScript."
        markdown:
          type: string
          description: The same note as a Markdown `## Search` section, for `llms.txt`,
            `llms-full.txt` and Markdown pages, if the site serves them.
        endpoint:
          type: string
          description: The site's Ask endpoint. Agents append `&query=<URL-encoded
            question>`.
          example: https://context7.com/api/v2/ask?siteKey=ask_0123456789abcdef01234567
    AskVerifyResponse:
      type: object
      required:
        - verified
        - data
      properties:
        verified:
          type: boolean
        data:
          $ref: "#/components/schemas/AskSite"
  responses:
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example:
            error: internal_error
            message: An error occurred while processing your request
    UnauthorizedError:
      description: Unauthorized - Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example:
            error: invalid_api_key
            message: Invalid API key. Please check your API key. API keys should start with
              'ctx7sk' prefix.
````
