> ## 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:
  contact:
    email: help@getunblocked.com
    name: Unblocked
  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
  title: Unblocked Public API Reference
  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:
  - 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: Collections
  - 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: Documents
  - description: >
      Ask Unblocked questions and retrieve answers asynchronously. Submit a
      question using the PUT endpoint and poll for the response using the GET
      endpoint.
    name: Answers
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':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PutDocumentResponse'
          description: OK
        '400':
          $ref: '#/components/responses/ErrorResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse'
        '500':
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    PutDocumentRequest:
      properties:
        collectionId:
          description: The ID of the collection where the document will be added.
          format: uuid
          type: string
        title:
          description: A short title for the document in plain text.
          example: Password Reset Guide
          type: string
        body:
          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 ...
          type: string
        uri:
          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
          type: string
      type: object
    PutDocumentResponse:
      properties:
        id:
          $ref: '#/components/schemas/ApiResourceId'
      type: object
    ApiResourceId:
      description: The ID of a resource that can be retrieved from the service.
      format: uuid
      type: string
  responses:
    ErrorResponse:
      content:
        application/json:
          schema:
            properties:
              status:
                description: The HTTP status code
                example: 400
                type: integer
            required:
              - status
            type: object
      description: Error response
  securitySchemes:
    ApiKeyBearerAuth:
      bearerFormat: Unblocked API Key
      description: The API key to authenticate requests. Obtainable from the web dashboard.
      scheme: bearer
      type: http

````