Docling - Using Docling-Serve API
Basic usage with docling-serve
-
Java
-
YAML
from("file:///data/documents?include=.*\\.pdf")
.to("docling:CONVERT_TO_MARKDOWN?useDoclingServe=true&doclingServeUrl=http://localhost:5001&contentInBody=true")
.process(exchange -> {
String markdown = exchange.getIn().getBody(String.class);
log.info("Converted content: {}", markdown);
});
- route:
from:
uri: file:///data/documents
parameters:
include: ".*\\.pdf"
steps:
- to:
uri: docling:CONVERT_TO_MARKDOWN
parameters:
useDoclingServe: true
doclingServeUrl: "http://localhost:5001"
contentInBody: true
- process:
ref: "markdownProcessor"
Converting documents from URLs using docling-serve
When using docling-serve API mode, you can also process documents from URLs:
-
Java
-
YAML
from("timer:convert?repeatCount=1")
.setBody(constant("https://arxiv.org/pdf/2501.17887"))
.to("docling:CONVERT_TO_MARKDOWN?useDoclingServe=true&contentInBody=true")
.to("file:///data/output");
- route:
from:
uri: timer:convert
parameters:
repeatCount: 1
steps:
- setBody:
constant: "https://arxiv.org/pdf/2501.17887"
- to:
uri: docling:CONVERT_TO_MARKDOWN
parameters:
useDoclingServe: true
contentInBody: true
- to:
uri: file:///data/output
Batch processing with docling-serve
-
Java
-
YAML
from("file:///data/documents?include=.*\\.(pdf|docx)")
.to("docling:CONVERT_TO_HTML?useDoclingServe=true&doclingServeUrl=http://localhost:5001&contentInBody=true")
.to("file:///data/converted?fileName=${file:name.noext}.html");
- route:
from:
uri: file:///data/documents
parameters:
include: ".*\\.(pdf|docx)"
steps:
- to:
uri: docling:CONVERT_TO_HTML
parameters:
useDoclingServe: true
doclingServeUrl: "http://localhost:5001"
contentInBody: true
- to:
uri: file:///data/converted
parameters:
fileName: "${file:name.noext}.html"
Authentication with docling-serve
The component supports multiple authentication mechanisms for secured docling-serve instances.
Bearer Token Authentication
-
Java
-
YAML
from("file:///data/documents?include=.*\\.pdf")
.to("docling:CONVERT_TO_MARKDOWN?" +
"useDoclingServe=true&" +
"doclingServeUrl=http://localhost:5001&" +
"authenticationScheme=BEARER&" +
"authenticationToken=your-bearer-token-here&" +
"contentInBody=true")
.to("file:///data/output");
- route:
from:
uri: file:///data/documents
parameters:
include: ".*\\.pdf"
steps:
- to:
uri: docling:CONVERT_TO_MARKDOWN
parameters:
useDoclingServe: true
doclingServeUrl: "http://localhost:5001"
authenticationScheme: "BEARER"
authenticationToken: "your-bearer-token-here"
contentInBody: true
- to:
uri: file:///data/output
API Key Authentication
-
Java
-
YAML
from("file:///data/documents?include=.*\\.pdf")
.to("docling:CONVERT_TO_MARKDOWN?" +
"useDoclingServe=true&" +
"doclingServeUrl=http://localhost:5001&" +
"authenticationScheme=API_KEY&" +
"authenticationToken=your-api-key-here&" +
"apiKeyHeader=X-API-Key&" +
"contentInBody=true")
.to("file:///data/output");
- route:
from:
uri: file:///data/documents
parameters:
include: ".*\\.pdf"
steps:
- to:
uri: docling:CONVERT_TO_MARKDOWN
parameters:
useDoclingServe: true
doclingServeUrl: "http://localhost:5001"
authenticationScheme: "API_KEY"
authenticationToken: "your-api-key-here"
apiKeyHeader: "X-API-Key"
contentInBody: true
- to:
uri: file:///data/output
Using Custom API Key Header
If your docling-serve instance uses a custom header name for API keys:
-
Java
-
YAML
from("file:///data/documents?include=.*\\.pdf")
.to("docling:CONVERT_TO_MARKDOWN?" +
"useDoclingServe=true&" +
"doclingServeUrl=http://localhost:5001&" +
"authenticationScheme=API_KEY&" +
"authenticationToken=your-api-key-here&" +
"apiKeyHeader=X-Custom-API-Key&" +
"contentInBody=true")
.to("file:///data/output");
- route:
from:
uri: file:///data/documents
parameters:
include: ".*\\.pdf"
steps:
- to:
uri: docling:CONVERT_TO_MARKDOWN
parameters:
useDoclingServe: true
doclingServeUrl: "http://localhost:5001"
authenticationScheme: "API_KEY"
authenticationToken: "your-api-key-here"
apiKeyHeader: "X-Custom-API-Key"
contentInBody: true
- to:
uri: file:///data/output
Using Authentication Token from Properties
For better security, store authentication tokens in properties or environment variables:
-
Java
-
YAML
from("file:///data/documents?include=.*\\.pdf")
.to("docling:CONVERT_TO_MARKDOWN?" +
"useDoclingServe=true&" +
"doclingServeUrl={{docling.serve.url}}&" +
"authenticationScheme=BEARER&" +
"authenticationToken={{docling.serve.token}}&" +
"contentInBody=true")
.to("file:///data/output");
- route:
from:
uri: file:///data/documents
parameters:
include: ".*\\.pdf"
steps:
- to:
uri: docling:CONVERT_TO_MARKDOWN
parameters:
useDoclingServe: true
doclingServeUrl: "{{docling.serve.url}}"
authenticationScheme: "BEARER"
authenticationToken: "{{docling.serve.token}}"
contentInBody: true
- to:
uri: file:///data/output
Then define in
application.properties
:
docling.serve.url=http://localhost:5001
docling.serve.token=your-bearer-token-here
OAuth Authentication
When the docling-serve instance is protected by an OAuth identity provider, set the
oauthProfile
parameter to acquire an access token via the OAuth 2.0 Client Credentials grant. The token is used as the
authenticationToken
and the
authenticationScheme
is automatically set to
BEARER
. This requires
camel-oauth
on the classpath.
camel.oauth.docling.client-id=my-client
camel.oauth.docling.client-secret=my-secret
camel.oauth.docling.token-endpoint=https://idp.example.com/token
-
Java
-
XML
-
YAML
from("file:///data/input")
.to("docling:CONVERT_TO_MARKDOWN?useDoclingServe=true&doclingServeUrl=http://localhost:5001&oauthProfile=docling&contentInBody=true")
.log("${body}");
<route>
<from uri="file:///data/input"/>
<to uri="docling:CONVERT_TO_MARKDOWN?useDoclingServe=true&doclingServeUrl=http://localhost:5001&oauthProfile=docling&contentInBody=true"/>
<log message="${body}"/>
</route>
- route:
from:
uri: file:///data/input
steps:
- to:
uri: docling:CONVERT_TO_MARKDOWN
parameters:
useDoclingServe: true
doclingServeUrl: "http://localhost:5001"
oauthProfile: docling
contentInBody: true
- log:
message: "${body}"