paperless-search

Search documents in Paperless-ngx via REST API. Full-text search, tag/correspondent filtering, and direct links to documents.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "paperless-search" with this command: npx skills add nicolaischmid/agent-skills/nicolaischmid-agent-skills-paperless-search

Paperless Document Search

Search your Paperless-ngx document archive via the REST API.

Configuration

Config file: ~/.config/paperless-search/config.json

{
  "url": "https://paperless.example.com",
  "token": "your-api-token-here"
}

Getting an API token

  1. Log into your Paperless web UI
  2. Click your username (top right) → "My Profile"
  3. Click the circular arrow button to generate/regenerate a token

Troubleshooting config

If requests fail, verify the config:

# Check config exists and is valid JSON
cat ~/.config/paperless-search/config.json | jq .

# Test connection
curl -s -H "Authorization: Token $(jq -r .token ~/.config/paperless-search/config.json)" \
  "$(jq -r .url ~/.config/paperless-search/config.json)/api/documents/?page_size=1" | jq '.count'

Common issues:

  • 401 Unauthorized: Token is invalid/expired → regenerate in web UI
  • Connection refused: URL is wrong or server is down
  • null or parse error: Config file is missing or malformed

If config is broken, guide the user to provide:

  1. Their Paperless-ngx URL (e.g., https://paperless.example.com)
  2. A valid API token from their profile page

Then create/update the config:

mkdir -p ~/.config/paperless-search
cat > ~/.config/paperless-search/config.json << 'EOF'
{
  "url": "USER_PROVIDED_URL",
  "token": "USER_PROVIDED_TOKEN"
}
EOF

API Examples

# Load config into variables
PAPERLESS_URL=$(jq -r .url ~/.config/paperless-search/config.json)
PAPERLESS_TOKEN=$(jq -r .token ~/.config/paperless-search/config.json)

# Full-text search
curl -s -H "Authorization: Token $PAPERLESS_TOKEN" \
  "$PAPERLESS_URL/api/documents/?query=invoice+january+2025" | jq '.results[] | {id, title, created}'

# Get document with full OCR content
curl -s -H "Authorization: Token $PAPERLESS_TOKEN" \
  "$PAPERLESS_URL/api/documents/123/" | jq -r '.content'

# List correspondents
curl -s -H "Authorization: Token $PAPERLESS_TOKEN" \
  "$PAPERLESS_URL/api/correspondents/" | jq '.results[] | {id, name}'

# Filter by correspondent
curl -s -H "Authorization: Token $PAPERLESS_TOKEN" \
  "$PAPERLESS_URL/api/documents/?correspondent__id=5" | jq

# Filter by date range
curl -s -H "Authorization: Token $PAPERLESS_TOKEN" \
  "$PAPERLESS_URL/api/documents/?created__date__gte=2024-01-01&created__date__lte=2024-12-31" | jq

# List tags
curl -s -H "Authorization: Token $PAPERLESS_TOKEN" \
  "$PAPERLESS_URL/api/tags/" | jq '.results[] | {id, name}'

# List document types
curl -s -H "Authorization: Token $PAPERLESS_TOKEN" \
  "$PAPERLESS_URL/api/document_types/" | jq '.results[] | {id, name}'

API Reference

EndpointDescription
/api/documents/List/search documents
/api/documents/{id}/Get single document with full content
/api/tags/List all tags
/api/correspondents/List all correspondents
/api/document_types/List all document types

Query Parameters for /api/documents/

ParameterExampleDescription
queryquery=contract+2022Full-text search
correspondent__idcorrespondent__id=5Filter by correspondent
tags__id__alltags__id__all=1,2Must have all tags
document_type__iddocument_type__id=3Filter by type
created__date__gtecreated__date__gte=2024-01-01Created after
created__date__ltecreated__date__lte=2024-12-31Created before
orderingordering=-createdSort order
page_sizepage_size=50Results per page

Document URL format

When linking to documents, always use the base URL from the config file:

PAPERLESS_URL=$(jq -r .url ~/.config/paperless-search/config.json)
echo "$PAPERLESS_URL/documents/{id}/details"

Do NOT hardcode or guess the URL - always read it from the config.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

apple-mail-search

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

signal-history-search

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

exa-search

No summary provided by upstream source.

Repository SourceNeeds Review
Research

skillforge

Generate production-grade Agent Skill packages through a structured 7-step pipeline: requirement analysis, architecture decisions, metadata crafting, body ge...

Registry SourceRecently Updated
780Profile unavailable