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

# Add an Ask site

> Register a website. The response holds the `<meta>` verification tag for the site's `<head>` and the hidden note for the top of `<body>`. Add both to the site, deploy, then call verify. Free teamspaces allow 3 sites; paid plans have no site limit. Owner or admin.



## OpenAPI

````yaml https://context7.com/openapi.json post /v2/teamspaces/{teamspaceId}/ask-sites
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
security: []
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, which reaches only its
      own teamspace and can make changes or read personal data only when it was
      created with write access (other keys can only read and get 403
      `write_access_required` on writes and on personal data), 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. Every API key can read rules, policies,
      usage and the spending limit. Changes, and reading members, invitations,
      the invite link and library requests (they name people), need an API key
      created with **Write access** ticked (other keys get 403
      `write_access_required`), or the Context7 Admin MCP sign-in.
  - 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. Every API key can read. Changes need an API key created with
      **Write access** ticked (other keys get 403 `write_access_required`), or
      the Context7 Admin MCP sign-in.
  - 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.
      Every API key can read, except feature requests and the GitHub account
      behind a build (personal data). Changes, and those reads, need an API key
      created with **Write access** ticked (other keys get 403
      `write_access_required`), or the Context7 Admin MCP sign-in.
  - 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. Every API key can read the visitor, crawler and path reports.
      Searches, questions, conversations, feedback and the raw records
      (`explore`) are personal data and need an API key created with **Write
      access** ticked, or the Context7 Admin MCP sign-in.
  - name: Ask Sites
    description: >-
      Manage a teamspace's Context7 Ask sites: add, verify, remove, and read
      their analytics and question log. Every API key can read the sites.
      Changes, and reading the analytics and question log (visitor questions),
      need an API key created with **Write access** ticked (other keys get 403
      `write_access_required`), or the Context7 Admin MCP sign-in.
paths:
  /v2/teamspaces/{teamspaceId}/ask-sites:
    post:
      tags:
        - Ask Sites
      summary: Add an Ask site
      description: >-
        Register a website. The response holds the `<meta>` verification tag for
        the site's `<head>` and the hidden note for the top of `<body>`. Add
        both to the site, deploy, then call verify. Free teamspaces allow 3
        sites; paid plans have no site limit. Owner or admin.
      operationId: createAskSite
      parameters:
        - name: teamspaceId
          in: path
          required: true
          description: Teamspace id (uuid).
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AskSiteCreateRequest'
      responses:
        '201':
          description: The new site
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    $ref: '#/components/schemas/AskSite'
        '400':
          description: Invalid teamspace id or URL
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: invalid_payload
                message: Enter a public hostname, for example https://docs.example.com.
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          description: >-
            Owner or admin role required (`forbidden`), or the Free site limit
            is reached (`site_limit`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: site_limit
                message: Your plan includes 3 sites. Upgrade to add more.
        '409':
          description: This teamspace already has this site
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: site_exists
                message: This teamspace already has this site.
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  schemas:
    AskSiteCreateRequest:
      type: object
      required:
        - url
      properties:
        url:
          type: string
          description: >-
            Public http(s) address of the site. The query string and fragment
            are dropped; a path such as `/docs` is kept.
          example: https://docs.example.com
    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
    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
    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
    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
  responses:
    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.
    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
  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. Every key can read the
        management API (`/v2/teamspaces/*`), except personal data: member and
        invitation emails, library requesters, visitor questions, Docs7 reader
        searches, conversations, feedback and feature requests, and the GitHub
        account behind a build. To read those or make changes there, the key
        must be created with **Write access** ticked; other keys get 403
        `write_access_required`.

````

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