> ## 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/teamspace-libraries/add-a-library&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.

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

`POST /v2/teamspaces/{teamspaceId}/libraries`

## 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
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}/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
      security:
        - bearerAuth: []
      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"
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
    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).
        message:
          type: string
          description: Human-readable success message
      required:
        - libraryName
        - 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
    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"
  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
    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.
    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.
    AddLibrarySuccess:
      description: Library submitted successfully for processing
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/AddLibraryResponse"
          example:
            libraryName: /owner/repo
            message: Repository submitted successfully
    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.
    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.
````
