Quickstart
Get your first voice agent making a call in a few minutes.
There are two ways to reach a live call. Build the agent in Studio by clicking through the builder, or create it from the API. The steps below take the API route. To do it without writing code, follow How Studio works. Both paths end at the same place: a published agent and a real call.
1. Get your API key
Sign up at studio.rymi.live and copy your API key from the dashboard.
export RYMI_API_KEY="your_api_key_here"2. Create an agent
Install a client library first (skip if you're using curl):
npm install @rymi/nodepip install rymiThen create the agent:
curl -X POST https://api.rymi.live/v1/agents \
-H "Authorization: Bearer $RYMI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Alex - Sales Agent",
"system_prompt": "You are Alex, a friendly sales assistant for TechCorp. Your goal is to qualify inbound leads by asking about their company size and budget. Be warm, concise, and professional."
}'import { Rymi } from '@rymi/node';
const rymi = new Rymi(); // reads RYMI_API_KEY from the environment
const agent = await rymi.agents.create({
name: 'Alex - Sales Agent',
system_prompt:
'You are Alex, a friendly sales assistant for TechCorp. ' +
'Your goal is to qualify inbound leads by asking about their company size and budget. ' +
'Be warm, concise, and professional.'
});from rymi import Rymi
rymi = Rymi() # reads RYMI_API_KEY from the environment
agent = rymi.agents.create(
name="Alex - Sales Agent",
system_prompt=(
"You are Alex, a friendly sales assistant for TechCorp. "
"Your goal is to qualify inbound leads by asking about their company size and budget. "
"Be warm, concise, and professional."
),
)A raw system_prompt is the fastest way to start. Rymi auto-extracts the structured persona and playbook from it. When you want finer control over openers, qualification flow, and objection handling, switch to the structured config.
3. Connect your carrier
curl -X POST https://api.rymi.live/v1/telephony/connect \
-H "Authorization: Bearer $RYMI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider": "twilio",
"auth_id": "AC...",
"auth_token": "..."
}'Rymi does not buy phone numbers. Provision a number in your carrier account first, then use that provider-owned number as from_number.
4. Optional: register and attach a BYOC number
Register the carrier-owned number in Rymi if you want inbound routing or dashboard assignment:
curl -X POST https://api.rymi.live/v1/numbers \
-H "Authorization: Bearer $RYMI_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "number": "+15551234567" }'curl -X POST https://api.rymi.live/v1/numbers/+15551234567/attach \
-H "Authorization: Bearer $RYMI_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "agent_id": "YOUR_AGENT_ID" }'This requires the number to already be registered or synced in Rymi. For outbound-only calls, you can skip this and pass from_number directly.
5. Start an outbound call
curl -X POST https://api.rymi.live/v1/calls \
-H "Authorization: Bearer $RYMI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "YOUR_AGENT_ID",
"participants": [
{
"transport": "pstn",
"identity": "+15559990001",
"from_number": "+15551234567"
}
],
"variables": { "name": "Alice" }
}'const call = await rymi.calls.create({
agent_id: agent.id,
participants: [
{
transport: 'pstn',
identity: '+15559990001',
from_number: '+15551234567'
}
],
variables: { name: 'Alice' }
});
console.log(call.id, call.status); // queuedcall = rymi.calls.create(
agent_id=agent["id"],
participants=[
{
"transport": "pstn",
"identity": "+15559990001",
"from_number": "+15551234567",
}
],
variables={"name": "Alice"},
)The call is accepted with 202 and dialed from the queue. Poll GET /v1/calls/:id for status, or register a webhook and let call.completed / call.intelligence.ready come to you.
What's next
- Set up webhooks to receive real-time call events
- Add DNC compliance to stay within regulations
- Monitor costs with the analytics endpoint
- Create publishable keys for frontend-safe WebRTC calls
- Learn about Telephony Integration for advanced configuration

