{"openapi":"3.1.0","info":{"title":"checkdiefin.de API","version":"1.0.0","description":"1. GET /openapi.json — read this document.\n2. POST /v1/vin/identify with { \"vin\": \"...\" } — free, no auth, returns identification-level fields and a coverage expectation.\n3. Read the response, including report.availability_note.\n4. POST /v1/reports with the same body — returns 401 with a next_step schema, since no key exists yet.\n5. Show the selected package price. With authorization, POST /v1/report-requests with name, email, package_id and price_cents. For a single report provide vin, or explicitly set vin_unknown to true and omit vin if not known. The listing_url is optional. No VIN preview is needed for an unknown-VIN inquiry. Omit vehicle details for three/five report credits. We email when capacity is available. Never invent missing details; use /zugang.\n\ncheckdiefin.de offers an expert-reviewed used-car report: a VIN check using data from available databases and online sources, price assessment and a listing check when a listing URL is supplied. Our purpose-built AI analyzes and cross-checks the information. An expert reviews the results and explains inconsistencies and unanswered questions. The API provides a VIN preview, a fictional structured data sample and report requests. It does not currently return a complete report, automated history research or an automated expert assessment. 1 Autocheck für 29,90 € inkl. MwSt. · kein Abo · auf Anfrage. Currently available on request. We email you personally when review capacity is available. Request credit for 3 or 5 car checks with your name and email. For a single car check, provide the VIN or explicitly mark it unknown and supply it later; a listing link is optional. Requesting is free. You only pay if you later decide to purchase. Show your user the selected package's total price first. With their authorization, POST /v1/report-requests with name, email and price_cents. price_cents is the package total; package_id is single, three or five and defaults to single. For single provide vin, or explicitly set vin_unknown to true and omit vin if the VIN is not known. listing_url is optional in either case; an unknown-VIN inquiry needs no VIN preview. Do not send vehicle details for three/five. Use the current schema and prices from GET /v1/report-requests. Packages three/five request report credits; vehicles are specified after a later purchase. A VIN preview is not needed for credit inquiries. No payment is taken; next steps arrive by email. Never invent details. If required details are missing, send your user to /zugang.\n\nAccess formula: 1 Autocheck für 29,90 € inkl. MwSt. · kein Abo · auf Anfrage. Currently available on request. We email you personally when review capacity is available. Request credit for 3 or 5 car checks with your name and email. For a single car check, provide the VIN or explicitly mark it unknown and supply it later; a listing link is optional. Requesting is free. You only pay if you later decide to purchase."},"servers":[{"url":"https://www.checkdiefin.de"}],"security":[],"tags":[{"name":"vin","description":"VIN structure preview"},{"name":"reports","description":"Report price, samples and requests"},{"name":"access","description":"Legacy technical access requests"},{"name":"meta","description":"Service health"}],"paths":{"/v1/report-requests":{"get":{"operationId":"getReportRequestDetails","tags":["reports"],"summary":"Read report price and request schema","responses":{"200":{"description":"Current price, availability and required fields."}}},"post":{"operationId":"submitReportRequest","tags":["reports"],"summary":"Request a report or report credits","description":"Show the package price and get authorization. Submit name, email, package_id and price_cents. Single: provide vin or explicitly set vin_unknown to true and omit vin; listing_url is optional in either case. Three/five: omit vehicle fields. Inquiry only; no payment or credits granted. We email when capacity is available. Never invent missing details; use /zugang.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportRequest"}}}},"responses":{"202":{"description":"Saved or already received. Includes confirmation_email status."},"422":{"description":"Missing or invalid data, or incorrect price."},"429":{"description":"Too many submissions."},"503":{"description":"Storage temporarily unavailable. Request has not been accepted."}}}},"/v1/vin/identify":{"post":{"operationId":"identifyVin","tags":["vin"],"summary":"Free VIN structure preview","description":"Decodes VIN structure and WMI, returns a coverage expectation for the full report. Free, no authentication. VINs are personal data and must be sent in the body, never in a URL.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["vin"],"properties":{"vin":{"type":"string","minLength":17,"maxLength":17,"description":"17-character VIN, no I/O/Q."},"first_registration":{"type":"string","description":"Optional MM/YYYY. Lets the coverage check use a known year when the VIN itself does not encode one."}}},"example":{"vin":"WVWZZZ1KZ7W000000"}}}},"responses":{"200":{"description":"Preview result, always 200 — including for an unknown manufacturer."}}}},"/v1/reports":{"post":{"operationId":"requestReport","tags":["reports"],"summary":"Create a report for a VIN (requires an API key)","description":"Requires a bearer token or x-api-key. Without one, returns 401 with a next_step schema describing how to request access on behalf of your user.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["vin"],"properties":{"vin":{"type":"string","minLength":17,"maxLength":17},"first_registration":{"type":"string","description":"MM/YYYY"},"mileage_km":{"type":"integer"}}}}}},"security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"responses":{"401":{"description":"No API key sent.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"API key unknown or invalid.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/access-requests":{"post":{"operationId":"requestApiAccess","tags":["access"],"summary":"Request access on behalf of a user (free, no contract)","description":"Creates a pending access request. If you have no user e-mail, omit it and hand the returned claim_url to your user — never invent an address.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequest"},"example":{"use_type":"agent_for_user","client_type":"agent","found_via":"chatgpt","agent_name":"ChatGPT","preview_id":"pv_a1b2c3d4e5f6a7b8"}}}},"responses":{"202":{"description":"Request received (pending, pending_user_action, or already_pending)."},"422":{"description":"Validation error.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/reports/sample":{"get":{"operationId":"getSampleReport","tags":["reports"],"summary":"Demo report for a fictional vehicle","description":"Always returns the same fictional demo report. Never present its values as real.","responses":{"200":{"description":"Demo report, X-Demo-Data: true."}}}},"/v1/health":{"get":{"operationId":"getHealth","tags":["meta"],"summary":"Health check","description":"Returns {\"status\":\"ok\"} when the service is reachable.","responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Problem":{"type":"object","description":"RFC 9457 problem+json body, extended with German mirror fields and product context.","required":["type","title","status"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"title_de":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"detail_de":{"type":"string"}}},"AccessRequest":{"type":"object","required":["use_type","found_via","client_type"],"properties":{"email":{"type":"string","format":"email","description":"End user's address. Ask your user; never invent one. Omit to receive a claim_url instead."},"use_type":{"type":"string","enum":["private_buying","private_selling","business","agent_for_user"],"description":"Why access is requested."},"client_type":{"type":"string","enum":["agent","developer","human"],"description":"What kind of caller is making this request."},"found_via":{"type":"string","enum":["chatgpt","claude","perplexity","copilot","gemini","google","bing","tiktok","referral","other"],"description":"How the caller found checkdiefin.de."},"company":{"type":"string","description":"Required when use_type=business."},"agent_name":{"type":"string","description":"Name of the calling agent or app, if applicable."},"expected_monthly_volume":{"type":"string","description":"Rough expected monthly request volume, free text."},"preview_id":{"type":"string","description":"ID of a prior POST /v1/vin/identify preview, if any."},"vin_sample":{"type":"string","description":"A VIN this access is meant to cover, for context only. Not stored as a commitment."}}},"ReportRequest":{"type":"object","required":["name","email","price_cents"],"properties":{"name":{"type":"string","minLength":2,"maxLength":120},"email":{"type":"string","format":"email","maxLength":254,"description":"Ask your user; never invent contact details."},"vin":{"type":"string","pattern":"^(?:[A-HJ-NPR-Z0-9]{17}|\\s*)$","description":"Required for a single report unless the user explicitly does not know the VIN (vin_unknown: true). In that case omit it or leave it blank. Omit for credit packages."},"vin_unknown":{"type":"boolean","description":"Set true only when the user explicitly chooses to inquire without knowing the VIN. A single inquiry then needs only name and email; the listing URL is optional. Omit for credit packages."},"listing_url":{"type":"string","maxLength":2048,"pattern":"^(https?://|$)","description":"Optional public listing URL for a single report, HTTP or HTTPS, without embedded credentials. Omit for credit packages."},"package_id":{"type":"string","enum":["single","three","five"],"default":"single","description":"Single report or three/five report credits. Omit for one report. This is an inquiry, not a purchase or credit grant. We email when capacity is available."},"price_cents":{"type":"integer","enum":[2990,6900,9900],"description":"Total EUR cents for the selected package. Show the total before submitting."}},"oneOf":[{"required":["price_cents"],"properties":{"package_id":{"const":"single"},"price_cents":{"const":2990}},"anyOf":[{"required":["vin"],"properties":{"vin":{"pattern":"^[A-HJ-NPR-Z0-9]{17}$"}}},{"required":["vin_unknown"],"properties":{"vin_unknown":{"const":true}}}]},{"required":["package_id","price_cents"],"properties":{"package_id":{"const":"three"},"price_cents":{"const":6900},"vin":false,"vin_unknown":false,"listing_url":false}},{"required":["package_id","price_cents"],"properties":{"package_id":{"const":"five"},"price_cents":{"const":9900},"vin":false,"vin_unknown":false,"listing_url":false}}]}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"},"apiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key"}}},"x-problem-catalog":["https://www.checkdiefin.de/problems/invalid-vin-format","https://www.checkdiefin.de/problems/rate-limited","https://www.checkdiefin.de/problems/api-key-required","https://www.checkdiefin.de/problems/api-key-invalid","https://www.checkdiefin.de/problems/market-unsupported","https://www.checkdiefin.de/problems/validation-error","https://www.checkdiefin.de/problems/payload-too-large","https://www.checkdiefin.de/problems/malformed-json","https://www.checkdiefin.de/problems/not-found","https://www.checkdiefin.de/problems/method-not-allowed","https://www.checkdiefin.de/problems/internal-error","https://www.checkdiefin.de/problems/preview-expired"]}