{"openapi":"3.1.0","info":{"title":"Cipher API","version":"1.0.0","description":"Encode and decode classical ciphers and alphabets as an API — Morse code, ROT13, the Caesar shift (with any shift 1-25), Atbash, the NATO phonetic alphabet, leetspeak, A1Z26 (letters to numbers) and string reversal. Send text and a cipher and get the transformed string back, or decode it again — most are perfectly reversible. Everything runs locally, so it is fast and always available. Ideal for puzzle and escape-room games, ARGs, treasure hunts, education and coding lessons, retro and hacker-themed UIs, and chat bots. For base64/hex/URL encodings use the Encoding API; for cryptographic hashes use the Hash API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/cipher-api","description":"oanor gateway"}],"tags":[{"name":"Cipher"},{"name":"Reference"},{"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":["Cipher"],"summary":"Reverse a cipher","description":"","parameters":[{"name":"text","in":"query","required":true,"description":"Encoded text, e.g. Uryyb","schema":{"type":"string"},"example":"Uryyb"},{"name":"cipher","in":"query","required":true,"description":"The cipher to reverse","schema":{"type":"string"},"example":"rot13"},{"name":"shift","in":"query","required":false,"description":"Shift for the Caesar cipher (1-25)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"input":"Uryyb","cipher":"rot13","result":"Hello","operation":"decode","reversible":true},"meta":{"timestamp":"2026-06-01T00:04:26.499Z","request_id":"29b63bbc-ce02-48f0-aee7-e29c05e8c3fc"},"status":"ok","message":"Decoded","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":["Cipher"],"summary":"Apply a cipher to text","description":"","parameters":[{"name":"text","in":"query","required":true,"description":"Text to encode, e.g. Hello","schema":{"type":"string"},"example":"Hello"},{"name":"cipher","in":"query","required":true,"description":"morse | rot13 | caesar | atbash | nato | leet | a1z26 | reverse","schema":{"type":"string"},"example":"morse"},{"name":"shift","in":"query","required":false,"description":"Shift for the Caesar cipher (1-25, default 3)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"input":"Hello","cipher":"morse","result":".... . .-.. .-.. ---","operation":"encode"},"meta":{"timestamp":"2026-06-01T00:04:26.575Z","request_id":"1a4c586b-f0af-4160-8f70-3040f91efe83"},"status":"ok","message":"Encoded","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/ciphers":{"get":{"operationId":"get_v1_ciphers","tags":["Reference"],"summary":"The supported ciphers","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":8,"ciphers":[{"id":"morse","reversible":true,"description":"International Morse code (dots/dashes)"},{"id":"rot13","reversible":true,"description":"ROT13 letter rotation (self-inverse)"},{"id":"caesar","reversible":true,"description":"Caesar shift cipher (shift= param, default 3)"},{"id":"atbash","reversible":true,"description":"Atbash mirror cipher (self-inverse)"},{"id":"nato","reversible":true,"description":"NATO phonetic alphabet"},{"id":"leet","reversible":false,"description":"Leetspeak (l33t) — decode is best-effort"},{"id":"a1z26","reversible":true,"description":"A1Z26 (letters ↔ numbers)"},{"id":"reverse","reversible":true,"description":"Reverse the string (self-inverse)"}]},"meta":{"timestamp":"2026-06-01T00:04:26.644Z","request_id":"d59a1124-b652-412b-9cc8-49be64c83ed1"},"status":"ok","message":"Ciphers retrieved","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":"Usage notes","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Classical ciphers & alphabets. /v1/encode = apply a cipher to text (cipher=morse|rot13|caesar|atbash|nato|leet|a1z26|reverse; caesar takes shift=1..25); /v1/decode = reverse it (where reversible — leet decode is best-effort); /v1/ciphers = the supported ciphers. Runs fully locally — fast and always available. For base64/hex/url use the Encoding API; for hashes use the Hash API.","source":"local cipher engine","ciphers":["morse","rot13","caesar","atbash","nato","leet","a1z26","reverse"],"endpoints":["/v1/encode","/v1/decode","/v1/ciphers","/v1/meta"]},"meta":{"timestamp":"2026-06-01T00:04:26.710Z","request_id":"b64b225e-ca50-430d-93ea-d972bdc21c7e"},"status":"ok","message":"Meta retrieved","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":16000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":240,"monthly_call_quota":235000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":830,"monthly_call_quota":920000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":2760,"monthly_call_quota":3800000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/cipher-api"}