Certified Data API
Certified Vehicle Data API for Developers
Integrate certified, audit-ready vehicle history data into your application via our RESTful API. Sourced from over 900 official registries and 1B+ verified records across 45+ countries, backed by a 99.95% uptime SLA.
https://api.autocertif.com/v1Quick Start
Get Your API Key
Sign up for a certified business account and generate your API key from the dashboard. Sandbox keys are available for compliance testing with no rate charges.
Make Your First Call
Authenticate with your API key and certificate key, then send your first request to any endpoint. Start with the vehicle identity endpoint for an instant, source-traced response.
Get Results
Receive structured JSON with certified vehicle data, source attribution and a verification timestamp on every field. Parse, display or archive the results as needed.
Authentication
Every API request is authenticated with two credentials: a Bearer token in the Authorization header and your X-Certificate-Key header. Keys are issued, rotated and revoked from your certified business dashboard, with full access logging for compliance.
curl -X GET https://api.autocertif.com/v1/vehicles/WBA3A5G59DNP26082/identity \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Certificate-Key: YOUR_CERTIFICATE_KEY" \
-H "Content-Type: application/json"Keep your keys safe! Never expose your API key or X-Certificate-Key in client-side code. Store them in environment variables and route calls through a server-side proxy to keep your credentials and audit trail secure.
Endpoints
The Certified Data API exposes five core endpoints: request a certified report, retrieve a certificate, track certification status, run bulk certifications and resolve a VIN identity. Every certificate carries a tamper-proof seal, source attribution and a certified_at timestamp.
/v1/certificatesRequest Certificate
Request a certified vehicle report from a VIN or license plate. Every data point is traced to its official source, sealed and timestamped.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
vin | string | Conditional | 17-character Vehicle Identification Number. Required unless license_plate is provided. |
license_plate | string | Conditional | Registration plate. Required unless vin is provided. |
country | string | Yes | ISO country code of registration, for example FR |
depth | string | No | Certification depth: standard (default) or full |
curl -X POST https://api.autocertif.com/v1/certificates \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Certificate-Key: YOUR_CERTIFICATE_KEY" \
-H "Content-Type: application/json" \
-d '{"vin": "WBA3A5G59DNP26082", "country": "FR", "depth": "full"}'/v1/certificates/{certificate_id}Retrieve Certificate
Retrieve a previously issued certificate by its identifier, including its seal, checks and confidence score.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
certificate_id | string | Yes | Certificate identifier returned when the report was requested (path parameter) |
curl -X GET https://api.autocertif.com/v1/certificates/cert_8f2a91 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Certificate-Key: YOUR_CERTIFICATE_KEY"/v1/certificates/{certificate_id}/statusCertificate Status
Check the processing and certification status of a certificate while its official sources are being verified.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
certificate_id | string | Yes | Certificate identifier to inspect (path parameter) |
curl -X GET https://api.autocertif.com/v1/certificates/cert_8f2a91/status \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Certificate-Key: YOUR_CERTIFICATE_KEY"/v1/certificates/bulkBulk Certificates
Submit a batch of identifiers for certification in a single call. Each certificate is sealed independently and can be retrieved or tracked individually.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
identifiers | array | Yes | Array of VIN or license plate strings (max 100 per request) |
country | string | Yes | ISO country code applied to the batch, for example FR |
depth | string | No | Certification depth applied to every item: standard (default) or full |
curl -X POST https://api.autocertif.com/v1/certificates/bulk \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Certificate-Key: YOUR_CERTIFICATE_KEY" \
-H "Content-Type: application/json" \
-d '{"identifiers": ["WBA3A5G59DNP26082", "WVWZZZ3CZWE123456"], "country": "FR", "depth": "full"}'/v1/vehicles/{vin}/identityVehicle Identity
Decode a VIN against official manufacturer registries to return make, model, year and certified specifications, without issuing a full certificate.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
vin | string | Yes | 17-character Vehicle Identification Number (path parameter) |
include_specs | boolean | No | Include full certified technical specifications |
curl -X GET https://api.autocertif.com/v1/vehicles/WBA3A5G59DNP26082/identity \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Certificate-Key: YOUR_CERTIFICATE_KEY"Response Format
Every certificate is returned as a consistent JSON object: a unique certificate_id, a verification seal, the decoded vehicle, the certified checks, a confidence score and metadata documenting the request context.
{
"certificate_id": "cert_8f2a91",
"vin": "WBA3A5G59DNP26082",
"certified_at": "2026-03-12T10:04:00Z",
"seal": {
"id": "seal_3kf9",
"valid": true
},
"vehicle": {
"make": "BMW",
"model": "320d",
"year": 2019
},
"checks": {
"mileage": {
"value": 142350,
"unit": "km",
"verified": true
},
"accidents": 0,
"theft": "none",
"title": "clean"
},
"official_sources": 8200,
"confidence_score": 9.1,
"meta": {
"country": "FR",
"depth": "full"
}
}Response Fields
certificate_idUnique identifier of the issued certificate, prefixed cert_vinThe certified Vehicle Identification Numbercertified_atISO 8601 timestamp at which the certificate was sealedsealTamper-proof verification seal, with its id (prefixed seal_) and valid flagvehicleDecoded vehicle identity: make, model and yearchecks.mileageOdometer reading with unit and certified verification statuschecks.accidentsNumber of certified accident recordschecks.theftTheft status verified against official law-enforcement databases: none or flaggedchecks.titleTitle status certified against the official registry: clean or brandedofficial_sourcesTotal number of official data sources cross-checked for this certificateconfidence_scoreCertification confidence on a 0 to 10 scalemetaRequest context: country of registration and certification depthError Handling
The API uses standard HTTP status codes. Every error returns a descriptive message and a detail field with a request ID to support debugging and audit.
| Code | Message | Description |
|---|---|---|
| 400 | Bad Request | The request body or parameters are malformed or missing required fields. |
| 401 | Unauthorized | The API key is missing, invalid, or has been revoked. |
| 403 | Forbidden | The API key does not have permission for this endpoint or resource. |
| 404 | Not Found | The requested resource (certificate, vehicle) was not found. |
| 429 | Too Many Requests | Rate limit exceeded. Check the X-Certificate-RateLimit headers and retry after the reset window. |
| 500 | Server Error | An internal error occurred. Retry the request or contact support if it persists. |
{
"status": "error",
"error": {
"code": 401,
"message": "Unauthorized",
"detail": "The provided API key is invalid or has expired."
}
}Rate Limits
API requests are rate-limited by subscription tier, each governed by a contractual SLA. Current limit usage is reported in the response headers of every call.
Starter
Requests / min
60
Requests / day
1,000
Concurrent
5
Growth
Requests / min
300
Requests / day
10,000
Concurrent
20
Enterprise
Requests / min
1,000+
Requests / day
Unlimited
Concurrent
100+
Rate Limit Headers
Every API response includes headers so you can track usage against your SLA in real time.
X-Certificate-RateLimit-Limit, Maximum requests allowed per windowX-Certificate-RateLimit-Remaining, Requests remaining in the current windowX-Certificate-RateLimit-Reset, Unix timestamp when the rate limit resets
Webhooks
Receive real-time, signed notifications when a certificate is issued or when important account events occur. Configure and verify webhook endpoints from your dashboard.
Supported Events
- certificate.issued, A certificate was sealed and issued successfully
- certificate.failed, Certification could not be completed
- bulk.completed, All certificates in a batch are sealed
- bulk.partial, Some certificates in a batch are sealed
- subscription.usage, Approaching rate limit or quota threshold
Webhook Security
Every webhook payload is signed with HMAC-SHA256 using your webhook secret. Verify the X-Certificate-Signature header to confirm authenticity and integrity before processing.
{
"event": "certificate.issued",
"timestamp": "2026-03-12T10:04:00Z",
"data": {
"certificate_id": "cert_8f2a91",
"vin": "WBA3A5G59DNP26082",
"status": "certified",
"seal": {
"id": "seal_3kf9",
"valid": true
},
"certificate_url": "https://api.autocertif.com/v1/certificates/cert_8f2a91"
}
}Ready to build on certified data?
Create your certified developer account and start integrating official, SLA-backed vehicle data into your applications today.