Skip to content

FAQ

Common questions about shipping, operating, and paying for Rymi voice agents. If you don't see your question here, the full docs or the studio chat can help.

Top questions

How do I publish my agent so it can take real calls?

Open the agent in Studio, run the publish validation, then attach a phone number under Numbers. Calls only route to published agents — drafts can be tested in the browser but won't answer real phone calls. See How Studio works.

Why are my calls not connecting?

Check your telephony connection under Numbers → Connect provider. Verify the carrier is connected and that the number is attached to a published agent. Confirm the carrier's answer URL is set to gateway.rymi.live/inbound/<provider>. See the full Telephony guide.

How is billing calculated and where do I add credits?

Calls are billed per minute against your prepaid credit balance, in 30-second increments rounded up (so a 20-second call is half a minute, not a whole one). Top up from Settings → Billing & usage or via the Credits chip in the sidebar. Failed calls (busy, no-answer) don't bill — only calls that connect and exchange audio. See the Billing API for programmatic access.

My agent sounds robotic — how do I improve voice quality?

Try a different voice in the Voice section of Studio. Premium voices (ElevenLabs, Cartesia) usually sound more natural for production traffic than the default OpenAI TTS. See the Model picker guide for full tradeoffs.

How do I set up webhooks for call events?

Add a webhook endpoint in Settings → Webhooks. Rymi signs every payload — verify the X-Rymi-Signature header against an HMAC-SHA256 of {X-Rymi-Timestamp}.{raw body} using your webhook secret. See Webhooks Verification for code examples.

Can I bring my own LLM or voice provider keys?

Yes. Add OpenAI, Anthropic, ElevenLabs, Cartesia, Groq, Cerebras, and 20+ other provider keys in Settings → BYO Providers and Rymi will route calls through your accounts. Secret keys are encrypted at rest and never exposed to the browser. See BYO Providers.

Getting started

How do I create my first agent?

Open the Studio, describe what you want the agent to do, and the designer will assemble a default configuration. See the Quickstart for a five-minute walkthrough.

Is there an official SDK?

Yes — Rymi is API-first, with official open-source SDKs: @rymi/node (npm) for server-side JavaScript/TypeScript, rymi (PyPI) for Python, and @rymi/mcp — an MCP server that lets Claude, Cursor, and other AI clients manage agents directly. Browse the source under github.com/rymi-live. Browser and React SDKs (@rymi/web, @rymi/react) are on the way; until then, build in the browser against the REST API with publishable keys.

Do I need a phone number to test?

No. You can test-call any agent from the studio's built-in test panel without attaching a number. Numbers are only required for inbound production calls.

Which languages are supported?

150+ languages. For each language you select, Rymi resolves a complete speech-to-text, reasoning, and voice stack from its provider catalog (Azure, Google, Deepgram, ElevenLabs, Sarvam, OpenAI, and more). See Languages for the current list and per-language model coverage.

Pricing & billing

How is usage billed?

Per minute of call audio, billed in 30-second increments rounded up. The studio shows your current plan's rate; invoices itemize calls by agent. There is no separate fee for inbound vs outbound.

Do failed calls count?

Only calls that connect and exchange audio bill. Busy signals, no-answer, and provider-side failures do not.

Can I cap spend per agent?

Set advanced.maxCallDuration (seconds per call) to bound the cost of any single call, and configure spend alerts (PUT /v1/billing/alerts) to get notified at USD thresholds. Tenant-level daily-call and concurrency quotas are available on request.

Calls & telephony

How long does it take to connect a call?

Response latency depends mostly on the model stack you pick — realtime/native-audio paths respond fastest, separate STT + LLM + TTS stacks add a hop per stage. See the Model picker guide for the latency tradeoffs per provider.

What happens if the caller hangs up mid-sentence?

The agent finalizes any in-flight extraction, writes the transcript, and emits a call.completed webhook with the truncated duration. No audio is lost.

Can multiple callers share one number?

Yes. Numbers fan out to their attached agent per call — concurrency is limited only by your tenant plan. Use Queue & Fanout for high-volume outbound.

How do I adapt the agent per caller?

Use Caller Routing: define caller types with trigger phrases and an approach for each, and the agent shifts behavior mid-call when it detects a match. Configured in Studio under "Caller Routing".

Webhooks

What happens if my webhook endpoint fails?

Rymi makes up to 5 delivery attempts with exponential backoff (roughly 1s, 2s, 4s, 8s between retries; each attempt times out after 3 seconds). If the final attempt fails and the webhook has an alert_email configured, you get an email (throttled to one per hour per endpoint). Failed deliveries are not replayed automatically — re-fetch the call via the REST API if you missed one.

How do I verify a webhook is really from Rymi?

Compare the X-Rymi-Signature header against an HMAC-SHA256 of {X-Rymi-Timestamp}.{raw body} using your webhook secret. The timestamp is Unix milliseconds — reject anything older than a few minutes to block replays. See the verified code examples in Webhooks.

Which events fire for a single call?

After the call ends and post-call processing finishes, call.completed and call.intelligence.ready fire together — call.completed carries the transcript and metadata, call.intelligence.ready carries the summary, extraction, and evaluation. There is no call.started event today. Retries may duplicate deliveries — treat handlers as idempotent.

Limits & quotas

What's the per-tenant call concurrency?

If your tenant has a max_concurrent_calls quota set, new call dispatches are rejected with a quota_exceeded.concurrent_calls error while the cap is reached — queued and in-progress calls both count toward it. By default no cap is set. Limits are configured per tenant; contact support with your expected peak.

How long can a single call last?

Default cap is 10 minutes (maxCallDuration: 600). Allowed range is 30 seconds to 2 hours.

How much data is retained?

Call logs, transcripts, and recordings use the active workspace retention policy: Free workspaces use the default short retention window, and Enterprise workspaces can set custom retention.

Troubleshooting

My agent isn't picking up calls

Check: (1) the number is attached to the agent, (2) the agent is published (not draft), (3) your tenant's balance is positive. The dashboard status page shows the number's current binding.

The voice sounds different from what I picked

If you changed the billing tier or TTS provider, voice selection may have been reset to a tier-compatible default. Re-open the Voice section in the studio to confirm.

I'm seeing 401s from the REST API

Verify the Authorization: Bearer $RYMI_API_KEY header. Secret keys start with rymi_ — if yours starts with sb_publishable_, it's a browser key and can only start WebRTC calls, not read account data. Revoking a key disables it immediately.

Extraction fields are empty

Extraction runs after the call, against the transcript. Check that (1) the agent has post_call.structured_extraction configured with a prompt or JSON schema, and (2) features.transcription_enabled is on — without a transcript the whole intelligence pipeline is skipped and intelligence_status stays not_started. Very short calls may simply not contain the information your schema asks for.