{"openapi":"3.1.0","info":{"title":"RigFix read-only API","version":"1.0.0","description":"RigFix publishes official NHTSA recalls for RVs and tow vehicles. These are official NHTSA recalls. A model year on a campaign is not proof a VIN is included. Owner reports are not included. Owner reports are not official NHTSA recalls. Each report cites a public complaint, bulletin, forum thread, or manufacturer page. It is not a failure rate, a diagnosis, or a repair procedure. Recall answers explain official NHTSA recalls and a VIN check. A model-year campaign is not proof a VIN is included. Owner reports are not recalls. No API key and no payment. Send GET requests. CORS is open. The limit is 120 requests a minute per IP, shared with https://www.rigfixhq.com/mcp."},"servers":[{"url":"https://www.rigfixhq.com"}],"tags":[{"name":"recalls","description":"Official NHTSA recalls."},{"name":"brands","description":"Brands and models."},{"name":"owner-reports","description":"Owner reports. These are not recalls."},{"name":"answers","description":"Recall answers."},{"name":"index","description":"RV Recall Index. Rankings from official NHTSA campaigns. More recalls does not automatically mean a brand is less safe."}],"paths":{"/api/v1":{"get":{"operationId":"getApiIndex","summary":"List the read-only endpoints.","responses":{"200":{"description":"Endpoint index.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/openapi.json":{"get":{"operationId":"getOpenApi","summary":"OpenAPI document for this API.","responses":{"200":{"description":"This document.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/recalls":{"get":{"operationId":"searchRecalls","tags":["recalls"],"summary":"Search official NHTSA recalls","description":"These are official NHTSA recalls. A model year on a campaign is not proof a VIN is included. Owner reports are not included.","parameters":[{"name":"brand","in":"query","required":false,"schema":{"type":"string"},"description":"Brand slug, name, or NHTSA make. Example: grand-design."},{"name":"model","in":"query","required":false,"schema":{"type":"string"},"description":"Model slug, name, or NHTSA model. Example: imagine."},{"name":"year","in":"query","required":false,"schema":{"type":"integer"},"description":"Model year, such as 2026."},{"name":"vehicle","in":"query","required":false,"schema":{"type":"string"},"description":"brand/model or brand/model/year. A site path works too: /issues/grand-design/imagine/2026."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Matching official NHTSA recalls.","content":{"application/json":{"schema":{"type":"object","required":["disclaimer","source","query","count","recalls"],"properties":{"disclaimer":{"type":"string"},"source":{"type":"string","enum":["nhtsa"]},"query":{"type":"object"},"limit":{"type":"integer"},"offset":{"type":"integer"},"count":{"type":"integer"},"recalls":{"type":"array","items":{"type":"object","required":["campaignId","nhtsaCampaignNumber","title","manufacturer","component","summary","consequence","remedy","parkOutside","source","url","markdownUrl","apiUrl","vehicles"],"properties":{"campaignId":{"type":"string","examples":["26V-667"]},"nhtsaCampaignNumber":{"type":"string","examples":["26V667000"]},"title":{"type":"string"},"manufacturer":{"type":"string"},"component":{"type":"string"},"summary":{"type":"string"},"consequence":{"type":"string"},"remedy":{"type":"string"},"reportReceivedDate":{"type":"string","nullable":true,"description":"YYYY-MM-DD, or null when NHTSA did not give a real date."},"parkOutside":{"type":"boolean"},"ownerNotices":{"type":"array","items":{"type":"string"}},"reportUrl":{"type":"string","nullable":true},"reportLabel":{"type":"string","nullable":true},"nhtsaUrl":{"type":"string"},"source":{"type":"string","enum":["nhtsa"]},"url":{"type":"string"},"markdownUrl":{"type":"string"},"apiUrl":{"type":"string"},"vehicles":{"type":"array","items":{"type":"object","required":["brand","brandName","model","modelName","years","url","markdownUrl","yearPages"],"properties":{"brand":{"type":"string"},"brandName":{"type":"string"},"model":{"type":"string"},"modelName":{"type":"string"},"years":{"type":"array","items":{"type":"integer"}},"url":{"type":"string"},"markdownUrl":{"type":"string"},"yearPages":{"type":"array","items":{"type":"object","required":["year","url","markdownUrl"],"properties":{"year":{"type":"integer"},"url":{"type":"string"},"markdownUrl":{"type":"string"}}}}}}}}}}}}}}},"400":{"description":"Missing or invalid filter.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","not_found","rate_limited"]},"message":{"type":"string"}}}}}}}},"404":{"description":"Unknown brand or model.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","not_found","rate_limited"]},"message":{"type":"string"}}}}}}}},"429":{"description":"Rate limit.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","not_found","rate_limited"]},"message":{"type":"string"}}}}}}}}}}},"/api/v1/recalls/{campaignId}":{"get":{"operationId":"getRecall","tags":["recalls"],"summary":"One official NHTSA recall","description":"Public campaign id, such as 26V-667. 26V667 and 26V667000 resolve to the same campaign.","parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"},"examples":{"public":{"value":"26V-667"}}}],"responses":{"200":{"description":"The campaign.","content":{"application/json":{"schema":{"type":"object","required":["disclaimer","recall"],"properties":{"disclaimer":{"type":"string"},"source":{"type":"string"},"recall":{"type":"object","required":["campaignId","nhtsaCampaignNumber","title","manufacturer","component","summary","consequence","remedy","parkOutside","source","url","markdownUrl","apiUrl","vehicles"],"properties":{"campaignId":{"type":"string","examples":["26V-667"]},"nhtsaCampaignNumber":{"type":"string","examples":["26V667000"]},"title":{"type":"string"},"manufacturer":{"type":"string"},"component":{"type":"string"},"summary":{"type":"string"},"consequence":{"type":"string"},"remedy":{"type":"string"},"reportReceivedDate":{"type":"string","nullable":true,"description":"YYYY-MM-DD, or null when NHTSA did not give a real date."},"parkOutside":{"type":"boolean"},"ownerNotices":{"type":"array","items":{"type":"string"}},"reportUrl":{"type":"string","nullable":true},"reportLabel":{"type":"string","nullable":true},"nhtsaUrl":{"type":"string"},"source":{"type":"string","enum":["nhtsa"]},"url":{"type":"string"},"markdownUrl":{"type":"string"},"apiUrl":{"type":"string"},"vehicles":{"type":"array","items":{"type":"object","required":["brand","brandName","model","modelName","years","url","markdownUrl","yearPages"],"properties":{"brand":{"type":"string"},"brandName":{"type":"string"},"model":{"type":"string"},"modelName":{"type":"string"},"years":{"type":"array","items":{"type":"integer"}},"url":{"type":"string"},"markdownUrl":{"type":"string"},"yearPages":{"type":"array","items":{"type":"object","required":["year","url","markdownUrl"],"properties":{"year":{"type":"integer"},"url":{"type":"string"},"markdownUrl":{"type":"string"}}}}}}}}}}}}}},"404":{"description":"Unknown campaign.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","not_found","rate_limited"]},"message":{"type":"string"}}}}}}}}}}},"/api/v1/brands":{"get":{"operationId":"listBrands","tags":["brands"],"summary":"List brands","responses":{"200":{"description":"Brands.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/brands/{brand}":{"get":{"operationId":"getBrand","tags":["brands"],"summary":"One brand","parameters":[{"name":"brand","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The brand and its models.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown brand.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","not_found","rate_limited"]},"message":{"type":"string"}}}}}}}}}}},"/api/v1/models":{"get":{"operationId":"listModels","tags":["brands"],"summary":"List models","parameters":[{"name":"brand","in":"query","required":false,"schema":{"type":"string"},"description":"Brand slug, name, or NHTSA make. Example: grand-design."},{"name":"model","in":"query","required":false,"schema":{"type":"string"},"description":"Model slug, name, or NHTSA model. Example: imagine."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Models.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/models/{brand}/{model}":{"get":{"operationId":"getModel","tags":["brands"],"summary":"One model","parameters":[{"name":"brand","in":"path","required":true,"schema":{"type":"string"}},{"name":"model","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The model, its years, and official NHTSA recalls.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown brand or model.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","not_found","rate_limited"]},"message":{"type":"string"}}}}}}}}}}},"/api/v1/owner-reports":{"get":{"operationId":"listOwnerReports","tags":["owner-reports"],"summary":"List owner reports","description":"Owner reports are not official NHTSA recalls. Each report cites a public complaint, bulletin, forum thread, or manufacturer page. It is not a failure rate, a diagnosis, or a repair procedure.","parameters":[{"name":"brand","in":"query","required":false,"schema":{"type":"string"},"description":"Brand slug, name, or NHTSA make. Example: grand-design."},{"name":"model","in":"query","required":false,"schema":{"type":"string"},"description":"Model slug, name, or NHTSA model. Example: imagine."},{"name":"year","in":"query","required":false,"schema":{"type":"integer"},"description":"Model year, such as 2026."},{"name":"vehicle","in":"query","required":false,"schema":{"type":"string"},"description":"brand/model or brand/model/year. A site path works too: /issues/grand-design/imagine/2026."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Owner reports.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/owner-reports/{slug}":{"get":{"operationId":"getOwnerReport","tags":["owner-reports"],"summary":"One owner report","description":"Owner reports are not official NHTSA recalls. Each report cites a public complaint, bulletin, forum thread, or manufacturer page. It is not a failure rate, a diagnosis, or a repair procedure.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The owner report.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown owner report.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","not_found","rate_limited"]},"message":{"type":"string"}}}}}}}}}}},"/api/v1/index":{"get":{"operationId":"getRecallIndex","tags":["index"],"summary":"Current RV Recall Index","description":"Rankings of RV and tow-vehicle brands by official NHTSA recall campaigns and by the potential number of units affected. More recalls does not automatically mean a brand is less safe. Licensed CC BY 4.0.","responses":{"200":{"description":"The current index.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/index/{month}":{"get":{"operationId":"getRecallIndexEdition","tags":["index"],"summary":"Dated RV Recall Index edition","parameters":[{"name":"month","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$"},"examples":{"october":{"value":"2026-10"}}}],"responses":{"200":{"description":"That dated edition.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"That dated edition is not published.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","not_found","rate_limited"]},"message":{"type":"string"}}}}}}}}}}},"/api/v1/answers":{"get":{"operationId":"listAnswers","tags":["answers"],"summary":"List recall answers","description":"Recall answers explain official NHTSA recalls and a VIN check. A model-year campaign is not proof a VIN is included. Owner reports are not recalls.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["vin","general","models"]}}],"responses":{"200":{"description":"Answers.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/answers/{slug}":{"get":{"operationId":"getAnswer","tags":["answers"],"summary":"One recall answer","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown answer.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","not_found","rate_limited"]},"message":{"type":"string"}}}}}}}}}}}}}