tb1337
paperless-api
Python

Little api client for paperless(-ngx): pypaperless

Last updated Jul 3, 2026
90
Stars
15
Forks
6
Issues
0
Stars/day
Attention Score
38
Language breakdown
Python 99.9%
Shell 0.1%
โ–ธ Files click to expand
README

pypaperless

[![GitHub Release][release-badge]][release-url] [![Python Version][python-badge]][python-url] [![GitHub License][license-badge]][license-url]

[![Tests][tests-badge]][tests-url] [![Codecov][codecov-badge]][codecov-url] [![Linting][linting-badge]][linting-url] [![Typing][typing-badge]][typing-url]

pypaperless is a modern, fully async Python client library for the Paperless-ngx REST API.


Features

| Feature | Details | | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Fully async | Built on asyncio + httpx.AsyncClient; drop-in for any async framework | | Type-safe models | All resources are validated Pydantic models | | Complete resource coverage | Documents, Correspondents, Tags, Document Types, Storage Paths, Custom Fields, Saved Views, Share Links, Workflows, Mail Accounts/Rules, Tasks, Trash, and more | | CRUD + permissions | Create, read, update, delete and manage object-level permissions per resource | | Async iteration & paging | Iterate over all items or page-by-page; server-side filtering via filter() | | Document operations | Upload, download, search (full-text & advanced), notes, suggestions, metadata | | Custom field system | Rich typed access to custom field values โ€” read, write, remove with caching | | Token generation | Static helper to exchange username + password for an API token | | Custom HTTP client | Bring your own httpx.AsyncClient for full control over timeouts, proxies, TLS, โ€ฆ |

Quick example

import asyncio
from pypaperless import PaperlessClient

async def main(): async with PaperlessClient("localhost:8000", "your-api-token") as paperless: # iterate all documents - pagination is handled automatically async for document in paperless.documents: print(document.id, document.title)

# fetch a single item doc = await paperless.documents(42)

# filter with server-side parameters async with paperless.tags.filter(name__ic) as filtered: async for tag in filtered: print(tag.id, tag.name)

asyncio.run(main())

Installation

Requires Python 3.13+.

pip install pypaperless

Documentation

Full documentation is available [here][docs-url].

Compatibility matrix

| pypaperless | Paperless-ngx | Python | Notes | | --------------- | --------------- | ------ | --------------------------------------- | | >= v6.0 | >= 3.0 | 3.13 | Current release | | >= v5.2 | >= 2.19 | 3.12 | | | >= v5.0 | >= 2.17 | 3.12 | | | >= v4.x | >= 2.15 | 3.12 | | | < v4.0 | < 2.15 | 3.11 | Incompatible with Paperless-ngx >= 2.15 |

Recommendation: Keep both Paperless-ngx and pypaperless up to date to benefit from the latest API features and bug fixes.

Authors & contributors

pypaperless is written and maintained by [Tobias Schulz][contributors-tbsch]. Feedback and contributions are always welcome.

Check out all [contributors][contributors-url].

[codecov-badge]: https://codecov.io/gh/tb1337/paperless-api/graph/badge.svg?token=IMXRBK3HRE [codecov-url]: https://app.codecov.io/gh/tb1337/paperless-api/tree/main [contributors-tbsch]: https://tbsch.de [contributors-url]: https://github.com/tb1337/paperless-api/graphs/contributors [docs-url]: https://pypaperless.docs.tbsch.de [license-badge]: https://img.shields.io/github/license/tb1337/paperless-api [license-url]: /LICENSE.md [python-badge]: https://img.shields.io/pypi/pyversions/pypaperless [python-url]: https://pypi.org/project/pypaperless/ [tests-badge]: https://github.com/tb1337/paperless-api/actions/workflows/tests.yml/badge.svg [tests-url]: https://github.com/tb1337/paperless-api/actions [release-badge]: https://img.shields.io/github/v/release/tb1337/paperless-api [release-url]: https://github.com/tb1337/paperless-api/releases [linting-badge]: https://github.com/tb1337/paperless-api/actions/workflows/linting.yml/badge.svg [linting-url]: https://github.com/tb1337/paperless-api/actions [typing-badge]: https://github.com/tb1337/paperless-api/actions/workflows/typing.yml/badge.svg [typing-url]: https://github.com/tb1337/paperless-api/actions

ยฉ 2026 GitRepoTrend ยท tb1337/paperless-api ยท Updated daily from GitHub