{"id":1772,"date":"2026-08-26T10:09:00","date_gmt":"2026-08-26T10:09:00","guid":{"rendered":"https:\/\/global-ecommerce-services.com\/wiki\/?page_id=1772"},"modified":"2026-08-27T07:59:50","modified_gmt":"2026-08-27T07:59:50","slug":"vehicle-data-api-user-guide","status":"publish","type":"page","link":"https:\/\/global-ecommerce-services.com\/wiki\/vehicle-data-api-user-guide\/","title":{"rendered":"Vehicle Data API User Guide"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Developer Guide \u2014 API Version 1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Purpose:<\/strong>&nbsp;The Vehicle Database API provides programmatic access to vehicle identification and specification data. The API is designed around a progressive lookup workflow so client applications can discover valid vehicle combinations instead of guessing Make, Model, and Year values.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Overview<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The API provides four V1 endpoints:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th class=\"has-text-align-left\" data-align=\"left\">Endpoint<\/th><th class=\"has-text-align-left\" data-align=\"left\">Purpose<\/th><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code>GET \/years<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Returns all available vehicle years.<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code>GET \/makes?year=<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Returns all Makes available for a selected Year.<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code>GET \/models?year=&amp;make=<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Returns all Models available for a selected Year and Make.<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code>GET \/search?year=&amp;make=&amp;model=<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Returns matching vehicle specifications.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">2. Base URLs<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Production<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;mage-extensions-themes.com\/rest\/V1\/vehicleapi<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Demo<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;demo.mage-extensions-themes.com\/rest\/V1\/vehicleapi<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Demo API:<\/strong>&nbsp;The Demo environment is intended for integration testing. A Demo API key is provided separately and is not published in this documentation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Authentication<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">All API requests require a Vehicle Database API key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Send the key using the HTTP&nbsp;<code>Authorization<\/code>&nbsp;header:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Authorization: Bearer vdb_live_xxxxxxxxxxxxxxxxxxxxxxxxx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">cURL Example<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -i \\\n  \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/years\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Keep API keys private.<\/strong>&nbsp;Do not commit keys to source control, publish them in documentation, place them in URLs, or expose production keys in browser-side JavaScript.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Recommended Integration Workflow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The recommended integration pattern is: <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"361\" height=\"1024\" src=\"https:\/\/global-ecommerce-services.com\/wiki\/wp-content\/uploads\/2026\/08\/vapi-integration-diagram-361x1024.png\" alt=\"\" class=\"wp-image-1791\" srcset=\"https:\/\/global-ecommerce-services.com\/wiki\/wp-content\/uploads\/2026\/08\/vapi-integration-diagram-361x1024.png 361w, https:\/\/global-ecommerce-services.com\/wiki\/wp-content\/uploads\/2026\/08\/vapi-integration-diagram-106x300.png 106w, https:\/\/global-ecommerce-services.com\/wiki\/wp-content\/uploads\/2026\/08\/vapi-integration-diagram-53x150.png 53w, https:\/\/global-ecommerce-services.com\/wiki\/wp-content\/uploads\/2026\/08\/vapi-integration-diagram-541x1536.png 541w, https:\/\/global-ecommerce-services.com\/wiki\/wp-content\/uploads\/2026\/08\/vapi-integration-diagram.png 543w\" sizes=\"auto, (max-width: 361px) 100vw, 361px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Best practice:<\/strong>&nbsp;Use the Years \u2192 Makes \u2192 Models \u2192 Search workflow rather than maintaining your own vehicle Make\/Model list or guessing vehicle combinations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Get Available Years<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GET<\/strong>\/years<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Returns all vehicle years currently available in the Vehicle Database.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Request<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -i \\\n  \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/years\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Response<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"success\": true,\n    \"count\": 132,\n    \"data\": &#91;\n        \"2027\",\n        \"2026\",\n        \"2025\",\n        \"2024\",\n        \"2023\"\n    ]\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">6. Get Makes for a Year<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GET<\/strong>\/makes?year={year}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Returns all Makes available for the selected Year.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th class=\"has-text-align-left\" data-align=\"left\">Parameter<\/th><th class=\"has-text-align-left\" data-align=\"left\">Required<\/th><th class=\"has-text-align-left\" data-align=\"left\">Description<\/th><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code>year<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Yes<\/td><td class=\"has-text-align-left\" data-align=\"left\">Four-digit vehicle year.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Request<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -i \\\n  \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/makes?year=2027\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Response<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"success\": true,\n    \"year\": \"2027\",\n    \"count\": 63,\n    \"data\": &#91;\n        \"Acura\",\n        \"Audi\",\n        \"BMW\",\n        \"Ford\",\n        \"Honda\",\n        \"Toyota\",\n        \"Volkswagen\",\n        \"Volvo\"\n    ]\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">7. Get Models for Year and Make<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GET<\/strong>\/models?year={year}&amp;make={make}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Returns all Models available for the selected Year and Make.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th class=\"has-text-align-left\" data-align=\"left\">Parameter<\/th><th class=\"has-text-align-left\" data-align=\"left\">Required<\/th><th class=\"has-text-align-left\" data-align=\"left\">Description<\/th><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code>year<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Yes<\/td><td class=\"has-text-align-left\" data-align=\"left\">Four-digit vehicle year.<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code>make<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Yes<\/td><td class=\"has-text-align-left\" data-align=\"left\">Vehicle Make. Input is case-insensitive.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Request<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -i \\\n  \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/models?year=2025&amp;make=Toyota\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Response<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"success\": true,\n    \"year\": \"2025\",\n    \"make\": \"Toyota\",\n    \"count\": 26,\n    \"data\": &#91;\n        \"4Runner\",\n        \"Avanza\",\n        \"bZ4X\",\n        \"Camry\",\n        \"Corolla\",\n        \"Corolla Cross\",\n        \"Crown\",\n        \"Crown Signia\",\n        \"GR Corolla\",\n        \"GR Supra\",\n        \"GR86\",\n        \"Grand Highlander\",\n        \"Hiace\",\n        \"Highlander\",\n        \"Hilux\",\n        \"Land Cruiser\",\n        \"Mirai\",\n        \"Prius\",\n        \"Raize\",\n        \"RAV4\",\n        \"Sequoia\",\n        \"Sienna\",\n        \"Supra\",\n        \"Tacoma\",\n        \"Tundra\",\n        \"Yaris\"\n    ]\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Case-insensitive input<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Make input is case-insensitive. For example,&nbsp;<code>Toyota<\/code>,&nbsp;<code>toyota<\/code>, and&nbsp;<code>TOYOTA<\/code>&nbsp;identify the same Make.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The API returns the canonical Make value maintained in the Vehicle Database.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Request:\n?year=1985&amp;make=bmw\n\nResponse:\n\"year\": \"1985\",\n\"make\": \"BMW\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">8. Search Vehicle Specifications<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GET<\/strong>\/search?year={year}&amp;make={make}&amp;model={model}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Returns vehicle specifications matching the supplied Year, Make, and Model.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th class=\"has-text-align-left\" data-align=\"left\">Parameter<\/th><th class=\"has-text-align-left\" data-align=\"left\">Required<\/th><th class=\"has-text-align-left\" data-align=\"left\">Description<\/th><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code>year<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Yes<\/td><td class=\"has-text-align-left\" data-align=\"left\">Four-digit vehicle year.<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code>make<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Yes<\/td><td class=\"has-text-align-left\" data-align=\"left\">Vehicle Make.<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><code>model<\/code><\/td><td class=\"has-text-align-left\" data-align=\"left\">Yes<\/td><td class=\"has-text-align-left\" data-align=\"left\">Vehicle Model.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The Search endpoint returns a maximum of 50 matching records per request.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Request<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -i \\\n  \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/search?make=Honda&amp;model=Civic&amp;year=2025\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Response<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"success\": true,\n    \"count\": 11,\n    \"has_more\": false,\n    \"data\": &#91;\n        {\n            \"ymm_id\": \"6072792945\",\n            \"make\": \"Honda\",\n            \"model\": \"Civic\",\n            \"year\": \"2025\",\n            \"engine\": \"2.0L 1993CC 122Cu. In. l4 GAS DOHC Naturally Aspirated\",\n            \"submodel\": \"Sport\",\n            \"trim\": \"Sport Hatchback 4-Door\",\n            \"body\": \"Hatchback\",\n            \"cylinder_type\": \"DOHC\",\n            \"drive_type\": \"FWD\",\n            \"engine_block_type\": \"L\",\n            \"engine_cc\": \"1993\",\n            \"engine_cid\": \"122\",\n            \"engine_cylinders\": \"4\",\n            \"engine_liter_display\": \"2.0L\",\n            \"transmission\": \"Automatic\",\n            \"fuel_type\": \"GAS\",\n            \"vehicle_display_name\": \"Honda Civic 2025 Sport\",\n            \"number_of_doors\": \"4\",\n            \"aspiration\": \"Naturally Aspirated\",\n            \"parts_model\": \"Civic\",\n            \"market_region\": \"1|2\"\n        }\n    ]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">All matching vehicle configurations are returned up to the endpoint limit.&nbsp;<code>has_more<\/code>&nbsp;indicates whether additional matching records exist beyond the returned set.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">9. Response Format<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lookup endpoints<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Years, Makes, and Models return a consistent structure:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"success\": true,\n    \"count\": 0,\n    \"data\": &#91;]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Make\/Model lookup responses also include the selected Year and\/or canonical Make.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Search endpoint<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Search returns:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"success\": true,\n    \"count\": 0,\n    \"has_more\": false,\n    \"data\": &#91;]\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">10. Input Rules<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Wildcards are not supported<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wildcard characters are intentionally rejected. Examples:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>make=Toy%\nmake=Toy_\nmodel=Cam%<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Response:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"message\": \"Wildcard characters are not allowed.\"\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Exact lookup values<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The API supports case-insensitive input, but does not perform partial or wildcard matching. Use the progressive lookup endpoints to discover valid values.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">11. Empty Results<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A valid request that has no matching vehicle returns a successful response with an empty data array.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"success\": true,\n    \"count\": 0,\n    \"has_more\": false,\n    \"data\": &#91;]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is different from an invalid request or authentication failure.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">12. Error Responses<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th class=\"has-text-align-left\" data-align=\"left\">Condition<\/th><th class=\"has-text-align-left\" data-align=\"left\">HTTP Status<\/th><th class=\"has-text-align-left\" data-align=\"left\">Example<\/th><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Missing API key<\/td><td class=\"has-text-align-left\" data-align=\"left\">401<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>API key is required.<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Invalid API key<\/td><td class=\"has-text-align-left\" data-align=\"left\">401<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>Invalid API key.<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Missing required parameter<\/td><td class=\"has-text-align-left\" data-align=\"left\">400<\/td><td class=\"has-text-align-left\" data-align=\"left\">Magento Web API required-field response<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Invalid Year<\/td><td class=\"has-text-align-left\" data-align=\"left\">400<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>Year must be a four-digit year.<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Wildcard characters<\/td><td class=\"has-text-align-left\" data-align=\"left\">400<\/td><td class=\"has-text-align-left\" data-align=\"left\"><code>Wildcard characters are not allowed.<\/code><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">Rate limit exceeded<\/td><td class=\"has-text-align-left\" data-align=\"left\">429<\/td><td class=\"has-text-align-left\" data-align=\"left\">Retry after the rate-limit window.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Missing Make<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"message\": \"\\\"%fieldName\\\" is required. Enter and try again.\",\n    \"parameters\": {\n        \"fieldName\": \"make\"\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Invalid Year<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"message\": \"Year must be a four-digit year.\"\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">13. Rate Limiting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Each API key has an independently configured requests-per-minute limit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The standard production limit is currently&nbsp;<strong>100 requests per minute<\/strong>, although limits may be configured differently for individual clients.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Rate-limit headers<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>X-RateLimit-Limit: 100\nX-RateLimit-Remaining: 99<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">When the limit is exceeded, the API returns:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HTTP 429 Too Many Requests<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Applications should wait for the current rate-limit window to reset before retrying.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">14. cURL Examples<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Get Years<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -i \\\n  \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/years\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Get Makes<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -i \\\n  \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/makes?year=2025\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Get Models<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -i \\\n  \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/models?year=2025&amp;make=Toyota\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Search<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -i \\\n  \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/search?year=2025&amp;make=Honda&amp;model=Civic\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">15. PHP Example<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n$apiKey = 'YOUR_API_KEY';\n\n$url = 'https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/search'\n    . '?year=2025'\n    . '&amp;make=Honda'\n    . '&amp;model=Civic';\n\n$ch = curl_init($url);\n\ncurl_setopt_array($ch, &#91;\n    CURLOPT_RETURNTRANSFER =&gt; true,\n    CURLOPT_HTTPHEADER =&gt; &#91;\n        'Authorization: Bearer ' . $apiKey,\n        'Accept: application\/json',\n    ],\n]);\n\n$response = curl_exec($ch);\n\nif ($response === false) {\n    throw new RuntimeException(curl_error($ch));\n}\n\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n\ncurl_close($ch);\n\n$data = json_decode($response, true);\n\nif ($httpCode !== 200) {\n    throw new RuntimeException(\n        $data&#91;'message'] ?? 'API request failed.'\n    );\n}\n\nforeach ($data&#91;'data'] as $vehicle) {\n    echo $vehicle&#91;'vehicle_display_name'] . PHP_EOL;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">16. Python Example<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\n\napi_key = \"YOUR_API_KEY\"\n\nurl = \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/search\"\n\nparams = {\n    \"year\": \"2025\",\n    \"make\": \"Honda\",\n    \"model\": \"Civic\"\n}\n\nheaders = {\n    \"Authorization\": f\"Bearer {api_key}\",\n    \"Accept\": \"application\/json\"\n}\n\nresponse = requests.get(\n    url,\n    params=params,\n    headers=headers,\n    timeout=30\n)\n\nresponse.raise_for_status()\n\ndata = response.json()\n\nfor vehicle in data&#91;\"data\"]:\n    print(vehicle&#91;\"vehicle_display_name\"])<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">17. JavaScript \/ Node.js Example<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>const response = await fetch(\n    \"https:\/\/mage-extensions-themes.com\/rest\/V1\/vehicleapi\/search?year=2025&amp;make=Honda&amp;model=Civic\",\n    {\n        headers: {\n            \"Authorization\": \"Bearer YOUR_API_KEY\",\n            \"Accept\": \"application\/json\"\n        }\n    }\n);\n\nconst data = await response.json();\n\nconsole.log(data);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Browser applications:<\/strong>&nbsp;Do not expose a production API key in client-side JavaScript delivered to end users. If browser-side access is required, use your own server-side application as a secure proxy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">18. Postman<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A Postman collection can be provided for clients who prefer an interactive testing environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The collection should use variables rather than embedding a real API key:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>VDB_BASE_URL\nVDB_API_KEY<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For Demo testing:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>VDB_BASE_URL =\nhttps:&#47;&#47;demo.mage-extensions-themes.com\/rest\/V1\/vehicleapi<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For Production:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>VDB_BASE_URL =\nhttps:&#47;&#47;mage-extensions-themes.com\/rest\/V1\/vehicleapi<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The API key should be entered by the client into the Postman environment or collection variable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">19. Integration Best Practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the progressive Year \u2192 Make \u2192 Model \u2192 Search workflow.<\/li>\n\n\n\n<li>Do not maintain a separate hard-coded vehicle list unless required by your application.<\/li>\n\n\n\n<li>Use the canonical Make and Model values returned by the API.<\/li>\n\n\n\n<li>Store API keys securely on the server side.<\/li>\n\n\n\n<li>Monitor&nbsp;<code>X-RateLimit-Remaining<\/code>&nbsp;and avoid unnecessary requests.<\/li>\n\n\n\n<li>Handle HTTP 401, 400, and 429 responses gracefully.<\/li>\n\n\n\n<li>Cache lookup results such as Years, Makes, and Models in your application where appropriate.<\/li>\n\n\n\n<li>Do not use wildcard or partial searches.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">20. Future API Features<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following capabilities are planned for future releases and are not currently part of V1.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Engine Lookup<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/engines?year={year}&amp;make={make}&amp;model={model}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This endpoint will allow clients to retrieve available engines for a selected Year, Make, and Model.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bulk Data Feed<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A future data-feed API will allow authorized clients to download vehicle data in bulk, potentially as a compressed ZIP package.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Important:<\/strong>&nbsp;Future endpoints are shown for roadmap purposes only and should not be used until they are officially released.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">21. API Access and Support<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Production API access requires an issued Vehicle Database API key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Demo API access is available for integration testing.<br>Contact Global eCom to request a Demo API key. <\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link has-white-color has-vivid-cyan-blue-background-color has-text-color has-background has-link-color wp-element-button\" href=\"https:\/\/globalecom.net\/support\/\">Contact Us<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Vehicle Database API <br>Demo: https:\/\/demo.mage-extensions-themes.com\/rest\/V1\/vehicleapi<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n","protected":false},"excerpt":{"rendered":"<p>Developer Guide \u2014 API Version 1 Purpose:&nbsp;The Vehicle Database API provides programmatic access to vehicle identification and specification data. The API is designed around a progressive lookup workflow\u2026<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[5],"tags":[44,45],"class_list":["post-1772","page","type-page","status-publish","hentry","category-installation","tag-vehicle-data-api","tag-vehicleapi"],"_links":{"self":[{"href":"https:\/\/global-ecommerce-services.com\/wiki\/wp-json\/wp\/v2\/pages\/1772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/global-ecommerce-services.com\/wiki\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/global-ecommerce-services.com\/wiki\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/global-ecommerce-services.com\/wiki\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/global-ecommerce-services.com\/wiki\/wp-json\/wp\/v2\/comments?post=1772"}],"version-history":[{"count":10,"href":"https:\/\/global-ecommerce-services.com\/wiki\/wp-json\/wp\/v2\/pages\/1772\/revisions"}],"predecessor-version":[{"id":1792,"href":"https:\/\/global-ecommerce-services.com\/wiki\/wp-json\/wp\/v2\/pages\/1772\/revisions\/1792"}],"wp:attachment":[{"href":"https:\/\/global-ecommerce-services.com\/wiki\/wp-json\/wp\/v2\/media?parent=1772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/global-ecommerce-services.com\/wiki\/wp-json\/wp\/v2\/categories?post=1772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/global-ecommerce-services.com\/wiki\/wp-json\/wp\/v2\/tags?post=1772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}