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

# Put Document

> Use this endpoint to create or update a document for a given collection.

Documents are unique by `uri` across your organization.
If the document for `uri` does not exist, it will be created.
If the document for `uri` exists, it will be updated.
On success, an ID for the created or updated document will be returned.

Documents created or updated may take up to a minute to be available for use.




## OpenAPI

````yaml https://getunblocked.com/api/v1/public-api.json put /documents
openapi: 3.0.3
info:
  title: Unblocked Public API Reference
  description: >
    The Unblocked Public API offers seamless collection for managing custom data
    sources through a structured set of endpoints.

    It allows users to create collections and organize and upload documents.


    # Base URL

    The base URL for all requests is:


    ```jsx

    https://getunblocked.com/api/v1

    ```


    # Authentication

    Authentication requires an API key, obtainable from the web dashboard,

    which must be included in the `Authorization` request header for all
    endpoints.


    ```bash

    curl -X GET https://getunblocked.com/api/v1/collections \
         -H "Authorization: Bearer YOUR_API_KEY"
    ```


    # Rate Limits & Quotas


    **Resource Limits:**

    - Collections: Maximum 25 per team

    - Request Size: Maximum 10MB per request

    - Pagination: 1-200 items per page (default: 25)


    **Answers API:**

    - Daily Limit: 1000 questions per day per organization

    - Quota Reset: Midnight PST

    - Exceeding the limit returns a 429 Too Many Requests error


    **Field Constraints:**

    - Collection name: 1-32 characters

    - Collection description: 1-4096 characters
  contact:
    name: Unblocked
    email: help@getunblocked.com
  version: v1
  x-logo:
    url: https://avatars.githubusercontent.com/u/91906527?s=300
    altText: Unblocked
servers:
  - url: https://getunblocked.com/api/v1
security:
  - ApiKeyBearerAuth: []
tags:
  - name: Collections
    description: >
      A collection in Unblocked allows you to organize related documents from
      various data sources, such as customer support tools, knowledge bases, and
      internal wikis, which are not natively supported by Unblocked.


      You can create multiple collections to manage documents from different
      sources.


      You have the ability to list, create, update, and delete them as needed.


      Deleting a collection will also remove all the associated documents.
  - name: Documents
    description: >
      A document contains content that Unblocked uses to answer questions. Each
      document is associated with a collection, so you must create a collection
      before adding documents. Documents used to provide answers will appear as
      references in the Unblocked interface.


      You can create and delete documents as needed.
  - name: Answers
    description: >
      Ask Unblocked questions and retrieve answers asynchronously. Submit a
      question using the PUT endpoint and poll for the response using the GET
      endpoint.
paths:
  /documents:
    put:
      tags:
        - Documents
      summary: Put Document
      description: >
        Use this endpoint to create or update a document for a given collection.


        Documents are unique by `uri` across your organization.

        If the document for `uri` does not exist, it will be created.

        If the document for `uri` exists, it will be updated.

        On success, an ID for the created or updated document will be returned.


        Documents created or updated may take up to a minute to be available for
        use.
      operationId: putDocument
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutDocumentRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PutDocumentResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
          description: >-
            Bad Request - Invalid or missing required fields (collectionId,
            title, body, uri)
        '401':
          $ref: '#/components/responses/ErrorResponse'
          description: Unauthorized - Invalid or missing API token
        '500':
          $ref: '#/components/responses/ErrorResponse'
          description: Internal Server Error
components:
  schemas:
    PutDocumentRequest:
      type: object
      properties:
        collectionId:
          type: string
          description: The ID of the collection where the document will be added.
          format: uuid
        title:
          type: string
          description: A short title for the document in plain text.
          example: Password Reset Guide
        body:
          type: string
          description: >
            The body of the document. Structured formats like Markdown or JSON
            are preferred for better AI-powered answers.


            The body can be provided as:

            - Plain text (recommended) - Will be automatically compressed for
            storage

            - Pre-compressed gzip + base64 encoded text (optional) - For large
            documents or bandwidth optimization


            Maximum request size including all fields: 10MB
          example: To reset your password, visit ...
        uri:
          type: string
          description: >-
            A URL of the original source document that uniquely identifies the
            document. These will be used in answer references to link back to
            the original source.
          example: https://my.company.com/apollo/ticket/123456
    PutDocumentResponse:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/ApiResourceId'
    ApiResourceId:
      description: The ID of a resource that can be retrieved from the service.
      type: string
      format: uuid
      example: 12345678-abcd-123456789-123456789abc
  responses:
    ErrorResponse:
      description: Error response
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                description: The HTTP status code
                example: 400
            required:
              - status
  securitySchemes:
    ApiKeyBearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Unblocked API Key
      description: The API key to authenticate requests. Obtainable from the web dashboard.

````