{"openapi":"3.1.0","info":{"title":"Base45 API","version":"1.0.0","description":"Encode and decode Base45 (RFC 9285) — the compact binary-to-text encoding designed to pack densely into the alphanumeric mode of QR codes, best known as the carrier for the EU Digital COVID Certificate. The encode endpoint turns text (UTF-8) or raw bytes given as hex into a Base45 string; the decode endpoint turns a Base45 string back into bytes, returned as hex and — when the bytes are valid UTF-8 — as text. It uses the official 45-character alphabet (0-9, A-Z and a handful of symbols), packs two bytes into three characters (or one byte into two), and validates length and value ranges strictly so malformed input is rejected rather than silently mangled. Everything is computed locally and deterministically, so it is instant and private. Ideal for QR-code payloads, digital health and travel certificates, alphanumeric-mode encoders, and any binary data that must survive an uppercase-only channel. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is Base45 specifically; for base64, base32, hex, URL or HTML entity encoding use a general encoding API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/base45-api","description":"oanor gateway"}],"tags":[{"name":"Base45"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/decode":{"get":{"operationId":"get_v1_decode","tags":["Base45"],"summary":"Decode Base45 to bytes","description":"","parameters":[{"name":"base45","in":"query","required":true,"description":"The Base45 string","schema":{"type":"string"},"example":"%69 VD92EX0"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"hex":"48656c6c6f2121","text":"Hello!!","bytes":7},"meta":{"timestamp":"2026-06-03T17:42:18.195Z","request_id":"90a4fea2-03e9-4e7e-a11b-23d0d790a369"},"status":"ok","message":"Decode from Base45","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/encode":{"get":{"operationId":"get_v1_encode","tags":["Base45"],"summary":"Encode bytes to Base45","description":"","parameters":[{"name":"text","in":"query","required":false,"description":"Text to encode (UTF-8)","schema":{"type":"string"},"example":"Hello!!"},{"name":"hex","in":"query","required":false,"description":"Or raw bytes as hex (alternative to text)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"base45":"%69 VD92EX0","input_bytes":7},"meta":{"timestamp":"2026-06-03T17:42:18.299Z","request_id":"fcbc6cf8-d1d7-453c-88fd-bf3f0c2c4426"},"status":"ok","message":"Encode to Base45","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"name":"Base45 API","notes":"Base45 packs two bytes into three characters (or one byte into two), so it fits QR alphanumeric mode densely. It is not base64 — for base64/base32/hex/URL/HTML encodings use a general encoding API. Nothing is stored.","version":"v1","endpoints":[{"path":"/v1/encode","params":{"hex":"or raw bytes as hex (alternative to text)","text":"text to encode (UTF-8)"},"returns":"the Base45 string"},{"path":"/v1/decode","params":{"base45":"the Base45 string (required)"},"returns":"the decoded bytes as hex, and as text when valid UTF-8"},{"path":"/v1/meta","params":[],"returns":"this document"}],"description":"Encode and decode Base45 (RFC 9285) — the compact binary-to-text encoding designed to pack efficiently into alphanumeric QR codes, best known from the EU Digital COVID Certificate. The encode endpoint turns text (UTF-8) or raw hex bytes into a Base45 string; the decode endpoint turns a Base45 string back into bytes, returned as hex and, when the bytes are valid UTF-8, as text. It uses the 45-character alphabet (0-9, A-Z and a few symbols) and validates length and value ranges strictly. Pure local, no key."},"meta":{"timestamp":"2026-06-03T17:42:18.415Z","request_id":"177054e7-cc03-4b00-b267-126b02b158da"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":5235,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":675,"monthly_call_quota":14750,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2665,"monthly_call_quota":198500,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6465,"monthly_call_quota":1035000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/base45-api"}