docsmint-com Documents API

Document CRUD and search

Operations 27

POST /api/documents/{id}/tags Post api documents by id tags #
DELETE /api/documents/{id}/tags/{tagId} Delete api documents by id tags by tag id #
POST /api/documents/{id}/attachments/presign Post api documents by id attachments presign #
POST /api/documents/{id}/attachments/confirm Post api documents by id attachments confirm #
POST /api/documents/{id}/attachments Post api documents by id attachments #
GET /api/documents/{id}/attachments Get api documents by id attachments #
GET /api/documents Get api documents #
POST /api/documents Post api documents #
GET /api/documents/cursor Get api documents cursor #
GET /api/documents/{id}/pipeline Get api documents by id pipeline #
POST /api/documents/{id}/pipeline/retry-warnings Retry failed optional pipeline stages #
GET /api/documents/{id}/knowledge-summary Get api documents by id knowledge summary #
GET /api/documents/{id}/index-status Read document index status #
POST /api/documents/{id}/index/refresh Refresh document index #
GET /api/documents/{id} Get api documents by id #
PATCH /api/documents/{id} Patch api documents by id #
DELETE /api/documents/{id} Delete api documents by id #
POST /api/documents/{id}/duplicate Post api documents by id duplicate #
GET /api/documents/{id}/export Get api documents by id export #
POST /api/documents/import Post api documents import #
GET /api/documents/{id}/versions/ Get api documents by id versions #
POST /api/documents/{id}/versions/ Post api documents by id versions #
GET /api/documents/{id}/versions/{vid} Get api documents by id versions by vid #
POST /api/documents/{id}/versions/{vid}/restore Post api documents by id versions by vid restore #
GET /api/documents/{id}/versions/diff Get api documents by id versions diff #
POST /api/documents/{id}/publish Post api documents by id publish #
POST /api/documents/{id}/unpublish Post api documents by id unpublish #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/docsmint-com:docsmint-com-documents-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

docsmint-com-documents-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DocsMint Documents API
  description: Self-hosted AI-native knowledge workspace and installable PWA with hybrid search, GraphRAG, REST, SDK, CLI, and MCP access for people and AI agents.
  version: 2.0.4
  contact:
    name: HiAi-gg
    url: https://github.com/HiAi-gg/docsmint
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
tags:
- name: Documents
  description: Document CRUD and search
paths:
  /api/documents/{id}/tags:
    post:
      operationId: postApiDocumentsByIdTags
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
        '409':
          $ref: '#/components/responses/AccountPurgeFenced'
      tags:
      - Documents
      summary: Post api documents by id tags
      x-summary-source: derived
  /api/documents/{id}/tags/{tagId}:
    delete:
      operationId: deleteApiDocumentsByIdTagsByTagId
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      - schema:
          type: string
        in: path
        name: tagId
        required: true
      responses:
        '200': {}
        '409':
          $ref: '#/components/responses/AccountPurgeFenced'
      tags:
      - Documents
      summary: Delete api documents by id tags by tag id
      x-summary-source: derived
  /api/documents/{id}/attachments/presign:
    post:
      operationId: postApiDocumentsByIdAttachmentsPresign
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachmentPresignRequest'
      responses:
        '200':
          description: Durable upload admission and exact signed PUT URL.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachmentPresignResponse'
        '409':
          $ref: '#/components/responses/AccountPurgeFenced'
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
      summary: Post api documents by id attachments presign
      x-summary-source: derived
  /api/documents/{id}/attachments/confirm:
    post:
      operationId: postApiDocumentsByIdAttachmentsConfirm
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachmentConfirmRequest'
      responses:
        '201': {}
        '409':
          $ref: '#/components/responses/AccountPurgeFenced'
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
      summary: Post api documents by id attachments confirm
      x-summary-source: derived
  /api/documents/{id}/attachments:
    post:
      operationId: postApiDocumentsByIdAttachments
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
        '409':
          $ref: '#/components/responses/AccountPurgeFenced'
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
      summary: Post api documents by id attachments
      x-summary-source: derived
    get:
      operationId: getApiDocumentsByIdAttachments
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
      summary: Get api documents by id attachments
      x-summary-source: derived
  /api/documents:
    get:
      operationId: getApiDocuments
      responses:
        '200': {}
      tags:
      - Documents
      summary: Get api documents
      x-summary-source: derived
    post:
      operationId: postApiDocuments
      responses:
        '200': {}
        '409':
          description: Account purge fence is active
      tags:
      - Documents
      summary: Post api documents
      x-summary-source: derived
  /api/documents/cursor:
    get:
      operationId: getApiDocumentsCursor
      parameters:
      - in: query
        name: categoryId
        schema:
          format: uuid
          type: string
      - in: query
        name: cursor
        schema:
          type: string
      - in: query
        name: limit
        schema:
          default: 50
          maximum: 100
          minimum: 1
          type: integer
      - in: query
        name: sortBy
        schema:
          default: updated
          enum:
          - title
          - category
          - folder
          - updated
          type: string
      - in: query
        name: sortOrder
        schema:
          default: desc
          enum:
          - asc
          - desc
          type: string
      responses:
        '200': {}
      tags:
      - Documents
      summary: Get api documents cursor
      x-summary-source: derived
  /api/documents/{id}/pipeline:
    get:
      operationId: getApiDocumentsByIdPipeline
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
      summary: Get api documents by id pipeline
      x-summary-source: derived
  /api/documents/{id}/pipeline/retry-warnings:
    post:
      operationId: retryDocumentPipelineWarnings
      summary: Retry failed optional pipeline stages
      description: Retries only retryable graph and summarization warning stages on the active embedding generation. Ready embeddings, chunks, and optional stages are preserved.
      parameters:
      - schema:
          type: string
          format: uuid
        in: path
        name: id
        required: true
      responses:
        '200':
          description: Warning-stage retry accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocsPipelineWarningRetry'
        '400':
          description: Invalid document identifier.
        '401':
          description: Authentication is required.
        '403':
          description: The caller lacks write permission.
        '409':
          description: No retryable warning stages exist.
        '429':
          description: Too many requests.
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
  /api/documents/{id}/knowledge-summary:
    get:
      operationId: getApiDocumentsByIdKnowledgeSummary
      parameters:
      - schema:
          type: string
          format: uuid
        in: path
        name: id
        required: true
      responses:
        '200': {}
        '400': {}
        '401': {}
        '403': {}
        '404': {}
        '429': {}
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
      summary: Get api documents by id knowledge summary
      x-summary-source: derived
  /api/documents/{id}/index-status:
    get:
      operationId: getApiDocumentsByIdIndexStatus
      summary: Read document index status
      description: Returns indexing and knowledge-pipeline status for a document when the caller has read access. A category-scoped workspace assertion is authorized against the document's direct category or its effective category inherited from folder ancestry.
      parameters:
      - schema:
          type: string
          format: uuid
        in: path
        name: id
        required: true
      responses:
        '200':
          description: Document index status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocsDocumentIndexStatus'
        '400':
          description: Invalid document identifier.
        '401':
          description: Authentication is required.
        '403':
          description: The caller lacks the required permission.
        '404':
          description: Document not found in the accessible scope.
        '429':
          description: Too many requests.
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
  /api/documents/{id}/index/refresh:
    post:
      operationId: postApiDocumentsByIdIndexRefresh
      summary: Refresh document index
      description: Requests an idempotent document index refresh when the caller has write access. A category-scoped workspace assertion is authorized against the document's direct category or its effective category inherited from folder ancestry.
      parameters:
      - schema:
          type: string
          format: uuid
        in: path
        name: id
        required: true
      responses:
        '202':
          description: Document index refresh accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocsDocumentIndexRefresh'
        '400':
          description: Invalid document identifier.
        '401':
          description: Authentication is required.
        '403':
          description: The caller lacks the required permission.
        '404':
          description: Document not found in the accessible scope.
        '429':
          description: Too many requests.
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
  /api/documents/{id}:
    get:
      operationId: getApiDocumentsById
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
      tags:
      - Documents
      summary: Get api documents by id
      x-summary-source: derived
    patch:
      operationId: patchApiDocumentsById
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
        '409':
          $ref: '#/components/responses/AccountPurgeFenced'
      tags:
      - Documents
      summary: Patch api documents by id
      x-summary-source: derived
    delete:
      operationId: deleteApiDocumentsById
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
        '409':
          $ref: '#/components/responses/AccountPurgeFenced'
      tags:
      - Documents
      summary: Delete api documents by id
      x-summary-source: derived
  /api/documents/{id}/duplicate:
    post:
      operationId: postApiDocumentsByIdDuplicate
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
        '409':
          description: Account purge fence is active
      tags:
      - Documents
      summary: Post api documents by id duplicate
      x-summary-source: derived
  /api/documents/{id}/export:
    get:
      operationId: getApiDocumentsByIdExport
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
      tags:
      - Documents
      summary: Get api documents by id export
      x-summary-source: derived
  /api/documents/import:
    post:
      operationId: postApiDocumentsImport
      responses:
        '200': {}
        '409':
          description: Account purge fence is active
      tags:
      - Documents
      summary: Post api documents import
      x-summary-source: derived
  /api/documents/{id}/versions/:
    get:
      operationId: getApiDocumentsByIdVersions
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
      tags:
      - Documents
      summary: Get api documents by id versions
      x-summary-source: derived
    post:
      operationId: postApiDocumentsByIdVersions
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
        '409':
          $ref: '#/components/responses/AccountPurgeFenced'
      tags:
      - Documents
      summary: Post api documents by id versions
      x-summary-source: derived
  /api/documents/{id}/versions/{vid}:
    get:
      operationId: getApiDocumentsByIdVersionsByVid
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      - schema:
          type: string
        in: path
        name: vid
        required: true
      responses:
        '200': {}
      tags:
      - Documents
      summary: Get api documents by id versions by vid
      x-summary-source: derived
  /api/documents/{id}/versions/{vid}/restore:
    post:
      operationId: postApiDocumentsByIdVersionsByVidRestore
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      - schema:
          type: string
        in: path
        name: vid
        required: true
      responses:
        '200': {}
        '409':
          description: Account purge fence is active
      tags:
      - Documents
      summary: Post api documents by id versions by vid restore
      x-summary-source: derived
  /api/documents/{id}/versions/diff:
    get:
      operationId: getApiDocumentsByIdVersionsDiff
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
      tags:
      - Documents
      summary: Get api documents by id versions diff
      x-summary-source: derived
  /api/documents/{id}/publish:
    post:
      operationId: postApiDocumentsByIdPublish
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
        '409':
          $ref: '#/components/responses/AccountPurgeFenced'
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
      summary: Post api documents by id publish
      x-summary-source: derived
  /api/documents/{id}/unpublish:
    post:
      operationId: postApiDocumentsByIdUnpublish
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
      responses:
        '200': {}
        '409':
          $ref: '#/components/responses/AccountPurgeFenced'
      security:
      - SessionAuth: []
      - BearerAuth: []
      tags:
      - Documents
      summary: Post api documents by id unpublish
      x-summary-source: derived
components:
  schemas:
    AttachmentConfirmRequest:
      type: object
      required:
      - key
      - uploadToken
      - filename
      - contentType
      - size
      additionalProperties: false
      properties:
        key:
          type: string
          minLength: 1
        uploadToken:
          type: string
          minLength: 1
        filename:
          type: string
          minLength: 1
          maxLength: 255
        contentType:
          type: string
          pattern: ^image/
        size:
          type: integer
          minimum: 1
        quotaReservationId:
          type: string
    DocsPipelineStatus:
      type: string
      enum:
      - pending
      - processing
      - ready
      - retrying
      - failed
      - ready_with_warnings
      - skipped
      - cancelled
    AccountPurgeFencedError:
      type: object
      required:
      - error
      - code
      additionalProperties: false
      properties:
        error:
          type: string
          enum:
          - Account deletion is in progress
        code:
          type: string
          enum:
          - ACCOUNT_PURGE_FENCED
    DocsDocumentIndexStatus:
      type: object
      required:
      - documentId
      - embeddingStatus
      - activeGenerationId
      - pendingGenerationId
      - embeddingProfile
      - embeddingErrorCode
      - embeddingUpdatedAt
      - searchable
      - pipeline
      properties:
        documentId:
          type: string
          format: uuid
        embeddingStatus:
          type: string
          enum:
          - pending
          - processing
          - ready
          - failed
          - stale
        activeGenerationId:
          type:
          - string
          - 'null'
          format: uuid
        pendingGenerationId:
          type:
          - string
          - 'null'
          format: uuid
        embeddingProfile:
          type:
          - string
          - 'null'
        embeddingErrorCode:
          type:
          - string
          - 'null'
        embeddingUpdatedAt:
          type:
          - string
          - 'null'
          format: date-time
        searchable:
          type: boolean
        pipeline:
          $ref: '#/components/schemas/DocsDocumentPipeline'
    AttachmentPresignResponse:
      type: object
      required:
      - url
      - key
      - uploadToken
      - maxSize
      - expiresIn
      properties:
        url:
          type: string
          format: uri
        key:
          type: string
          minLength: 1
        uploadToken:
          type: string
          minLength: 1
          description: Opaque signed admission identity. Return it verbatim to confirm.
        quotaReservationId:
          type: string
        maxSize:
          type: integer
          minimum: 1
        expiresIn:
          type: integer
          minimum: 60
          maximum: 3600
    DocsPipelineWarningRetry:
      type: object
      required:
      - documentId
      - generationId
      - retriedStages
      - deduplicated
      properties:
        documentId:
          type: string
          format: uuid
        generationId:
          type: string
          format: uuid
        retriedStages:
          type: array
          items:
            type: string
            enum:
            - graph
            - summarize
        deduplicated:
          type: boolean
    DocsDocumentPipeline:
      type:
      - object
      - 'null'
      required:
      - documentId
      - generationId
      - status
      - revision
      - stages
      - batches
      - warnings
      - updatedAt
      properties:
        documentId:
          type: string
          format: uuid
        generationId:
          type: string
          format: uuid
        status:
          $ref: '#/components/schemas/DocsPipelineStatus'
        revision:
          type: string
        stages:
          type: object
          required:
          - prepare
          - embed
          - graph
          - summarize
          - finalize
          properties:
            prepare:
              $ref: '#/components/schemas/DocsPipelineStatus'
            embed:
              $ref: '#/components/schemas/DocsPipelineStatus'
            graph:
              $ref: '#/components/schemas/DocsPipelineStatus'
            summarize:
              $ref: '#/components/schemas/DocsPipelineStatus'
            finalize:
              $ref: '#/components/schemas/DocsPipelineStatus'
        batches:
          type: object
          required:
          - total
          - completed
          - failed
          properties:
            total:
              type: integer
            completed:
              type: integer
            failed:
              type: integer
        warnings:
          type: array
          items:
            type: object
            required:
            - stage
            - code
            - retryable
            properties:
              stage:
                type: string
                enum:
                - graph
                - summarize
              code:
                type: string
              retryable:
                type: boolean
        updatedAt:
          type: string
          format: date-time
    AttachmentPresignRequest:
      type: object
      required:
      - filename
      - contentType
      - size
      additionalProperties: false
      properties:
        filename:
          type: string
          minLength: 1
          maxLength: 255
        contentType:
          type: string
          pattern: ^image/
        size:
          type: integer
          minimum: 1
    DocsDocumentIndexRefresh:
      type: object
      required:
      - documentId
      - generationId
      - deduplicated
      properties:
        documentId:
          type: string
          format: uuid
        generationId:
          type: string
          format: uuid
        deduplicated:
          type: boolean
  responses:
    AccountPurgeFenced:
      description: The account deletion fence is active; no mutation was admitted.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AccountPurgeFencedError'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: hiai_docs_*
      description: Global or category-scoped DocsMint API key. The operator key is also accepted as a bearer token on operator-capable routes.
    SessionAuth:
      type: apiKey
      in: cookie
      name: better-auth.session_token
      description: Better Auth browser session. Secure deployments may use the __Secure- prefixed cookie name.
    OperatorApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Static HIAI_DOCS_API_KEY for /api/admin operator endpoints.