Awesome-omni-skill paperless-ngx
Interact with Paperless-ngx document management system via REST API. Use when users want to search, upload, download, organize documents, manage tags, correspondents, or document types in their Paperless-ngx instance.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/paperless-ngx" ~/.claude/skills/diegosouzapw-awesome-omni-skill-paperless-ngx && rm -rf "$T"
manifest:
skills/development/paperless-ngx/SKILL.mdsource content
Paperless-ngx Skill
Manage documents in Paperless-ngx via its REST API using HTTP requests.
Official API Documentation: https://docs.paperless-ngx.com/api/
The API also provides a browsable interface at
$PAPERLESS_URL/api/ and OpenAPI schema at $PAPERLESS_URL/api/schema/view/.
Configuration
Requires environment variables:
: Base URL (e.g.,PAPERLESS_URL
)https://paperless.example.com
: API token from Paperless-ngx settingsPAPERLESS_TOKEN
Authentication
Include token in all requests:
Authorization: Token $PAPERLESS_TOKEN
API Versioning
Specify API version via header (current version: 9):
Accept: application/json; version=9
Core Operations
Search Documents
curl -s "$PAPERLESS_URL/api/documents/?query=invoice" \ -H "Authorization: Token $PAPERLESS_TOKEN" # Find similar documents curl -s "$PAPERLESS_URL/api/documents/?more_like_id=123" \ -H "Authorization: Token $PAPERLESS_TOKEN"
Filter options:
correspondent__id, document_type__id, tags__id__in, created__date__gte, created__date__lte, added__date__gte.
Autocomplete
curl -s "$PAPERLESS_URL/api/search/autocomplete/?term=inv&limit=10" \ -H "Authorization: Token $PAPERLESS_TOKEN"
Get Document Details
curl -s "$PAPERLESS_URL/api/documents/{id}/" \ -H "Authorization: Token $PAPERLESS_TOKEN"
Get Document Metadata
curl -s "$PAPERLESS_URL/api/documents/{id}/metadata/" \ -H "Authorization: Token $PAPERLESS_TOKEN"
Preview/Thumbnail
# Inline preview curl -s "$PAPERLESS_URL/api/documents/{id}/preview/" \ -H "Authorization: Token $PAPERLESS_TOKEN" # PNG thumbnail curl -s "$PAPERLESS_URL/api/documents/{id}/thumb/" \ -H "Authorization: Token $PAPERLESS_TOKEN" -o thumb.png
Download Document
# Original file curl -s "$PAPERLESS_URL/api/documents/{id}/download/" \ -H "Authorization: Token $PAPERLESS_TOKEN" -o document.pdf # Archived (OCR'd) version curl -s "$PAPERLESS_URL/api/documents/{id}/download/?original=false" \ -H "Authorization: Token $PAPERLESS_TOKEN" -o document.pdf
Upload Document
curl -s "$PAPERLESS_URL/api/documents/post_document/" \ -H "Authorization: Token $PAPERLESS_TOKEN" \ -F "document=@/path/to/file.pdf" \ -F "title=Document Title" \ -F "correspondent=1" \ -F "document_type=2" \ -F "tags=3" \ -F "tags=4"
Optional fields:
title, created, correspondent, document_type, storage_path, tags (repeatable), archive_serial_number, custom_fields.
Update Document Metadata
curl -s -X PATCH "$PAPERLESS_URL/api/documents/{id}/" \ -H "Authorization: Token $PAPERLESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"title": "New Title", "correspondent": 1, "tags": [1, 2]}'
Delete Document
curl -s -X DELETE "$PAPERLESS_URL/api/documents/{id}/" \ -H "Authorization: Token $PAPERLESS_TOKEN"
Organization Endpoints
Tags
# List tags curl -s "$PAPERLESS_URL/api/tags/" -H "Authorization: Token $PAPERLESS_TOKEN" # Create tag curl -s -X POST "$PAPERLESS_URL/api/tags/" \ -H "Authorization: Token $PAPERLESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name": "Important", "color": "#ff0000"}'
Correspondents
# List correspondents curl -s "$PAPERLESS_URL/api/correspondents/" -H "Authorization: Token $PAPERLESS_TOKEN" # Create correspondent curl -s -X POST "$PAPERLESS_URL/api/correspondents/" \ -H "Authorization: Token $PAPERLESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name": "ACME Corp"}'
Document Types
# List document types curl -s "$PAPERLESS_URL/api/document_types/" -H "Authorization: Token $PAPERLESS_TOKEN" # Create document type curl -s -X POST "$PAPERLESS_URL/api/document_types/" \ -H "Authorization: Token $PAPERLESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name": "Invoice"}'
Bulk Operations
curl -s -X POST "$PAPERLESS_URL/api/documents/bulk_edit/" \ -H "Authorization: Token $PAPERLESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "documents": [1, 2, 3], "method": "add_tag", "parameters": {"tag": 5} }'
Methods:
set_correspondent, set_document_type, add_tag, remove_tag, delete, reprocess.
Task Status
After upload, check task status:
curl -s "$PAPERLESS_URL/api/tasks/?task_id={uuid}" \ -H "Authorization: Token $PAPERLESS_TOKEN"
Response Handling
- List endpoints return
with pagination{"count": N, "results": [...]} - Single objects return the object directly
- Use
for pagination?page=2 - Add
for sorting (prefix?ordering=-created
for descending)-