Install
openclaw skills install @carsxe/carsxeAccess the full suite of CarsXE vehicle data APIs — VIN decoding, license plate lookup, market value, vehicle history, safety recalls (VIN, year/make/model, or batch), lien/theft checks, OBD-II diagnostic code decoding, vehicle images, international VIN decoding, Year/Make/Model lookups, YMM options, ownership (Enterprise), and plate/VIN OCR from images. Use this skill any time the user asks about a vehicle by VIN, plate, make/model, or OBD code. Also triggers for: "what's this car worth", "check for recalls", "any recalls on a 2023 Toyota Camry", "check recalls for this list of VINs", "what Toyota models were sold in 2023", "who is the registered owner", "vehicle history report", "decode this plate", "what does check engine code X mean", or any automotive data query. Always use this skill when working with CarsXE APIs — do not guess API behavior without it.
openclaw skills install @carsxe/carsxeCarsXE provides a REST API for comprehensive vehicle data at https://api.carsxe.com.
Detailed parameter notes for newer endpoints live in {baseDir}/references/.
The API key is injected as the CARSXE_KEY environment variable. Read it before
making any request:
process.env.CARSXE_KEY in Node.js$env:CARSXE_KEY in PowerShell$CARSXE_KEY in bash/zshIf CARSXE_KEY is empty or missing, tell the user to run:
openclaw config set skills.entries.carsxe.env.CARSXE_KEY "cxe_live_YOUR_KEY"
Then restart the gateway.
Always append &source=openclaw to every request.
| User intent | Endpoint | Method | Key Parameters |
|---|---|---|---|
| Decode a VIN / get specs | GET /specs | GET | vin, optional: deepdata, disableIntVINDecoding |
| Decode a license plate | GET /v2/platedecoder | GET | plate, country (required), state, district (optional) |
| Market value | GET /v2/marketvalue | GET | vin, optional: state, mileage, condition |
| Vehicle history report | GET /history | GET | vin |
| Vehicle images | GET /images | GET | make, model, optional: year, trim, color, angle, photoType, size, license, transparent |
| Safety recalls (VIN) | GET /v1/recalls | GET | vin |
| Safety recalls (YMM) | GET /v1/recalls-ymm | GET | year, make, model |
| Safety recalls (batch) | POST /v1/recalls-batch/submit | POST | JSON body: vins and/or csv / csvUrl; optional webhookUrl |
| Safety recalls (batch) | GET /v1/recalls-batch/status|results|download | GET | batchId |
| Lien & theft check | GET /v1/lien-theft | GET | vin |
| International VIN | GET /v1/international-vin-decoder | GET | vin |
| Year/Make/Model lookup | GET /v1/ymm | GET | year, make, model, optional: trim |
| YMM options (dropdowns) | GET /v1/ymm-options | GET | optional: dimension, year, make, model, trim |
| Ownership (Enterprise) | GET /v1/ownership/vin|person|address|zip | GET | VIN / name+address+zip / address+zip / zip; optional include |
| OBD code diagnosis | GET /obdcodesdecoder | GET | code |
| VIN OCR from image | POST /v1/vinocr | POST | JSON body: {"image": "<URL>"} |
| Plate OCR from image | POST /platerecognition | POST | JSON body: {"image": "<URL>"} |
| Validate API key | GET /v1/auth/validate | GET | key |
Do not call usPlateDecoder or /v1/ownership/phone.
Replace $CARSXE_KEY with the actual value of the CARSXE_KEY environment variable.
/specs first, chain to other endpoints as needed/v2/platedecoder to resolve VIN, then chain if needed/v1/ymm for specs, /v1/ymm-options for dropdowns / "what years was X sold", /images for photos/v1/recalls; by year/make/model (no VIN) → /v1/recalls-ymm; many VINs / fleet / CSV → /v1/recalls-batch/*/v1/ownership/vin, /person, /address, or /zip/obdcodesdecoderPOST /v1/vinocr with {"image": "<URL>"}POST /platerecognition with {"image": "<URL>"}Example: "Is this plate stolen and does it have open recalls?"
GET /v2/platedecoder → extract VINGET /v1/lien-theft + GET /v1/recallsFormat output clearly. Highlight important findings (open recalls, theft records, salvage titles) prominently.
| HTTP Status | Meaning | Action |
|---|---|---|
401 / invalid key | Bad or missing API key | Tell user to set key via openclaw config set skills.entries.carsxe.env.CARSXE_KEY |
404 / no results | VIN/plate not found | Inform user, suggest double-checking |
404 / no_data | Ownership: no match | Nothing was billed. Say so clearly. |
| 409 | Batch still processing | Wait and re-check /v1/recalls-batch/status |
| 429 | Rate limit exceeded | Wait and retry |
| 5xx | Server error | Retry once, then report error |
Always check the error field in JSON responses — CarsXE sometimes returns HTTP 200 with an error body.
"What are the specs for VIN WBAFR7C57CC811956?"
→ GET https://api.carsxe.com/specs?key=$CARSXE_KEY&vin=WBAFR7C57CC811956&source=openclaw
"Decode California plate 7XER187"
→ GET https://api.carsxe.com/v2/platedecoder?key=$CARSXE_KEY&plate=7XER187&country=US&state=CA&source=openclaw
"What's my car worth? VIN WBAFR7C57CC811956, 45k miles, clean condition, California"
→ GET https://api.carsxe.com/v2/marketvalue?key=$CARSXE_KEY&vin=WBAFR7C57CC811956&state=CA&mileage=45000&condition=clean&source=openclaw
"Does this car have any recalls? 1C4JJXR64PW696340"
→ GET https://api.carsxe.com/v1/recalls?key=$CARSXE_KEY&vin=1C4JJXR64PW696340&source=openclaw
"Any recalls on a 2023 Toyota Camry?"
→ GET https://api.carsxe.com/v1/recalls-ymm?key=$CARSXE_KEY&year=2023&make=Toyota&model=Camry&source=openclaw
"Check recalls for this list of VINs"
→ Submit: POST https://api.carsxe.com/v1/recalls-batch/submit?key=$CARSXE_KEY&source=openclaw with Content-Type: application/json and body {"vins":["1HGBH41JXMN109186","5YJSA1E26HF000001"]}
→ Status: GET https://api.carsxe.com/v1/recalls-batch/status?key=$CARSXE_KEY&batchId=brb_mnablbn7_wvbaqv&source=openclaw
→ Results: GET https://api.carsxe.com/v1/recalls-batch/results?key=$CARSXE_KEY&batchId=brb_mnablbn7_wvbaqv&source=openclaw
→ Download CSV: GET https://api.carsxe.com/v1/recalls-batch/download?key=$CARSXE_KEY&batchId=brb_mnablbn7_wvbaqv&source=openclaw
"What Toyota models were sold in 2023?"
→ GET https://api.carsxe.com/v1/ymm-options?key=$CARSXE_KEY&year=2023&make=Toyota&source=openclaw
"Who is the registered owner of VIN 1FT8X3BT0BEA61538?"
→ GET https://api.carsxe.com/v1/ownership/vin?key=$CARSXE_KEY&vin=1FT8X3BT0BEA61538&source=openclaw
"Check liens and theft for WBAFR7C57CC811956"
→ GET https://api.carsxe.com/v1/lien-theft?key=$CARSXE_KEY&vin=WBAFR7C57CC811956&source=openclaw
"Decode this international VIN: WF0MXXGBWM8R43240"
→ GET https://api.carsxe.com/v1/international-vin-decoder?key=$CARSXE_KEY&vin=WF0MXXGBWM8R43240&source=openclaw
"Look up 2020 Toyota Camry LE"
→ GET https://api.carsxe.com/v1/ymm?key=$CARSXE_KEY&year=2020&make=Toyota&model=Camry&trim=LE&source=openclaw
"My check engine light shows P0300"
→ GET https://api.carsxe.com/obdcodesdecoder?key=$CARSXE_KEY&code=P0300&source=openclaw
"Extract the VIN from this photo: https://user-images.githubusercontent.com/5663423/30922082-64edb4fa-a3a8-11e7-873e-3fbcdce8ea3a.png"
→ POST https://api.carsxe.com/v1/vinocr?key=$CARSXE_KEY&source=openclaw
→ Body: {"image": "https://user-images.githubusercontent.com/5663423/30922082-64edb4fa-a3a8-11e7-873e-3fbcdce8ea3a.png"}
"Extract the plate from this photo: https://imagedelivery.net/moyiiSImjJPI_EZVxNMBBw/f49aed53-d736-4370-f3f4-97418841c800/public"
→ POST https://api.carsxe.com/platerecognition?key=$CARSXE_KEY&source=openclaw
→ Body: {"image": "https://imagedelivery.net/moyiiSImjJPI_EZVxNMBBw/f49aed53-d736-4370-f3f4-97418841c800/public"}
"Get vehicle images for BMW X5 2019"
→ GET https://api.carsxe.com/images?key=$CARSXE_KEY&make=BMW&model=X5&year=2019&source=openclaw