Changelog
Changes to the API within /v1 only add things and never remove them; see Versioning. Newest changes are at the top of each section.
- October 18, 2026: When we’re under heavy load, decide() now answers that it’s busy (503 decide_timeout or 429 concurrency_limited) instead of failing with a 500. On a 503, the SDK then applies its fail-open or fail-closed setting. Unknown keys get a plain 401.
- October 18, 2026: Deny responses can now include the key’s label, so your logs show which agent was blocked. It’s off by default. To turn it on for your account, email support.
Node SDK
Section titled “Node SDK”- 1.2.4 (October 22, 2026): On npm:
npm install ordainer. Same code as 1.2.3; only the package README’s install steps changed. - 1.2.3 (October 18, 2026): docs-site download only. Error messages reworded; codes, statuses and fields unchanged. Match on error.code, not the message. The 503, test-limit and plan-deny messages are in plain words (see Errors), and a plan limit can name the agent once it’s turned on for your account (email support). The 1.2.2, 1.2.1 and 1.2.0 files stay available unchanged. A call held back because too many calls are running at once on one key now gets its own message, ending
(concurrency_limited); thecodefield staysrate_limited. - 1.2.2 (October 9, 2026): docs-site download only.
result.wouldDenyis nowtrueonly for a shadow deny (an enforce deny haswouldDeny: falseandallowed: false), and the package README’s install steps match this site. The 1.2.1 and 1.2.0 files stay available unchanged. - 1.2.1 (October 8, 2026): docs-site download only. The packed file’s default base URL is
https://api.ordainer.dev. - 1.2.0 (October 6, 2026): shadow mode never blocks on a plan or test limit, and
429 safety_limit_reachedlets calls run. What changed in 1.2.0.
Ruby gem
Section titled “Ruby gem”- 0.1.1 (October 18, 2026): on RubyGems. Error messages reworded, with the same text as Node SDK 1.2.3; codes, statuses and fields unchanged. Match on error.code, not the message. A call held back because too many calls are running at once on one key gets its own message, ending
(concurrency_limited).Ordainer.deny_responseno longer raises when the server’s reset time can’t be turned into a number of seconds; that answer just has noRetry-Afterheader. - 0.1.0 (October 14, 2026): first release on RubyGems, with
Ordainer::Client#decide, retries,fail_modeand an optional Rails guard.