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