Knowledge Base
Get answers fast. Search our knowledge base or browse by category below.
Try a different search term or browse all questions.
There are two paths to get started, depending on how much control you want:
Option 1: SDK integration (recommended) -- gives you granular policy control, custom metadata, and error handling.
npm install @reins/sdk
import { Reins } from '@reins/sdk';
const reins = new Reins({ apiKey: 'rns_...' });
const result = await reins.govern(openai.chat.completions.create({
model: 'gpt-4',
messages: [{ role: 'user', content: 'Hello' }]
}));
Option 2: Proxy mode -- zero code changes. Just change your base URL:
// Before
const openai = new OpenAI({ baseURL: 'https://api.openai.com/v1' });
// After
const openai = new OpenAI({ baseURL: 'https://proxy.reins.dev/v1' });
We recommend SDK integration for production workloads because it gives you finer-grained policy enforcement, agent-level metadata, and graceful handling of blocked calls.
Reins supports all major AI providers out of the box:
If your provider speaks HTTP and returns token usage data, Reins can govern it. For custom providers, use our generic HTTP adapter.
About 20 minutes end-to-end. Here's the breakdown:
npm install @reins/sdk or pip install reins-sdk) and wrap your AI calls.Once your first governed call executes, you'll see it appear in the audit log in real time. Check our Quick Start guide for a step-by-step walkthrough.
It depends on which integration path you choose:
SDK mode (minimal changes, more control): You wrap your existing AI calls with the Reins client. This takes 3 lines of code and gives you full policy control, custom metadata tagging, and graceful handling of blocked calls.
Proxy mode (zero code changes): You change a single URL -- your AI provider's base URL points to Reins instead. Reins forwards the request after policy evaluation. No SDK, no code changes, no dependency.
We recommend SDK mode for production workloads where you need granular agent-level policies. Proxy mode is great for getting started quickly or governing agents you can't modify.
Every new account gets a 3-day free trial with full feature access. No credit card required.
During the trial you get access to unlimited agents, all policy types, full audit logging, webhook integrations, and the complete dashboard.
When the trial ends, your account automatically downgrades to the Free tier -- 2 agents and 100 transactions per day. No data is deleted. Upgrade anytime to restore full access.
Reins uses per-agent pricing with monthly or annual billing. Annual plans save 20%.
All tiers include unlimited policy rules, full audit logs, and webhook integrations. See the Pricing page for full details.
An agent is any distinct process that makes AI API calls through Reins. Each unique agent ID you register counts as one agent.
Some examples:
You can see your active agent count anytime in the dashboard.
Yes. Plan changes are flexible:
No cancellation penalties, no hidden fees. You can change plans from Settings > Billing in the dashboard at any time.
No. Blocked calls are intercepted before they reach the AI provider. The call never executes, so you're never charged for it -- neither by Reins nor by your AI provider.
This is one of the core value propositions: Reins saves you money by preventing calls that would exceed your policies from ever being made.
Here's the timeline:
You can upgrade at any time to restore full access. Your data stays intact regardless of your plan status.
Yes. Reins integrates natively with LangChain in Python. Wrap your LangChain LLM with the Reins client:
from reins import ReinsClient
from langchain_openai import ChatOpenAI
reins = ReinsClient(api_key="rns_...")
llm = ChatOpenAI(model="gpt-4")
# Wrap the LLM with Reins governance
governed_llm = reins.wrap(llm, agent_id="my-langchain-agent")
response = governed_llm.invoke("Summarize this report...")
Every call through the governed LLM is evaluated against your policies before execution. If a call would exceed a budget, it's blocked and a ReinsBlockedError is raised.
Yes -- and we recommend it. Reins and observability tools like Helicone and Langfuse solve different problems and complement each other:
Reins sits upstream in your call chain. It evaluates policies and decides whether a call proceeds. If it proceeds, Helicone/Langfuse observe and log it on the way out. There's no conflict or overlap.
Install from PyPI and initialize with your API key:
pip install reins-sdk
from reins import ReinsClient
reins = ReinsClient(api_key="rns_...")
# Pre-flight check: will this call be allowed?
check = reins.check(agent_id="my-agent", vendor="openai",
estimated_cost=0.03)
if check.allowed:
response = openai.chat.completions.create(...)
reins.record(check.transaction_id, actual_cost=response.usage.total_cost)
else:
print(f"Blocked: {check.reason}") # e.g., "Daily budget exceeded"
The SDK handles retries, caching, and graceful degradation. If Reins is unreachable, calls default to allow (fail-open) unless you configure fail-closed mode.
Yes. Reins has a full REST API for programmatic access. Key endpoints:
POST /api/v1/check -- Pre-flight policy evaluation. Pass agent ID, vendor, and estimated cost; get back allow/block decision.GET /api/v1/transactions -- Query your audit log with filters (date range, agent, vendor, status).POST /api/v1/policies -- Create and manage governance rules programmatically.GET /api/v1/agents -- List registered agents and their current spend status.All endpoints require an API key in the Authorization header. Explore the API interactively at /playground.
Yes. Reins supports real-time alerts through multiple channels:
You can configure alerts at two levels:
Alerts fire in real time. Configure them from Settings > Notifications in the dashboard, or via the REST API.
Yes. Reins is SOC 2 Type II certified. We undergo annual audits conducted by an independent third-party auditor.
Our SOC 2 report covers the Trust Services Criteria for Security, Availability, and Confidentiality. Enterprise customers can request a copy of the full report by contacting reins@polsia.app.
By default, all data is stored in AWS us-east-1 (US East, N. Virginia).
For Enterprise tier customers, EU hosting is available (AWS eu-west-1, Ireland) to meet data residency requirements.
All data is encrypted:
Reins never stores your AI provider API keys. We only process transaction metadata (cost, model, token count) -- not the content of your prompts or responses.
Yes. Audit logs can be exported through two methods:
GET /api/v1/transactions?format=csv for programmatic export. Same filter support, plus pagination for large datasets.Exports include transaction ID, timestamp, agent, vendor, model, cost, policy evaluation result, and any custom metadata you've attached to your governed calls.
Reins uses multiple authentication methods depending on the context:
Default retention periods:
After the retention period expires, transaction metadata (cost, model, agent, timestamp) is retained indefinitely for aggregate reporting. Request/response payloads (if captured) are purged.
You can request early data deletion at any time by contacting support.
Run through this checklist:
rns_ and hasn't been revoked in Settings > API Keys.npm list @reins/sdk or pip show reins-sdk to check.govern() must match one registered in your dashboard.If none of these resolve it, contact support at reins@polsia.app with your agent ID and we'll investigate.
Policy evaluation order matters. Policies are evaluated top-to-bottom in the order they appear in your dashboard. An earlier "allow" rule may be matching before your "block" rule gets a chance to evaluate.
To fix this:
There are two types of 429 errors, and they mean very different things:
Rate limit 429 -- You're making too many API calls per second. Reins allows up to 1,000 requests/second per organization. The error body will contain "reason": "rate_limit". Solution: add client-side rate limiting or contact us for a higher limit.
Budget limit 429 -- Your spending limit has been reached. This is Reins doing its job -- it's blocking calls that would exceed your budget policy. The error body will contain "reason": "budget_exceeded" along with details about which policy triggered the block.
Always check the reason field in the error response body to distinguish between the two.
Follow these steps:
"evaluated": false.Yes. Use demo mode to evaluate policies without enforcing them:
// Set in your agent's environment
REINS_MODE=demo
// Or pass it in the SDK
const reins = new Reins({
apiKey: 'rns_...',
mode: 'demo' // log + evaluate, never block
});
In demo mode:
This is the recommended approach for validating your policy configuration before going live.
Yes. Enterprise tier includes a custom Service Level Agreement with:
SLA terms are negotiated as part of the Enterprise contract. Contact sales to discuss your requirements.
On-prem deployment is on our 2026 roadmap for Enterprise customers. We're actively working on a containerized version that can run in your VPC.
In the meantime, Reins is available as a managed cloud service with data residency options:
If on-prem is a hard requirement, reach out to sales and we'll discuss timelines and early access.
Yes. We provide Data Processing Agreements at two levels:
We typically turn around standard DPA requests within 2 business days.
Yes. SAML-based Single Sign-On is available on the Enterprise tier.
Supported identity providers:
SCIM provisioning (automatic user provisioning/deprovisioning from your IdP) is on our roadmap and expected in Q3 2026.
To enable SSO, contact sales with your IdP details and we'll configure it within 1 business day.
We offer a comprehensive security package for Enterprise customers:
Turnaround: We typically deliver the security package within 3 business days of request.
From zero to governed in four steps.
Sign up at the dashboard and grab your API key. No credit card required.
npm install or pip install, then wrap your AI calls with the Reins client.
Set a budget limit, choose which agents it applies to, and activate it.
Every governed call appears in the audit log in real time. You're live.
Our team typically responds within 4 hours. Drop us a line and we'll get back to you.