API Documentation
Complete reference for the VehicleDatabase.eu REST API v1.
Authentication
All API requests require an API key. Pass it as a Bearer token in the Authorization header:
GET /api/v1/manufacturers Authorization: Bearer vdb_your_api_key_here
Alternatively, pass it as a query parameter (not recommended for production):
GET /api/v1/manufacturers?api_key=vdb_your_api_key_here
API keys are generated automatically when you subscribe. You can find them in your Dashboard.
If your license uses a domain lock, browser requests must come from that licensed domain. The API
accepts the same domain with or without https://, www or a trailing slash.
Tier Access Levels
Data returned by the API depends on your subscription tier:
| Feature | Standard | Advanced | Professional |
|---|---|---|---|
| Manufacturers & Models | ✓ | ✓ | ✓ |
| Engine Specs (HP, NM, KW) | ✓ | ✓ | ✓ |
| ECU Names | ✓ | ✓ | ✓ |
| Stage 1 Data | ✓ | ✓ | ✓ |
| Stage 2 Data | ✗ | ✓ | ✓ |
| Stage 3 Data | ✗ | ✗ | ✓ |
| Manufacturer Logos | ✗ | ✓ | ✓ |
| ECU Solutions & Devices | ✗ | ✓ | ✓ |
| Extended Engine Specs | ✗ | ✓ | ✓ |
| Dyno Chart Data | ✗ | ✗ | ✓ |
| Full Technical Data | ✗ | ✗ | ✓ |
Rate Limits
All tiers are limited to 60 requests per minute per API key. If you exceed this, you'll
receive a 429 response.
Error Codes
| HTTP | Code | Description |
|---|---|---|
| 401 | INVALID_KEY |
Missing or malformed API key |
| 401 | KEY_NOT_FOUND |
API key not found or revoked |
| 403 | LICENSE_INACTIVE |
License is suspended or canceled |
| 403 | LICENSE_EXPIRED |
License period has ended |
| 403 | DOMAIN_MISMATCH |
Request origin doesn't match domain lock |
| 429 | RATE_LIMIT |
Too many requests (max 60/min) |
Endpoints
Base URL: https://autoflashlog.com/api/v1
Returns your current tier, features, license status, and request count.
Response
{
"status": "ok",
"tier": "advanced",
"features": { "logos": true, "additional_options": true, ... },
"allowed_stages": ["stage1", "stage2"],
"license": { "status": "active", "period_end": "2026-03-23T..." },
"usage": { "total_requests": 1247 }
}
Returns all vehicle manufacturers. Logo URLs are only included for Advanced+ tiers.
Response
{
"manufacturers": [
{ "id": 1, "name": "Audi", "slug": "audi", "logo_url": "/img/brands/audi.png" },
{ "id": 2, "name": "BMW", "slug": "bmw" },
...
]
}
Returns the available generations for a model. The response always contains
id, name and slug. The optional fields
year_from and year_to can be null if no year range is
stored in the database.
Parameters
| Name | Type | Description |
|---|---|---|
id |
integer | Manufacturer ID |
Response
{
"models": [
{ "id": 10, "name": "A3", "slug": "a3" },
{ "id": 11, "name": "A4", "slug": "a4" },
...
]
}
Parameters
| Name | Type | Description |
|---|---|---|
id |
integer | Model ID |
Response
{
"generations": [
{ "id": 42, "name": "8V", "slug": "8v", "year_from": null, "year_to": null },
...
]
}
The main endpoint — returns all engines for a generation with tier-filtered tuning data, ECU mappings, solutions and devices.
Parameters
| Name | Type | Description |
|---|---|---|
id |
integer | Generation ID |
Response
{
"engines": [{
"id": 100,
"name": "2.0 TFSI 190 HP",
"engine_code": "DKZA",
"fuel_type": "Gasoline",
"displacement": 1984,
"stock_hp": 190,
"stock_nm": 320,
"stock_kw": 140,
"ecus": [{
"ecu_name": "Bosch MG1CS111",
"ecu_type": "ECU",
"solutions": [/* Advanced+ only */
{ "name": "Stage 1", "slug": "stage-1" },
{ "name": "DPF OFF", "slug": "dpf-off" }
],
"devices": [/* Advanced+ only */
{ "name": "Autoflasher OBD", "slug": "autoflasher-obd" }
]
}],
"tuning": {
"stage1": [{ "name": "Stage 1", "hp": 245 }],
"stage2": [/* Advanced+ only */]
}
}],
"tier": "advanced",
"allowed_stages": ["stage1", "stage2"]
}
Search manufacturers, models, and engines by name or engine code.
Query Parameters
| Name | Type | Description |
|---|---|---|
q |
string | Search query (min 2 chars) |
Response
{
"manufacturers": [{ "id": 1, "name": "Audi" }],
"models": [{ "id": 10, "name": "A3", "manufacturer_name": "Audi" }],
"engines": [{ "id": 100, "name": "2.0 TFSI 190 HP", "engine_code": "DKZA" }]
}
Code Examples
JavaScript (Fetch)
const API_KEY = 'vdb_your_key_here'; const BASE = 'https://autoflashlog.com/api/v1'; async function getEngines(generationId) { const res = await fetch(`${BASE}/generations/${generationId}/engines`, { headers: { 'Authorization': `Bearer ${API_KEY}` } }); return res.json(); }
PHP (cURL)
$ch = curl_init('https://autoflashlog.com/api/v1/manufacturers'); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer vdb_your_key']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = json_decode(curl_exec($ch), true);
Python (Requests)
import requests headers = {'Authorization': 'Bearer vdb_your_key'} r = requests.get('https://autoflashlog.com/api/v1/manufacturers', headers=headers) data = r.json()