Docling Client
Lightweight client SDK for converting documents via a remote Docling Serve endpoint
docling-client is a meta-package that installs docling-slim[service-client], giving you DoclingServiceClient — a drop-in replacement for the local DocumentConverter that offloads conversion to a Docling Serve instance over HTTP.
For the full documentation, see the Docling docs.
Why a remote client?
| You want to… | Use |
|---|---|
| Convert documents in a Python application, without running models locally | docling-client → point at a Docling Serve endpoint |
| Run Docling directly in-process in a Python application | docling |
| Full control over which extras are installed | docling-slim[service-client] |
Switching from local to remote conversion typically requires changing only the client class and the endpoint URL — the conversion API (sources, options, output formats) stays the same.
Getting started
1. Install
pip install docling-client
2. Point at a Docling Serve endpoint
You need a running Docling Serve instance — self-hosted or a managed service.
Set your connection details in the environment (or a .env file):
DOCLING_SERVICE_URL=https://your-docling-service.example.com
DOCLING_SERVICE_API_KEY=your-api-key # omit if the service is unauthenticated
3. Convert a document
import os
from docling.service_client import DoclingServiceClient
with DoclingServiceClient(
url=os.environ["DOCLING_SERVICE_URL"],
api_key=os.environ.get("DOCLING_SERVICE_API_KEY", ""),
) as client:
result = client.convert(source="https://arxiv.org/pdf/2501.17887")
print(result.document.export_to_markdown())
Convert many documents concurrently:
sources = [
"https://arxiv.org/pdf/2501.17887",
"path/to/report.pdf",
"path/to/slides.pptx",
]
with DoclingServiceClient(url=os.environ["DOCLING_SERVICE_URL"]) as client:
for result in client.convert_all(source=sources, max_concurrency=4):
print(result.input.file.name, result.status)
print(result.document.export_to_markdown()[:200])
Switching from local to remote
If you already use the local DocumentConverter, the client API mirrors it closely. Only the import and instantiation change:
# Before — local, runs models on this machine
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("report.pdf")
# After — remote, offloads conversion to Docling Serve
from docling.service_client import DoclingServiceClient
converter = DoclingServiceClient(url="https://...", api_key="...")
result = converter.convert(source="report.pdf")
Both result.document.export_to_markdown() and other output methods work the same way.
Managed services
Running Docling Serve yourself means operating infrastructure. Managed services remove that overhead.
Docling for IBM watsonx
A fully managed, hosted instance of Docling Serve — no servers, GPUs, scaling, or operational monitoring required. It exposes the same REST API, so your client code stays portable: swap the base URL, supply your API key, and go.
- Product page
- Free trial — no credit card needed
More examples
Runnable examples are in docs/examples/service_client/ in the repository:
| Script | What it shows |
|---|---|
convert.py |
convert() and convert_all() — the high-level API |
tasks.py |
Job lifecycle: submit(), watch(), result(), result targets |
batch.py |
submit_batch() for plugin sources and artifact targets |
chunk.py |
chunk() — split a document into retrieval-ready pieces |
Documentation
License
MIT License — see LICENSE
Metadata
Release files for docling-client 2.138.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| docling_client-2.138.0.tar.gz | 6.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| docling_client-2.138.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.8 kB
Release files / docling_client-2.138.0.tar.gz
| Download URL | docling_client-2.138.0.tar.gz |
|---|---|
| Size | 6.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
79be67c2639cbf61b362e9f39f7b6cfd0803e0312435e8cfb0548471a354403e
|
|
BLAKE2b-256 checksum How to use checksums |
b3efb76c98f3a18630570f0f538ccc458c9428ad30ef90f0ae814491c6f61877
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / docling_client-2.138.0-py3-none-any.whl
| Download URL | docling_client-2.138.0-py3-none-any.whl |
|---|---|
| Size | 3.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9251aea08d7984d3587ba1de790678b8b28a1f1f26349e20a7e7c3fe7ef22df7
|
|
BLAKE2b-256 checksum How to use checksums |
113738bb2f2498d0358ce2ce9e6cb4d0ceab1273dd23131e174a3a278b13a1e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency log