> ## 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 a library

> Submit a source for parsing; `source` selects its kind. Any member can add a public source; it does not join the teamspace. A private source (`private: true`, Confluence, Notion) joins this teamspace and needs the owner or admin role. The call returns once the parse has started (up to about 30 seconds); poll the library details for its state.



## OpenAPI

````yaml https://context7.com/openapi.json post /v2/teamspaces/{teamspaceId}/libraries
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}/libraries:
    post:
      tags:
        - Teamspace Libraries
      summary: Add a library
      description: >-
        Submit a source for parsing; `source` selects its kind. Any member can
        add a public source; it does not join the teamspace. A private source
        (`private: true`, Confluence, Notion) joins this teamspace and needs the
        owner or admin role. The call returns once the parse has started (up to
        about 30 seconds); poll the library details for its state.
      operationId: addTeamspaceLibrary
      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/TeamspaceLibraryAddRequest'
            examples:
              github:
                summary: Public GitHub repository
                value:
                  source: github
                  docsRepoUrl: https://github.com/vercel/next.js
              privateGithub:
                summary: Private GitHub repository
                value:
                  source: github
                  docsRepoUrl: https://github.com/acme/internal-docs
                  private: true
              website:
                summary: Website
                value:
                  source: website
                  websiteUrl: https://docs.example.com
      responses:
        '200':
          $ref: '#/components/responses/AddLibrarySuccess'
        '400':
          description: Invalid body, or an unsupported `source`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: unsupported_source
                message: >-
                  source must be one of: github, gitlab, bitbucket, git,
                  website, llmstxt, openapi, confluence, notion. Upload files in
                  the Context7 dashboard.
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          description: >-
            The caller cannot access this teamspace, the API key belongs to
            another teamspace, or the caller's role is too low
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: forbidden
                message: You do not have access to this teamspace.
        '409':
          description: >-
            The private source is already in the teamspace, the needed account
            (GitHub, GitLab, Bitbucket, Confluence, Notion) is not connected in
            the dashboard, or the token was refused
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: github_not_connected
                message: >-
                  Please connect your GitHub account at
                  https://context7.com/add-library or provide a gitToken
        '422':
          $ref: '#/components/responses/UnprocessableEntityError'
        '429':
          $ref: '#/components/responses/RateLimitError'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeoutError'
      security:
        - bearerAuth: []
components:
  schemas:
    TeamspaceLibraryAddRequest:
      description: >-
        The library source. File uploads (PDF, DOCX, files, OpenAPI files) are
        not available here; upload them in the dashboard.
      oneOf:
        - $ref: '#/components/schemas/TeamspaceLibraryRepoSource'
        - $ref: '#/components/schemas/TeamspaceLibraryWebsiteSource'
        - $ref: '#/components/schemas/TeamspaceLibraryLlmsTxtSource'
        - $ref: '#/components/schemas/TeamspaceLibraryOpenApiSource'
        - $ref: '#/components/schemas/TeamspaceLibraryConfluenceSource'
        - $ref: '#/components/schemas/TeamspaceLibraryNotionSource'
    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
    TeamspaceLibraryRepoSource:
      type: object
      required:
        - source
        - docsRepoUrl
      properties:
        source:
          type: string
          enum:
            - github
            - gitlab
            - bitbucket
            - git
          description: '`git` is any other Git host (self-hosted).'
        docsRepoUrl:
          type: string
          format: uri
          description: Repository URL.
          example: https://github.com/acme/docs
        private:
          type: boolean
          description: >-
            Add as a private source of this teamspace. Needs the owner or admin
            role and a paid plan. The token comes from `gitToken`, or from the
            GitHub, GitLab or Bitbucket account connected in the dashboard.
            `git` needs `gitToken`.
        gitToken:
          type: string
          description: Personal access token for a private repository.
        skipVersionFiltering:
          type: boolean
          description: Keep pages that look version-specific (private repositories).
        generateDocs:
          type: boolean
          description: Generate documentation from the source code (private repositories).
    TeamspaceLibraryWebsiteSource:
      type: object
      required:
        - source
        - websiteUrl
      properties:
        source:
          type: string
          enum:
            - website
        websiteUrl:
          type: string
          format: uri
          description: Documentation website to crawl.
          example: https://docs.example.com
        websiteBaseUrl:
          type: string
          format: uri
          description: Only crawl pages under this URL.
    TeamspaceLibraryLlmsTxtSource:
      type: object
      required:
        - source
        - llmstxtUrl
      properties:
        source:
          type: string
          enum:
            - llmstxt
        llmstxtUrl:
          type: string
          format: uri
          example: https://docs.example.com/llms.txt
    TeamspaceLibraryOpenApiSource:
      type: object
      required:
        - source
        - openApiUrl
      properties:
        source:
          type: string
          enum:
            - openapi
        openApiUrl:
          type: string
          format: uri
          example: https://api.example.com/openapi.json
    TeamspaceLibraryConfluenceSource:
      type: object
      description: >-
        A Confluence space, added as a private source. Needs the owner or admin
        role and a Confluence account connected in the dashboard.
      required:
        - source
        - cloudId
        - siteUrl
        - spaceKey
        - spaceName
        - title
        - description
      properties:
        source:
          type: string
          enum:
            - confluence
        cloudId:
          type: string
        siteUrl:
          type: string
          format: uri
          example: https://acme.atlassian.net
        spaceKey:
          type: string
        spaceName:
          type: string
        pageIds:
          type: array
          items:
            type: string
          description: Only these pages. Omit for the whole space.
        title:
          type: string
        description:
          type: string
    TeamspaceLibraryNotionSource:
      type: object
      description: >-
        Notion pages, added as a private source. Needs the owner or admin role
        and a Notion account connected in the dashboard.
      required:
        - source
        - workspaceId
        - workspaceName
        - pageIds
        - title
        - description
      properties:
        source:
          type: string
          enum:
            - notion
        workspaceId:
          type: string
        workspaceName:
          type: string
        pageIds:
          type: array
          minItems: 1
          items:
            type: string
        title:
          type: string
        description:
          type: string
    AddLibraryResponse:
      type: object
      description: Response after successfully submitting a library
      properties:
        libraryName:
          type: string
          description: >-
            The library identifier assigned — the URL path of the library on
            context7.com. `/owner/repo` for GitHub repositories, or
            `/<source>/<id>` for other sources (e.g., `/vercel/next.js`,
            `/websites/uploadcare_com`). See [Library ID
            format](/api-guide#library-id-format).
        version:
          type: string
          description: >-
            Only for websites: the version the URL was added as, when it is a
            version of an existing library. Request it as
            `<libraryName>/<version>`.
        message:
          type: string
          description: Human-readable success message
      required:
        - libraryName
        - message
  responses:
    AddLibrarySuccess:
      description: Library submitted successfully for processing
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AddLibraryResponse'
          example:
            libraryName: /owner/repo
            message: Repository submitted successfully
    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.
    UnprocessableEntityError:
      description: Unprocessable Entity - Library is too large or has no code
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            tooLarge:
              summary: Library too large
              value:
                error: library_too_large
                message: Library /owner/repo is too large to process.
            noCode:
              summary: No code found
              value:
                error: no_code_found
                message: >-
                  Library /owner/repo has no or too few snippets found in
                  documentation files.
    RateLimitError:
      description: Too Many Requests - Rate limit exceeded
      headers:
        Retry-After:
          description: Seconds until rate limit resets
          schema:
            type: integer
        RateLimit-Limit:
          description: Request limit
          schema:
            type: integer
        RateLimit-Remaining:
          description: Remaining requests
          schema:
            type: integer
        RateLimit-Reset:
          description: Unix timestamp when limit resets
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: rate_limit_exceeded
            message: Rate limit exceeded. Please try again later.
    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
    GatewayTimeoutError:
      description: Gateway Timeout - Processing timed out waiting for logs
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: timeout
            message: Request timed out. Please try again.
  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.