Wrenchli Assessment API
Add AI-powered vehicle assessment to any application. Get instant problem identification, urgency ratings, cost estimates, and repair recommendations.
Assessment API (api-assess)
The symptom assessment endpoint is documented as a machine-readable OpenAPI 3 document at wrenchli.net/openapi.json. Send a vehicle and the symptoms its owner describes; you get back a preliminary symptom assessment — probable issue, urgency, an estimated cost range, and recommended next steps. It is an assessment, not a professional inspection or a repair quote. Requests are authenticated with an x-api-key header and rate limited per key.
curl -X POST "https://aunrktvltmyrxtdygykt.supabase.co/functions/v1/api-assess" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"vehicle": { "year": 2019, "make": "Honda", "model": "Civic", "mileage": 67200 },
"symptoms": ["Grinding noise when braking"]
}'
# 200 response (abridged — the full object also mirrors this under "assessment"
# and adds "recommendations" and "wrenchli_services" links):
{
"diagnosis": {
"probable_issue": "Brake System Issue",
"description": "Grinding noises typically indicate worn brake pads that need replacement. This can damage rotors if not addressed promptly.",
"urgency": "high",
"cost_estimate": { "min": 155, "max": 325 },
"rate_source": "wrenchli_editorial_rate_table_v1"
},
"assessment_title": "Brake System Issue"
}The legacy name POST /api-diagnose serves the identical contract. Error responses use a single { "error": "..." } shape: 400 for a missing symptom list or vehicle fields, 401 when the key header is absent, 403 for an unknown or deactivated key, 405 for non-POST calls, and 429 when the key's per-minute limit is reached.
API Pricing
Choose the plan that fits your integration needs. All plans include access to all 5 endpoints.
Sign in to manage your API subscription and billing.
Free
50 / month API calls
- 50 API calls/month
- All 5 endpoints
- Community support
Pro
500 / month API calls
- 500 API calls/month
- All 5 endpoints
- Priority support
- Usage analytics
Enterprise
5,000 / month API calls
- 5,000 API calls/month
- All 5 endpoints
- Dedicated support
- Custom rate limits
- SLA guarantee
Authentication
All requests require an API key passed via the x-api-key header. Log in with an admin account to generate keys, or contact us.
Endpoint
Assessment-named alias: POST /api-assess — identical request and response contract. /api-diagnose remains supported; new integrations should prefer /api-assess. Responses include assessment_title as the assessment-named alias of the issue title.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| symptoms | string[] | Required | List of symptoms (e.g. "grinding noise") |
| vehicle.year | number | Required | Model year |
| vehicle.make | string | Required | Manufacturer (e.g. Toyota) |
| vehicle.model | string | Required | Model name (e.g. Camry) |
| vehicle.mileage | number | Optional | Current odometer reading |
| location | string | Optional | ZIP code for local recommendations |
Code Examples
curl -X POST "https://aunrktvltmyrxtdygykt.supabase.co/functions/v1/api-diagnose" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"symptoms": ["grinding noise when braking", "vibration in steering wheel"],
"vehicle": {
"year": 2019,
"make": "Toyota",
"model": "Camry",
"mileage": 45000
},
"location": "90210"
}'Sample Response
{
"diagnosis": {
"probable_issue": "Brake System Issue",
"description": "Grinding noises typically indicate worn brake pads...",
"urgency": "high",
"cost_estimate": { "min": 200, "max": 600 }
},
"recommendations": {
"immediate_action": "Schedule brake inspection within 48 hours",
"safety_advice": "Avoid heavy braking and increase following distance",
"diy_feasible": false
},
"wrenchli_services": {
"get_quotes_url": "https://wrenchli.net/vehicle-insights?...",
"find_shops_url": "https://wrenchli.net/for-shops"
}
}Repair Cost Estimate
Get an AI-powered, ZIP-code-localized repair cost estimate with parts/labor breakdown. Uses the same API key authentication.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| assessment_title | string | Required | The identified issue (e.g. "Worn Brake Pads") |
| diagnosis_title | string | Required | Legacy name for assessment_title (same value) |
| zip_code | string | Required | 5-digit US ZIP code for localized pricing |
| diagnosis_code | string | Optional | DTC code if applicable (e.g. P0420) |
| vehicle_year | string | Optional | Vehicle model year |
| vehicle_make | string | Optional | Vehicle manufacturer |
| vehicle_model | string | Optional | Vehicle model |
| vehicle_trim | string | Optional | Vehicle trim level |
| diy_feasibility | string | Optional | DIY difficulty (easy, moderate, advanced) |
| urgency | string | Optional | Urgency level (low, medium, high) |
Example Request
curl -X POST "https://aunrktvltmyrxtdygykt.supabase.co/functions/v1/api-estimate-repair" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"diagnosis_title": "Worn Brake Pads",
"diagnosis_code": "",
"vehicle_year": "2019",
"vehicle_make": "Toyota",
"vehicle_model": "Camry",
"zip_code": "48201",
"urgency": "high"
}'Sample Response
{
"metro_area": "Metro Area",
"cost_low": 200,
"cost_high": 450,
"parts_estimate": "$80–$150",
"labor_estimate": "$120–$300",
"labor_hours": "1.5–2.5 hours",
"regional_notes": "Regional labor rates average $95–$130/hr",
"what_to_expect": "Technician will replace worn brake pads and inspect rotors for damage.",
"warranty_note": "Most shops offer 12-month/12,000-mile warranty on brake work"
}Vehicle Value & Repair-vs-Replace
Get an instant vehicle market valuation with depreciation breakdown, market trend analysis, and an optional repair-vs-replace recommendation when a repair cost is provided. Uses the same API key authentication.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| vehicle.year | number | Required | Model year (1990–current+1) |
| vehicle.make | string | Required | Manufacturer (e.g. Toyota) |
| vehicle.model | string | Required | Model name (e.g. Camry) |
| vehicle.mileage | number | Required | Current odometer reading (0–500,000) |
| vehicle.zipCode | string | Optional | 5-digit ZIP code for regional context |
| repair_cost | number | Optional | Repair cost to trigger repair-vs-replace analysis |
Code Examples
curl -X POST "https://aunrktvltmyrxtdygykt.supabase.co/functions/v1/api-vehicle-value" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"vehicle": {
"year": 2020,
"make": "Toyota",
"model": "Camry",
"mileage": 45000,
"zipCode": "90210"
},
"repair_cost": 1500
}'Sample Response
{
"current_value": 9592,
"confidence": 85,
"value_breakdown": {
"base_msrp": 24095,
"age_depreciation": 18071,
"mileage_adjustment": -4050,
"regional_adjustment": 482
},
"market_analysis": {
"trend": "stable",
"optimal_sell_window": true,
"trade_vs_repair": {
"repair_percentage": 16,
"recommendation": "repair_recommended",
"reasoning": "At 16% of vehicle value, repair is still the better financial choice..."
}
},
"wrenchli_services": {
"detailed_analysis_url": "https://wrenchli.net/garage",
"get_quotes_url": "https://wrenchli.net/vehicle-insights?year=2020&make=Toyota&model=Camry",
"garage_management_url": "https://wrenchli.net/garage"
}
}repair_cost to get a pure valuation without the repair-vs-replace analysis. The trade_vs_repair field will be absent from the response.Maintenance Schedule Lookup
Get a full maintenance schedule with brand-specific adjustments (e.g. BMW extended oil intervals, Tesla EV exclusions), upcoming service items sorted by urgency, and cost estimates. Provide optional last-service records for accurate due-date calculation.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| vehicle.make | string | Required | Manufacturer (e.g. Toyota, BMW, Tesla) |
| vehicle.mileage | number | Required | Current odometer reading (0–500,000) |
| vehicle.model | string | Optional | Model name (e.g. Camry) |
| vehicle.year | number | Optional | Model year |
| last_services | array | Optional | Array of {type, mileage} for last service records |
Code Examples
curl -X POST "https://aunrktvltmyrxtdygykt.supabase.co/functions/v1/api-maintenance-schedule" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"vehicle": {
"make": "Toyota",
"model": "Camry",
"year": 2019,
"mileage": 47000
},
"last_services": [
{ "type": "oil_change", "mileage": 45000 },
{ "type": "tire_rotation", "mileage": 42000 }
]
}'Sample Response
{
"vehicle_summary": {
"make": "Toyota",
"model": "Camry",
"year": 2019,
"mileage": 47000
},
"full_schedule": [
{
"type": "oil_change",
"label": "Oil Change",
"interval_miles": 5000,
"interval_months": 6,
"estimated_cost_low": 30,
"estimated_cost_high": 75,
"priority": "essential",
"description": "Replace engine oil and filter..."
}
],
"upcoming_services": [
{
"type": "tire_rotation",
"label": "Tire Rotation",
"due_mileage": 49500,
"miles_until_due": 2500,
"priority": "soon",
"estimated_cost_low": 25,
"estimated_cost_high": 50,
"description": "Even out tire wear..."
},
{
"type": "oil_change",
"label": "Oil Change",
"due_mileage": 50000,
"miles_until_due": 3000,
"priority": "upcoming",
"estimated_cost_low": 30,
"estimated_cost_high": 75,
"description": "Replace engine oil and filter..."
}
],
"summary": {
"total_items": 10,
"overdue_count": 0,
"urgent_count": 0,
"estimated_total_cost_low": 535,
"estimated_total_cost_high": 1375
},
"wrenchli_services": {
"garage_url": "https://wrenchli.net/garage",
"vehicle_insights_url": "https://wrenchli.net/vehicle-insights"
}
}last_services to get the full schedule with all items calculated from 0 miles. The priority field uses: overdue, urgent (≤1,000 mi), soon (≤3,000 mi), upcoming.Service Provider Search
Find nearby auto repair shops with smart matching. Luxury brands (BMW, Mercedes, Audi, Lexus) are automatically matched with European/luxury specialists. Filter by price tier, service type, and search radius.
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| location | string | Required | ZIP code or city name (e.g. "48009", "Birmingham") |
| service_type | string | Optional | Service needed (e.g. brakes, engine, general) |
| radius_miles | number | Optional | Search radius in miles (default: 25) |
| price_range | string | Optional | Filter: budget, mid, or premium |
| vehicle_make | string | Optional | Vehicle make for specialist matching (e.g. BMW) |
Code Examples
curl "https://aunrktvltmyrxtdygykt.supabase.co/functions/v1/api-providers?location=48009&vehicle_make=BMW&service_type=brakes" \
-H "x-api-key: YOUR_API_KEY"Sample Response
{
"providers": [
{
"id": "birmingham_auto_europe",
"name": "Auto Europe",
"rating": 4.9,
"review_count": 156,
"address": "677 S Eton St, Birmingham, MI 48009",
"phone": "(248) 645-6300",
"distance_miles": 0,
"specialties": ["european", "luxury", "bmw", "mercedes", "audi"],
"price_tier": "premium",
"response_time": "1 hour",
"availability": "next_day",
"wrenchli_verified": true,
"quote_url": "https://wrenchli.net/vehicle-insights?shop=birmingham_auto_europe"
}
],
"search_params": {
"location": "48009",
"service_type": "brakes",
"radius_miles": 25,
"vehicle_make": "BMW",
"results_count": 2
},
"wrenchli_services": {
"compare_quotes_url": "https://wrenchli.net/vehicle-insights?location=48009&service=brakes",
"book_service_url": "https://wrenchli.net/for-shops",
"get_more_options_url": "https://wrenchli.net/vehicle-insights?location=48009"
}
}vehicle_make=BMW to automatically prioritize European/luxury specialists. Use price_range=budget to find the most affordable options.Error Codes
| Status | Description |
|---|---|
| 400 | Invalid request — missing symptoms or vehicle info |
| 401 | Missing API key |
| 403 | Invalid or deactivated API key |
| 429 | Rate limit exceeded — retry after 60 seconds |
| 500 | Internal server error |
Rate Limits
Each API key has a configurable rate limit (default: 30 requests/minute). If exceeded, the API returns 429 with a Retry-After: 60 header.
AI Platform Integration
Wrenchli supports the ChatGPT plugin standard. AI platforms can auto-discover the API via: