Self-hosted extraction API
The self-hosted extraction API is a REST API that runs BlinkID and BlinkCard recognition on your own infrastructure. You send it images you've already captured — it returns structured data extracted from the document.
What it does
You POST one or two images of a document (front, back, or both) and the API responds with extracted fields: names, dates, document numbers, MRZ data, and more. There's no SDK to embed, no camera integration, and no data ever leaves your servers.
This makes it a good fit when you already have images from your own capture flow, or when you're processing documents in a backend pipeline without a user-facing camera session.
What's supported
| Capability | Endpoint |
|---|---|
| ID documents — both sides | POST /blinkid-multi-side |
| ID documents — front only | POST /blinkid-single-side |
| ID barcodes | POST /id-barcode |
| Payment cards | POST /blinkcard |
| General barcodes | POST /barcode |
BlinkID covers passports, national IDs, driver's licenses, and residence permits across hundreds of document types. BlinkCard handles credit and debit cards.
Example
Send a front and back image (as a URL or base64):
curl -X POST http://localhost:8080/blinkid-multi-side \
-H 'Content-Type: application/json' \
-d '{
"imageFront": { "imageUrl": "https://example.com/id-front.jpg" },
"imageBack": { "imageUrl": "https://example.com/id-back.jpg" }
}'
You get back a JSON object with the extracted document data:
{
"data": {
"firstName": { "latin": "JANE" },
"lastName": { "latin": "DOE" },
"dateOfBirth": {
"day": 15, "month": 4, "year": 1990,
"originalString": { "latin": "15 APR 1990" }
},
"dateOfExpiry": {
"day": 14, "month": 4, "year": 2030,
"originalString": { "latin": "14 APR 2030" }
},
"documentNumber": { "latin": "AB123456" },
"nationality": { "latin": "USA" },
"sex": { "latin": "F" },
"processingStatus": "SUCCESS",
"documentClassInfo": {
"country": "COUNTRY_USA",
"region": "REGION_CALIFORNIA",
"type": "TYPE_DL"
}
}
}
The full response schema is in the API reference.
Why self-hosted
- Data stays on your infrastructure — no images or extracted data are sent to Microblink servers
- Works in air-gapped environments — runs fully offline once deployed
- No capture dependency — process images from any source: mobile, web, scanners, or document uploads
- Scales with your stack — deploy as a Docker container alongside your existing services
Read more
📄️ Self-hosted extraction API
The self-hosted extraction API is a REST API that runs BlinkID and BlinkCard recognition on your own infrastructure. You send it images you've already captured — it returns structured data extracted from the document.
📄️ Quick setup
Prerequisites
📄️ Use cases
|Use case|Endpoint to use|
📄️ Downloads
| Name | Link |
📄️ OpenAPI specifications
Each release of the self-hosted extraction API ships with an OpenAPI specification. The latest version is also available as a stable URL that always points to the most recent release.
📄️ Docker environment variables
Environment variables are for the current version and may differ for a previous versions.
📄️ Authentication
Self-hosted API currently supports basic authentication. To enable it set docker environemnt variable ENABLESECURITY to true, and provide BASICAUTHUSERNAME and BASICAUTH_PASSWORD environment variables.
📄️ API changelog
Self-hosted extraction API release notes