{"openapi":"3.0.3","info":{"title":"QR Code API","version":"1","description":"Generate QR codes as SVG or PNG data URL."},"servers":[{"url":"https://tulz.org"}],"paths":{"/api/v1/qr":{"post":{"summary":"Generate a QR code","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","description":"The text or URL to encode. Max 2000 chars."},"format":{"type":"string","enum":["svg","png"],"default":"svg","description":"Output format."},"size":{"type":"integer","minimum":100,"maximum":2000,"default":300,"description":"PNG width/height in pixels (ignored for SVG)."},"errorCorrection":{"type":"string","enum":["L","M","Q","H"],"default":"M","description":"Error correction level."},"darkColor":{"type":"string","default":"#000000","description":"Hex color for dark modules."},"lightColor":{"type":"string","default":"#ffffff","description":"Hex color for light modules."},"margin":{"type":"integer","minimum":0,"maximum":10,"default":4,"description":"Quiet zone margin modules."}}}}}},"responses":{"200":{"description":"SVG string (Content-Type: image/svg+xml) or PNG data URL (Content-Type: text/plain)"},"400":{"description":"Bad request / invalid JSON"},"422":{"description":"Validation error"},"429":{"description":"Daily limit exceeded"}}}}}}