How it works Pricing Docs Book a demo Login
FAQ

Questions, answered.

How Rouva handles reliability, your data, and your bill.

Getting started 2
Is Rouva a fit for my team?

Rouva is built for small teams and solo developers who use AI APIs in their product or workflow and want the bill to stop being a mystery — typically anyone whose monthly AI spend adds up to more than the subscription costs, across providers such as Anthropic, OpenAI, and any others you use. If you need self-hosting or on-prem deployment, we're not that (yet) — Rouva is fully managed, which is the point.

Do I need to change my code?

Barely. Install the @rouvanpm/rouva SDK, or point your existing HTTP calls at the Rouva gateway endpoint with your rva_ key. One integration covers every connected provider — the docs quickstart takes about two minutes.

Privacy & security 2
Do you store my prompts?

Rouva doesn't log your conversations. Each request stores metadata only — token counts, cost, task type, and a quality score — to power your dashboard. A few short-lived caches are also kept: a one-way hash of your prompt with its task type (24 hours), a copy of the latest response to an identical request so a client retry isn't charged twice (reused for 60 seconds), and, for long conversations, a summary of older turns (24 hours). See the Privacy Policy for details.

Whose API keys are used?

Yours. You connect your existing provider keys, and usage is billed by each provider directly to you at their standard rates — Rouva never marks up tokens. Keys are encrypted at rest with AES-256-GCM and only decrypted at request time.

Reliability 3
What happens if Rouva goes down?

Auto-routed requests fail over automatically: if a provider returns an error or is overloaded, Rouva retries with the next capable model from another provider you've connected, so your request still completes. And because you bring your own API keys, you can always call providers directly — there's no lock-in.

How much latency does Rouva add?

One lightweight classification step before your request is forwarded — classification results are cached, so repeat patterns skip it entirely. Responses stream straight through from the provider, and quality scoring runs after your response completes, never in the request path.

What happens to my conversation history when Rouva switches models?

Nothing is lost. AI models don't hold your conversation between requests — every request is self-contained and carries the full transcript with it. Rouva forwards that complete history to whichever model it selects, translating provider-specific formats (like system prompts) so the new model sees exactly what the previous one did. Switching mid-conversation is seamless.

Routing & costs 3
How are savings calculated?

Conservatively. Savings are counted only when you explicitly requested a model and Rouva routed to a cheaper one that could handle the task: what the requested model would have cost, minus what you actually paid. Auto-routed requests record zero savings — we don't inflate the number against a hypothetical baseline.

Can I force a specific model?

Yes — pass a model explicitly and Rouva treats it as a cost ceiling: it routes cheaper when possible, but never more expensive. The one exception is Routing Overrides: if you've configured an account-level override for the detected task type and Intelligent Routing is on, the override takes precedence over the caller's model choice.

What are Routing Overrides?

Routing Overrides let you pin specific models to specific task types at the account level — as enforced policy, not a hint. Configure them in Settings → Intelligent Routing. When an override is active for a task type, Rouva ignores the model the caller requested and routes to your override model instead, across all endpoints and SDKs. Overrides require Intelligent Routing to be enabled. On /api/gateway/messages and /v1, tool-request overrides apply only within the same provider (tool schemas are provider-specific). On /run, overrides can cross providers — the canonical layer translates tool schemas and conversation history to the target provider's format automatically.

Tools & agentic 6
Does the agentic harness accept both OpenAI and Anthropic tool formats?

Yes. Pass tools in either OpenAI format ({ "type": "function", "function": { "name": ..., "parameters": ... } }) or Anthropic format ({ "name": ..., "input_schema": ... }) — the gateway detects the format by shape and re-serializes it correctly for the target model. When the schema already matches the target provider's format, it is replayed verbatim so vendor-specific fields like strict or cache_control are preserved. System messages are automatically hoisted to Anthropic's top-level parameter when routing to Claude.

Can the agentic loop use a different provider than the caller's pinned model?

Yes, when Intelligent Routing is enabled. Before the loop starts, the gateway classifies the prompt and selects the cheapest capable model across your connected Anthropic and OpenAI-compatible providers. Routing between two providers in the same dialect group — for example OpenAI to Alibaba — is not performed, because vendor-specific fields would not transfer safely. The selected provider is used for all turns. Conversation history is translated automatically to the target wire format.

Do I need to specify a model when using tools?

model is required for all tools requests on /api/gateway/messages and /v1 — those endpoints prohibit cross-provider substitution (tool schemas are provider-specific), but same-provider Routing Overrides can still redirect to a cheaper model on the same provider. On /run, model is still required but Intelligent Routing selects a provider and model once before the loop begins — the session stays on that provider for all turns, with the canonical layer translating tool schemas automatically. Override-based cross-provider routing applies on /run when the override provider is connected.

Will Rouva substitute a cheaper model for my tools request?

It depends on the endpoint. On /api/gateway/messages and /v1: only within the same provider. On /run with Intelligent Routing enabled: automatic routing can cross the Anthropic ↔ OpenAI-compatible boundary when the session is fully translatable — the automatically selected model is always at or below the pinned model's cost at initial routing (strictly cheaper in the normal case; an equal-cost model is chosen only as a last resort when the pinned model cannot fit the token budget). Note that mid-run quality escalation can exceed this ceiling — if a turn produces a low-confidence response, the gateway may escalate to a more capable model for subsequent turns, which can cost more than the pinned model. Routing Overrides are applied as policy and are not price-constrained.

Why does my tools request show no quality score in the dashboard?

Quality scoring is skipped for tools requests — tool call responses are structured JSON, not prose, so the judge has nothing to score. The Quality Score column shows "N/A". Task type shows when the request could be classified (it needs a user message with text); otherwise the row shows "Agent tool". Usage and cost are tracked normally.

Why does my tools response say finish_reason "stop" instead of "tool_calls"?

This is OpenAI's own behavior — when tool_choice forces a specific function, OpenAI returns "stop" rather than "tool_calls". Rouva passes the value through unchanged. To reliably detect tool calls, check for the presence of message.tool_calls rather than branching on finish_reason.

Teams 3
Can I add team members to my account?

Yes. Go to the Team page in your dashboard and invite members by email. Members get a workspace API key that routes through your connected provider keys — you control spend caps and model restrictions per member and can revoke access at any time. Spend is tracked separately per member in the dashboard.

Do members get notified when they approach their spend cap?

Yes. When a member's month-to-date spend crosses 80% or 100% of their cap, Rouva automatically sends an email to the member and a separate email to the workspace owner — no configuration needed beyond setting the cap. Each threshold fires at most once per 24-hour window. If your workspace has a Slack webhook configured, the owner also receives a Slack notification. If a single request takes the member past both thresholds at once, only the 100% alert is sent — the 80% alert is skipped.

Can I restrict which AI models a team member can use?

Yes. On the Team page, click Edit next to any member to open their settings panel. Under Model restrictions, expand each provider and check the models you want to allow. Saving with no models checked means all models are available (no restrictions). When a member requests a disallowed model, the gateway reroutes to the permitted model with the lowest combined input and output price within an eligible set. For tool calls on /api/gateway/messages the fallback is restricted to the same provider; on /api/gateway/run cross-dialect fallbacks are allowed but same-dialect cross-provider routing and dialect-incompatible providers are excluded. A 403 is only returned if no permitted fallback exists within the eligible set.

Still have a question? Email support@rouva.io or book a demo.