{"openapi":"3.1.0","info":{"title":"iban-api — SEPA validation + German IBAN calculation (fail-closed)","description":"IBAN validation for all SEPA countries plus fail-closed German BLZ + Kontonummer → IBAN calculation against the complete Bundesbank rulebook. Paid per request via x402 at the edge (USDC on Base, Coinbase facilitator); this origin never sees unpaid requests. Registry data: Quelle: Deutsche Bundesbank.","version":"0.1.0"},"paths":{"/v1/check":{"post":{"summary":"V1 Check","description":"Full layered offline check of one IBAN: structure (ISO 7064 MOD 97-10), BBAN + national check digits, bank existence, account checksums (DE Prüfziffer ~98% of banks, NL elfproef), enrichment (name, BIC, LEI) and SEPA reachability (SCT/SCT Inst/SDD/SRTP/VoP, RT1/TIPS, SCL). x402 price: $0.001 per request.","operationId":"v1_check_v1_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response V1 Check V1 Check Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/batch":{"post":{"summary":"V1 Batch","description":"Check up to 100 IBANs in one request (same result shape as /v1/check, input order kept). Exceeding the cap fails the whole call with a machine-readable protocol error — never per-IBAN verdicts. x402 price: $0.100 flat per request.","operationId":"v1_batch_v1_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response V1 Batch V1 Batch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/calculate/de":{"post":{"summary":"V1 Calculate De","description":"Convert legacy German bank details (BLZ + Kontonummer) into the provably correct IBAN — or a machine-readable refusal, never a guess. Applies the complete Bundesbank IBAN rulebook fail-closed (successor redirects, account transforms, keine-Ermittlung refusals). Removes CONVERSION risk; counterparty/ownership verification is the payer bank's VoP. x402 price: $0.010 per request.","operationId":"v1_calculate_de_v1_calculate_de_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculateDeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response V1 Calculate De V1 Calculate De Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bank/de/{blz}":{"get":{"summary":"V1 Bank De","description":"German bank-registry lookup: name, city, BIC, Prüfziffer method code, IBAN rule key (field 14 of the extended Bankleitzahlendatei — data no other public API exposes), deletion status and Nachfolge-BLZ when published. Unknown or malformed BLZ → 404 unknown_bank_code. x402 price: $0.001 per request.","operationId":"v1_bank_de_v1_bank_de__blz__get","parameters":[{"name":"blz","in":"path","required":true,"schema":{"type":"string","title":"Blz"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response V1 Bank De V1 Bank De  Blz  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/demo/check":{"post":{"summary":"V1 Demo Check","description":"Free playground demo lane: the same full check verdict as /v1/check, no payment — hard rate-limited (10 requests per 5 minutes per IP). For evaluation only; use /v1/check for production traffic.","operationId":"v1_demo_check_v1_demo_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response V1 Demo Check V1 Demo Check Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/demo/calculate/de":{"post":{"summary":"V1 Demo Calculate De","description":"Free playground demo lane: the same fail-closed calculation as /v1/calculate/de, no payment — shares the demo rate limit (10 requests per 5 minutes per IP). For evaluation only.","operationId":"v1_demo_calculate_de_v1_demo_calculate_de_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculateDeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response V1 Demo Calculate De V1 Demo Calculate De Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/health":{"get":{"summary":"V1 Health","description":"Free: service liveness, pinned iban-check version, and every data snapshot date.","operationId":"v1_health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response V1 Health V1 Health Get"}}}}}}},"/v1/reason-codes":{"get":{"summary":"V1 Reason Codes","description":"Free: the machine-readable reason-code catalog both pipelines emit (code → one-line meaning). Cache it; it changes only with releases.","operationId":"v1_reason_codes_v1_reason_codes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response V1 Reason Codes V1 Reason Codes Get"}}}}}}}},"components":{"schemas":{"BatchRequest":{"properties":{"ibans":{"items":{"type":"string"},"type":"array","title":"Ibans"},"strict":{"type":"boolean","title":"Strict","default":false}},"type":"object","required":["ibans"],"title":"BatchRequest"},"CalculateDeRequest":{"properties":{"bank_code":{"type":"string","title":"Bank Code"},"account":{"type":"string","title":"Account"}},"type":"object","required":["bank_code","account"],"title":"CalculateDeRequest"},"CheckRequest":{"properties":{"iban":{"type":"string","title":"Iban"},"strict":{"type":"boolean","title":"Strict","default":false}},"type":"object","required":["iban"],"title":"CheckRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}