Rylvo API Reference
One endpoint. Full workflow control. Integrate stage detection, action selection, verification, and escalation into your application in minutes.
Quick Start
Video coming soon
Click to preview (placeholder)
Make your first API call in under a minute. You need your company_id, bot_id, and API key from the dashboard.
curl -X POST https://rylvo.com/api/v1/respond \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"company_id": "your_company_id",
"bot_id": "your_bot_id",
"session_id": "session_001",
"workflow_id": "support_triage",
"current_user_message": "I can't access my account."
}'Access Model
Video coming soon
Click to preview (placeholder)
Rylvo currently exposes two surfaces. Knowing which one to use for what avoids confusion when integrating from a backend vs operating the platform day-to-day.
Call from your backend with an X-API-Key. This is the decisioning surface you ship in production.
POST /v1/respondGET /v1/status,/v1/models/availableGET /v1/traces,/v1/sessions,/v1/analytics/*/v1/connectors/*(full CRUD)/health,/ready,/live,/flags
Manage from app.rylvo.com/dashboard. External REST wrappers for these are on the roadmap.
- Bots, Prompts, Guardrails, Knowledge Base
- Workspace Architect, Bot Chat, Bot Tests
- Edge Cases, Red Team, Automation, Reports
- Mission Control, Agent Evolution, Agent Skills, MCP Hub
- Billing, Team, API Keys, Provider Keys (BYOK)
Sections below marked with Dashboard-only do not yet have a public REST endpoint. They remain fully functional inside the dashboard and their behavior affects the /v1/respond runtime.
Authentication
Video coming soon
Click to preview (placeholder)
All API requests require an API key sent in the X-API-Key header. Create keys from your dashboard.
X-API-Key: rylvo_sk_live_abc123...Security: Never expose API keys in client-side code. Always call the API from your backend.
Provider Keys (BYOK)Dashboard-only
Video coming soon
Click to preview (placeholder)
Every bot chat on Rylvo runs on your own LLM provider key. Rylvo never charges your provider account - the request goes directly to your chosen provider (OpenAI / Anthropic / Google / DeepSeek / xAI / OpenRouter) with your key. Manage keys in Settings → LLM Provider Keys.
Bot Chat, Group Chat, Bot Tests
Route to the customer's own provider key. Requires either the matching direct-provider key (e.g. Anthropic for anthropic/* models) or an OpenRouter universal key. Without a key the UI blocks the chat and surfaces a CTA.
Workspace Architect
Uses Rylvo's own server-side key - you don't need to add anything to run the Architect. Only the bots it creates need BYOK before you can chat with them.
Key resolution order
- If you configured the bot's native provider (e.g. Anthropic for an
anthropic/claude-sonnet-4.6bot), that key is used and the request goes directly toapi.anthropic.com. - Otherwise, if you configured an OpenRouter universal key, the request is routed through OpenRouter so any model works with a single key.
- Otherwise, the bot is not chattable - the chat UI shows a banner asking you to add a key.
Supported providers
- OpenRouter - universal, covers every model
- OpenAI -
openai/* - Anthropic -
anthropic/*(native Messages API adapter) - Google Gemini -
google/*(nativegenerateContentadapter) - DeepSeek -
deepseek/* - xAI (Grok) -
x-ai/*
Access & security
- Write/delete restricted to org admins.
- Read allowed for all org members so operators can chat with bots.
- Keys never leave Firestore + the route handler - never exposed to page HTML.
- Key rotation automatically resets verification state.
Test before you ship
The Settings page has a Test button next to every saved key. It sends a 4-token ping (< $0.001) to the provider and reports auth / rate-limit / network errors inline, plus round-trip latency. Use Test all to re-verify every configured key at once - ideal after a key rotation.
Bot Tagging (Mandatory)
Video coming soon
Click to preview (placeholder)
Required: Every API request must include a bot_id field. Requests without a valid bot_id will be rejected with a 422 error.
Bots are the primary organizational unit for your API usage. Each bot represents a distinct agent or use case (e.g. "Support Triage Bot", "Sales Qualifier Bot"). Create bots from your dashboard, then use the bot ID to tag every API call.
How it works
Create a bot
Go to Dashboard → Bots → New Bot. Give it a name and description.
Copy the bot ID
Each bot gets a unique ID. Copy it from the bot card.
Tag every API request
Include "bot_id": "your_bot_id" in the request body.
View per-bot analytics
Filter traces, analytics, and billing by bot.
Example request with bot_id
{
"company_id": "comp_001",
"bot_id": "bot_abc123def456",
"session_id": "sess_001",
"workflow_id": "support_triage",
"current_user_message": "I can't access my account."
}Benefits of bot tagging
Per-bot analytics
View metrics, latency, and error rates per bot
Trace grouping
Filter and search traces by bot name
Key association
Link API keys to specific bots
Access control
Manage permissions per bot
Bot Chat PlaygroundDashboard-only
Video coming soon
Click to preview (placeholder)
Test a bot's behavior end-to-end before pointing production traffic at it. The playground at /dashboard/bots/[botId]/chat assembles the full runtime exactly like /v1/respond does: system prompts, placeholders, guardrails, connectors, KB connections, and evolution rules.
Every turn captures
- Active prompt IDs + resolved placeholders
- Guardrails evaluated (and which triggered)
- Connectors invoked + request/response bodies
- Evolution rules injected into the system prompt
- Stage & action selected, verification outcome
- Token usage + cost (uses prepaid balance)
Good for
- Reproducing a failure from a trace replay
- Iterating on a prompt before promoting to active
- Verifying a new guardrail actually fires
- Comparing two bots side-by-side (
/dashboard/bots/[botId]/compare)
Each playground turn shows the prompt stack, guardrail decisions, connector calls, evolution rules applied, stage & action chosen, verification outcome, operator whispers, token usage, and cost - all alongside the message itself.
Bot TestsDashboard-only
Video coming soon
Click to preview (placeholder)
Define reusable test cases per bot and run them on demand or via an Automation schedule. Manage at /dashboard/bots/[botId]/tests.
A test case specifies
- Input message (single-turn) or a scripted multi-turn conversation
- Expected stage / action / verification outcome
- Guardrails that should or must not trigger
- Assertions on output text (contains, regex, semantic similarity)
- Optional pre-populated
structured_state
A test run produces
- Pass/fail per case with diff against expectations
- Token usage & cost for the whole run
- Full trace links for every case (for debugging)
- A summary you can attach to a report or alert channel
Failed test cases can be converted into Edge Cases so the engine tracks them through the detect → classify → fix → verify loop.
Agent Groups (Multi-Bot Teams)Dashboard-only
Video coming soon
Click to preview (placeholder)
Compose multiple bots into a team where one bot routes, delegates, and merges results from specialists. Useful for workflows that span domains (e.g. billing + technical support) or require parallel drafts.
Group modes
- Router - one bot picks the best specialist per turn
- Sequential - bots run in a fixed pipeline
- Parallel - bots run simultaneously, a merger summarises
- Round-robin - alternates bots across turns
Each member contributes
- Its own prompts, guardrails, connectors, KB scope
- An attached role/persona (e.g.
billing_specialist) - Its own trace - the group trace links all of them
Group chats record which member bots contributed to each turn and how routing decisions were made, so you can debug who said what and why.
Endpoints
Video coming soon
Click to preview (placeholder)
| Method | Path | Description |
|---|---|---|
| POST | /v1/respond | Primary decision endpoint |
| GET | /v1/status | System status & capabilities |
| GET | /v1/models/available | Customer-facing model catalog with pricing |
| GET | /v1/models/available/{model_id} | Model detail |
| GET | /v1/models | Internal task → model registry (advanced) |
| GET | /v1/traces/{trace_id}/replay | Replay a past decision trace |
| GET | /v1/sessions/{session_id}/traces | List traces for a session |
| GET | /v1/analytics/companies/{company_id}/overview | Company analytics rollup |
| GET | /v1/analytics/companies/{company_id}/runs | Recent decision runs |
| GET | /health | Liveness (process alive) |
| GET | /ready | Readiness (can handle requests) |
| GET | /live | Uptime probe |
| GET | /flags | Rollout flags |
Decision API
Video coming soon
Click to preview (placeholder)
The POST /v1/respond endpoint is the core of Rylvo. Send a user message with session context, and receive a complete workflow decision including stage prediction, next action, verification result, and response text.
Stage Detection
13 stages
Action Selection
30+ actions
Verification
Pass/Warn/Fail
Escalation
Auto-detect
Request Format
Video coming soon
Click to preview (placeholder)
{
"company_id": "comp_001",
"bot_id": "bot_abc123def456",
"session_id": "sess_001",
"workflow_id": "support_triage",
"current_user_message": "The display shows error E42.",
"current_structured_state": {
"order_id": "ORD-12345-ABC",
"identity_verified": true,
"error_code": "E42"
},
"business_metadata": {
"customer_tier": "premium"
},
"tool_mode": "auto",
"memory_mode": "auto"
}Required Fields
| Field | Type | Description |
|---|---|---|
| company_id | string | Your company/tenant ID |
| bot_id | string | Bot identifier (from Dashboard → Bots) |
| session_id | string | Unique conversation session ID |
| workflow_id | string | Workflow type (e.g., support_triage) |
| current_user_message | string | The user's current message |
Optional Fields
| Field | Type | Description |
|---|---|---|
| current_structured_state | object | Pre-collected state (order ID, error code) |
| business_metadata | object | Business context (tier, region) |
| allowed_actions | array | Restrict to specific action IDs |
| prompt_id | string | Prompt ID to use for this request (from Dashboard → Prompts) |
| tool_mode | string | auto | force | none |
| memory_mode | string | auto | read_only | disabled |
| prompt_overrides | object | Override {{placeholder}} defaults per request |
| model | string | Override model (e.g. rylvo-fast, openai/gpt-4.1-mini) |
| callback | object | Webhook delivery config |
Response Format
Video coming soon
Click to preview (placeholder)
{
"id": "resp_a1b2c3d4e5f6",
"workflow_id": "support_triage",
"trace_id": "tr_def456",
"stage_prediction": {
"stage_id": "error_code_handling",
"confidence": 0.92
},
"next_action": {
"action_id": "lookup_error_code",
"action_class": "tool_call",
"confidence": 0.90,
"rationale": "Error code detected, retrieving guidance."
},
"verification": {
"status": "pass",
"reason_codes": ["decision_verified"]
},
"escalation": {
"should_escalate": false,
"escalation_target": null,
"reason_codes": []
},
"output_text": "I captured E42. Let me retrieve the matching guidance.",
"confidence": 0.91,
"trace_id": "tr_def456"
}Key Response Fields
| Field | Description |
|---|---|
| stage_prediction.stage_id | Current workflow stage |
| next_action.action_id | Selected next action |
| next_action.action_class | tool_call | clarification | escalation | handoff |
| verification.status | pass | warn | fail |
| escalation.should_escalate | Whether human handoff is needed |
| output_text | Response text to show the user |
| confidence | Combined confidence score (0-1) |
| trace_id | Unique ID for debugging & replay |
Workflow Stages (13)
Video coming soon
Click to preview (placeholder)
greetingInitial contact, intent detection, routingidentity_collectionCollect and confirm user identityserial_collectionGather product serial numberserial_validationValidate the collected serialissue_clarificationGather issue details and symptomserror_code_handlingError code lookup and guidancekb_troubleshootingKnowledge base troubleshootingfeedback_collectionCapture user feedback on outcomecomplaint_eligibilityComplaint eligibility checkcomplaint_registrationRegister a formal complaintticket_updateUpdate or close an existing ticketescalationHuman handoffsession_closureSession wrap-upError Handling
Video coming soon
Click to preview (placeholder)
Authentication Error
Missing or invalid API key
Insufficient Balance
Prepaid USD balance is zero or below the minimum required to serve the request. Top up from Dashboard → Billing.
Forbidden
Valid key, but bot or feature is not permitted (e.g. bot disabled, plan gate, bot scoping).
Not Found
Company profile, bot, prompt, or resource not found
Validation Error
Invalid request body (e.g. missing bot_id)
Rate Limited
Too many requests - see X-RateLimit-Remaining header
Server Error
Internal processing error
// Error response format
{
"error": {
"type": "authentication_error",
"message": "Missing X-API-Key header."
}
}Multi-Turn Example
Video coming soon
Click to preview (placeholder)
Rylvo tracks conversation state across turns using the session_id. Each turn builds on the previous state automatically.
Turn 1 - User reports issue
curl -X POST https://rylvo.com/api/v1/respond \
-H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
-d '{"company_id":"comp_001","bot_id":"bot_abc123","session_id":"conv_001","workflow_id":"support_triage","current_user_message":"My subscription renewal failed."}'
# → stage: identity_collection, action: verify_identityTurn 2 - User provides serial number
curl -X POST https://rylvo.com/api/v1/respond \
-H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
-d '{"company_id":"comp_001","bot_id":"bot_abc123","session_id":"conv_001","workflow_id":"support_triage","current_user_message":"My serial is SN-98765-XYZ"}'
# → stage: serial_validation, action: run_serial_validationTurn 3 - User wants escalation
curl -X POST https://rylvo.com/api/v1/respond \
-H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
-d '{"company_id":"comp_001","bot_id":"bot_abc123","session_id":"conv_001","workflow_id":"support_triage","current_user_message":"I want to talk to a real person."}'
# → stage: escalation, action: handoff_to_human, escalation: trueWebhooks
Video coming soon
Click to preview (placeholder)
Receive async notifications after each decision by including a callback object in your request.
{
"callback": {
"target_url": "https://your-app.com/hooks/rylvo",
"event_type": "workflow.decision.completed",
"headers": { "Authorization": "Bearer your-token" },
"include_full_response": true,
"shared_secret": "hmac-signing-secret"
}
}Rate Limits
Video coming soon
Click to preview (placeholder)
These limits apply to direct POST /v1/respond calls. Bot chat launched from the dashboard uses your own BYOK provider key and is NOT rate-limited by Rylvo. Architect Credits (Workspace Architect, Agent Evolution, Prompt Auto-Optimization, Red Team) are metered separately by USD wallet - see pricing · credits.
| Plan | Monthly Requests | Rate Limit |
|---|---|---|
| Free | 2,500 | 3 req/s |
| Pro | 25,000 | 10 req/s |
| Team | 500,000 | 60 req/s |
| Enterprise | Custom | Custom |
Usage headers are included in every response: X-Plan-Requests-Remaining, X-RateLimit-Remaining
Billing & Usage
Video coming soon
Click to preview (placeholder)
Rylvo has a dual billing model: a monthly subscription plan covers platform capacity (bots, prompts, guardrails, KB sources, connectors, observability, SLA). On top of that, two independent wallets meter the work that actually runs:
Backend API balance
Prepaid USD for /v1/respond
Every decision call deducts based on actual input+output tokens. No markup, no commitment.
Architect Credits
Rylvo-paid AI (separate USD wallet)
Covers Workspace Architect, Agent Evolution reviewers, Prompt Auto-Optimization, Edge Case Engine, and Red Team. Monthly included grant + top-up packages. Bot chat on your own BYOK key is NOT metered here.
Cost formula (Backend API)
cost_usd = (input_tokens × model.price_per_input_token)
+ (output_tokens × model.price_per_output_token)Request lifecycle
Pre-check
Before invoking a model, the gateway checks that your org's balance is above the minimum for the requested model tier.
Invoke
Model runs. Token counts come back from the provider.
Record usage
A usage record is written (company, bot, model, tokens, cost) and the balance is atomically debited.
Respond
The HTTP response includes X-Plan-* and X-RateLimit-* headers plus the trace_id for follow-up.
Block on zero
If the new balance drops below the per-request minimum, subsequent calls return 402 until you top up.
Response headers on /v1/respond
| Header | Meaning |
|---|---|
| X-Plan-Name | Your current plan (free | pro | team | enterprise) |
| X-Usage-Period | ISO period string for the current billing window |
| X-Plan-Requests-Used | Requests consumed in this period |
| X-Plan-Requests-Remaining | Requests remaining before soft limit |
| X-Plan-Billable-Units-Used | Cumulative billable units for the period |
| X-Plan-Soft-Limit-Reached | true when approaching plan soft cap |
| X-RateLimit-Remaining | Requests left in the current rate-limit window |
| X-Callback-Status | Delivery status if callback was included |
Top-up & ledger Dashboard-only
Top up in any amount from $5 to $10,000 at Dashboard → Billing. Every debit and credit is recorded in an immutable transactions ledger you can review and export from the Billing page (per-bot breakdown, model breakdown, date range, CSV).
402 responses indicate insufficient balance. Retry with exponential backoff is pointless - top up first, or enable Auto-Top-Up on the Billing page.
Traces & Analytics
Video coming soon
Click to preview (placeholder)
Every decision is traced. You can re-run any past decision (replay), list every turn in a session, and pull rollup analytics per company. These endpoints are public REST - they work with the same X-API-Key as /v1/respond.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /v1/traces/{trace_id}/replay | Return the full replay payload for one trace (stage, action, verification, tool calls, timings) |
| GET | /v1/sessions/{session_id}/traces?limit=50 | List every run in a session, newest first |
| GET | /v1/analytics/companies/{company_id}/overview?limit=500&top_n=10 | Top stages/actions, escalation rate, avg latency over the window |
| GET | /v1/analytics/companies/{company_id}/runs?limit=100 | Recent individual runs for a company |
Replay example
curl https://rylvo.com/api/v1/traces/tr_def456/replay \
-H "X-API-Key: YOUR_API_KEY"Dashboard note: richer per-chat traces (prompt stack, guardrail decisions, connector payloads, evolution rules applied, operator whispers) are stored alongside each playground/group chat message and are not yet exposed over REST. See Bot Chat Playground.
SDKs & Libraries
Video coming soon
Click to preview (placeholder)
Python
import requests
response = requests.post(
"https://rylvo.com/api/v1/respond",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"company_id": "comp_001",
"bot_id": "bot_abc123def456",
"session_id": "sess_001",
"workflow_id": "support_triage",
"current_user_message": "I can't access my account.",
},
)
data = response.json()
print(f"Stage: {data['stage_prediction']['stage_id']}")
print(f"Action: {data['next_action']['action_id']}")
print(f"Response: {data['output_text']}")JavaScript / Node.js
const response = await fetch("https://rylvo.com/api/v1/respond", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "YOUR_API_KEY",
},
body: JSON.stringify({
company_id: "comp_001",
bot_id: "bot_abc123def456",
session_id: "sess_001",
workflow_id: "support_triage",
current_user_message: "I can't access my account.",
}),
});
const data = await response.json();
console.log("Stage:", data.stage_prediction.stage_id);
console.log("Action:", data.next_action.action_id);
console.log("Response:", data.output_text);PromptsDashboard-only
Video coming soon
Click to preview (placeholder)
Prompts are the instructions your agents follow at runtime. Create them from the Prompts dashboard, assign them to bots, and optionally enable self-improving optimization.
Key Concepts
Agent Categories
8 categories: Response Composer, Stage Classifier, Action Selector, Escalation Classifier, Session Summarizer, Verifier, Retrieval, Custom
Placeholders
Use {{key}} syntax for dynamic values resolved at runtime (company name, tone, language, etc.)
Self-Improving
Toggle auto-optimization to let the system generate, evaluate, and promote better prompt variants
Bot Assignment
Assign prompts to specific bots, or leave shared across all bots
Creating a Prompt
Choose an agent category
Select what type of agent this prompt controls (e.g., Response Composer, Verifier).
Write your prompt content
Use {{placeholder_key}} syntax for dynamic values. Templates are provided for each category.
Add placeholders
Define keys, labels, default values, and whether they're required. Use the template library for common ones.
Assign to a bot (optional)
Link the prompt to a specific bot, or leave it shared. Tag requests with prompt_id in the API.
Enable self-improving (optional)
Toggle auto-optimization in the prompt detail panel. Choose a strategy, metric, and frequency.
Placeholder Syntax
Placeholders use double-brace syntax: {{key}}. At runtime, they are resolved with values from the API request or defaults.
You are a support agent for {{company_name}}.
Greet the user as {{user_name}} in a {{tone}} tone.
Respond in {{language}}. Keep replies under {{max_length}} tokens.
{{context}}Built-in Placeholder Templates
| Key | Default | Description |
|---|---|---|
| {{company_name}} | Acme Corp | The customer's company name |
| {{user_name}} | John | The end user's display name |
| {{product_name}} | Widget Pro | The product being discussed |
| {{industry}} | Technology | The customer's industry vertical |
| {{tone}} | professional | Response tone (formal, casual, empathetic) |
| {{language}} | English | Response language |
| {{max_length}} | 256 | Maximum response length in tokens |
| {{context}} | - | Additional context for the prompt |
Version History
Every edit to a prompt creates a new version. Versions are tracked as manual or auto_optimized. You can view, compare, and promote any version to active from the prompt detail panel.
Resource VersioningDashboard-only
Video coming soon
Click to preview (placeholder)
Every runtime-affecting resource is versioned - not just prompts. Prompts, guardrails, connectors, evolution rules, and KB blueprints all track an immutable version history plus the source of each edit. You can diff, preview, promote, and rollback from the dashboard.
Edit sources
humanManual edit by a teammate from the dashboard
architectApplied via Workspace Architect (conversational setup / edit mode)
auto_generatedProduced by the Self-Improving optimizer or Agent Evolution rule generator
fix_proposalAccepted from an Edge Case Engine fix proposal
systemInternal migration or default seed
red_teamCreated in response to a red-team finding
What's versioned
What you can do from the dashboard
- View the full edit history for any resource (who, what, when, why)
- Diff any two versions side by side
- Preview a version before promoting it to active
- Promote any past version back to active in one click (rollback)
- Filter history by source - manual, architect, auto-generated, etc.
Every runtime decision records which version was active when it ran, so you can correlate performance changes with specific edits - not just which resource was used, but which version of it.
Self-Improving PromptsDashboard-only
Video coming soon
Click to preview (placeholder)
Rylvo implements research-backed automatic prompt optimization. When enabled, the system continuously generates, evaluates, and selects better prompt variants using real performance data.
How It Works
The system gathers performance metrics from real API requests that use this prompt - success rate, verification pass rate, user satisfaction signals, and latency.
An optimizer LLM analyzes scored prompt history and proposes N improved variants. Each variant preserves all placeholders and the core intent, but tries a different improvement strategy.
Each variant is scored against your chosen metric. Scoring uses structural analysis, constraint quality, and historical performance patterns.
The best-performing variant is identified. It must beat the current prompt by at least the improvement threshold (default 2%) to qualify.
If auto-promote is on, the winner automatically becomes the active prompt. Otherwise, it appears in version history for manual review.
Optimization Strategies
Four research-backed strategies are available. Each uses a different approach to prompt improvement.
OPRO
Yang et al., 2023 - Google DeepMind
Optimization by PROmpting. Feeds scored (prompt, performance) history to an LLM which proposes improved variants. Core insight: LLMs can act as optimizers when given examples with scores.
Best when you have version history with diverse scores.
APE
Zhou et al., 2023 - University of Toronto
Automatic Prompt Engineer. Generates diverse candidates using multiple improvement strategies (explicit instructions, examples, restructuring, guardrails, simplification), evaluates each, selects the best.
Best for new prompts with little history.
DSPy Bootstrap
Khattab et al., 2023 - Stanford
Compiles the best-performing patterns from history into optimized few-shot demonstrations. Extracts what works and bakes it directly into the prompt as examples.
Best when high-scoring versions exist to learn from.
PromptBreeder
Fernando et al., 2023 - Google DeepMind
Self-referential evolution. Applies mutation-prompts (make concise, add constraints, restructure, add reasoning, add role-playing) to evolve the task-prompt. The mutations themselves can evolve.
Best for creative exploration of prompt space.
Configuration Options
| Option | Default | Description |
|---|---|---|
| Strategy | OPRO | Which optimization algorithm to use |
| Evaluation Metric | Success Rate | success_rate | verification_pass | user_satisfaction | latency |
| Run Frequency | Daily | hourly | daily | weekly | manual |
| Auto-Promote | Off | Automatically promote winning variants to active |
| Improvement Threshold | 2% | Minimum improvement required to qualify as a winner |
| Max Variants Per Run | 5 | Number of candidate variants generated per optimization run |
| Min Sample Size | 50 | Minimum API requests before first optimization run |
Enabling Self-Improvement
Open the prompt detail panel
Click on any prompt from the Prompts page to view its details.
Expand 'Self-Improving Optimization'
Click the panel header to expand the optimization settings.
Toggle 'Enable Auto-Improvement'
This activates the optimization loop for this prompt.
Choose your strategy
Select OPRO, APE, DSPy Bootstrap, or PromptBreeder depending on your needs.
Set your metric and frequency
Choose what to optimize for and how often to run.
Decide on auto-promote
Turn on to automatically deploy winning variants, or leave off for manual review.
Prompt API Usage
Video coming soon
Click to preview (placeholder)
Use prompts programmatically by including a prompt_id in your API requests. The system resolves the active prompt version, substitutes placeholders, and uses the resulting text.
Using a Prompt in API Requests
Add the prompt_id field to your POST /v1/respond request. Optionally pass prompt_overrides to override placeholder defaults.
{
"company_id": "comp_001",
"bot_id": "bot_abc123def456",
"session_id": "sess_001",
"workflow_id": "support_triage",
"prompt_id": "prompt_xyz789",
"prompt_overrides": {
"company_name": "Acme Corp",
"tone": "empathetic",
"language": "Spanish",
"max_length": "512"
},
"current_user_message": "I can't access my account."
}Prompt Resolution Flow
Lookup
System finds the prompt by ID and loads the active version.
Substitute
All {{placeholder}} values are replaced with prompt_overrides or defaults.
Inject
The resolved prompt is injected into the agent's system prompt for this request.
Track
The request is tagged with the prompt_id and version for analytics and optimization.
Python Example
import requests
response = requests.post(
"https://rylvo.com/api/v1/respond",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"company_id": "comp_001",
"bot_id": "bot_abc123def456",
"session_id": "sess_001",
"workflow_id": "support_triage",
"prompt_id": "prompt_xyz789",
"prompt_overrides": {
"company_name": "Acme Corp",
"tone": "empathetic",
"language": "English",
},
"current_user_message": "My subscription renewal failed.",
},
)
data = response.json()
print(f"Used prompt version: v{data.get('prompt_version', 'N/A')}")
print(f"Response: {data['output_text']}")JavaScript / Node.js Example
const response = await fetch("https://rylvo.com/api/v1/respond", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "YOUR_API_KEY",
},
body: JSON.stringify({
company_id: "comp_001",
bot_id: "bot_abc123def456",
session_id: "sess_001",
workflow_id: "support_triage",
prompt_id: "prompt_xyz789",
prompt_overrides: {
company_name: "Acme Corp",
tone: "empathetic",
language: "English",
},
current_user_message: "My subscription renewal failed.",
}),
});
const data = await response.json();
console.log("Prompt version:", data.prompt_version);
console.log("Response:", data.output_text);Edge Case Engine Dashboard-only
Automatically detect, classify, and fix bot failure modes
Video coming soon
Click to preview (placeholder)
The Edge Case Engine is a closed-loop system that monitors your bot traces, automatically discovers failure patterns, classifies them into categories, and suggests fixes. It uses a 5-stage pipeline: Observe → Detect → Classify → Fix → Verify.
How It Works
- Scan Traces - Click "Scan Traces" to analyze recent API traces for failures
- Auto-Detect - Engine identifies verification failures, missed escalations, hallucinations, etc.
- Classify - Issues are grouped into 12 categories with severity levels
- Fix Proposals - Engine suggests guardrails, prompt edits, or threshold changes
- Verify - Monitor whether fixes reduce the failure rate over time
Edge Case Categories
- Hallucination - Response not grounded in KB evidence
- Policy Violation - Broke company/workflow policy
- Missed Escalation - Should have escalated but didn't
- Wrong Tool - Selected incorrect tool for the task
- PII Leak - Exposed sensitive personal information
- Loop Detected - Bot stuck in repetitive pattern
- Tone Violation - Response doesn't match brand guidelines
- Unknown Intent - User intent not covered by any workflow
Bot-Scoped Filtering
Use the bot filter dropdown in the Edge Cases header to scope all data to a specific bot. This filters edge cases, guardrails, red team runs, and fix proposals to show only issues for that bot. Useful when managing multiple bots with different use cases.
Guardrails Dashboard-only
Programmable safety rules that run on every bot response
Video coming soon
Click to preview (placeholder)
Guardrails are runtime rules that check bot inputs/outputs and take action when conditions are met. They can be created manually or auto-suggested by the Edge Case Engine when it detects failure patterns.
Guardrail Types
- Input Filter - Validates user input before processing
- Output Filter - Validates bot response before delivery
- Fact Check - Verifies claims against knowledge base
- Policy Check - Ensures compliance with company policies
- PII Detection - Detects and redacts sensitive data
- Tone Check - Validates tone matches brand
- Loop Breaker - Breaks repetitive conversation patterns
- Escalation Override - Forces escalation on conditions
- Tool Gate - Controls tool access in specific contexts
Actions
- Block - Prevent response, return fallback message
- Warn - Flag for review but allow response through
- Rewrite - Auto-modify response to comply
- Escalate - Trigger human handoff immediately
- Log - Record for monitoring, no action taken
Each guardrail has conditions (field + operator + value) and a fallback message shown when triggered.
Red Team Testing Dashboard-only
Proactively discover vulnerabilities with adversarial tests
Video coming soon
Click to preview (placeholder)
Red Team runs generate adversarial inputs against your bot to find failures before users do. Select a bot, choose attack strategies, and the engine generates test cases automatically. Results are converted into edge cases with severity levels.
Attack Strategies
- Policy Probe - Tests policy boundary conditions with edge-case inputs
- Hallucination Bait - Questions with no KB answer to test grounding
- Tool Confusion - Inputs that could trigger wrong tool selection
- Escalation Boundary - Tests the edge of escalation thresholds
- Injection Attempt - Prompt injection and jailbreak attempts
- Context Overflow - Long conversations that stress memory limits
Automation & Reports Dashboard-only
Schedule scans, connect channels, and generate automated reports
Video coming soon
Click to preview (placeholder)
The Automation page (/dashboard/automation) lets you set up recurring jobs and notification channels. Everything runs on your chosen schedule - no manual intervention needed after setup.
Scheduled Tasks
Cron jobs that run automatically:
- Trace Scan - Auto-scan traces for edge cases
- Red Team Run - Periodic adversarial testing
- Report Generation - Auto-generate analytics reports
- Guardrail Audit - Review guardrail effectiveness
Cadences: hourly, daily, weekly, biweekly, monthly
Notification Channels
Where alerts and reports get sent:
- Slack - Webhook integration
- Email - Direct to team inboxes
- Discord - Webhook integration
- Microsoft Teams - Webhook integration
- Custom Webhook - Any HTTP endpoint
Automated Reports
Analytics reports sent to your team:
- 10 report sections to choose from
- Daily, weekly, or monthly cadence
- Filter recipients by role or custom emails
- Scope to specific bot or all bots
- "Generate Now" for instant snapshots
- Includes improvements timeline + AI recommendations
Agent Evolution Dashboard-only
Closed-loop system that learns from real traffic and safely rewrites the agent
Video coming soon
Click to preview (placeholder)
While the Edge Case Engine catches individual failures, Agent Evolution looks at patterns across runs and updates the agent itself. It runs a six-phase loop - observe, detect, infer, generate, inject, verify - and writes new rules, prompt variants, or guardrail tweaks into versioned resources. Every change is reversible.
Phases
- Observe - sample recent traces for the bot
- Detect - cluster failures & near-misses
- Infer - reviewer LLM names the pattern + root cause
- Generate - draft a rule, prompt edit, or guardrail
- Inject - attach to the bot behind an experiment flag
- Verify - measure effect; auto-promote, keep, or roll back
What gets written
- Evolution rules (injected into the system prompt conditionally)
- Prompt version updates (marked
auto_generated) - Guardrail tweaks (threshold, condition, fallback text)
- Reviewer insights (narrative explanations for the team)
- Effectiveness scores per rule (controls auto-promote)
Every proposed change is gated behind an experiment flag with measurable success criteria. Anything that doesn't move the needle is rolled back automatically; anything that does becomes a permanent versioned change you can inspect, fork, or revert.
Agent Skills Dashboard-only
Hermes-style reusable capability packages that extend your bots
Video coming soon
Click to preview (placeholder)
Agent Skills are modular, reusable capability packages that can be attached to any bot in your organization. When a skill is active, its system instructions are conditionally injected into the bot's system prompt based on trigger conditions — keywords, intents, or contextual patterns matched against the conversation. Skills can be created manually, generated automatically from evolution rules, or imported from other bots.
Skill Types
- Prompt Template — Reusable instruction pattern injected when triggered
- Tool Chain — Ordered sequence of tool calls with parameter mapping
- Code Snippet — Programmatic capability executed in one turn
- Workflow — Multi-step procedure with conditional branches
How it works
- Define — Write system instructions and trigger conditions
- Bind — Attach to a specific bot or make org-level
- Activate — Set status to active (draft → active → disabled → archived)
- Match — Runtime checks triggers on each turn
- Inject — Matched skill instructions are added to the system prompt
- Measure — Usage and success counters track effectiveness
Scope
- Bot-level — Skill is only available to the bot it is bound to
- Org-level — Skill is available to every bot in the organization
- Switch scope by creating a new skill or using version rollback
Versioning & Rollback
- Every edit creates a new version with full audit trail
- Rollback to any previous version instantly
- Effectiveness counters reset on rollback
- Changes are tagged with author and reason
Enable the Skills Layer toggle in Agent Evolution → Settings to allow the reviewer engine to auto-promote related rules into skills. You can also create skills manually from Dashboard → Agent Skills.
Mission Control Dashboard-only
Live human oversight for every production conversation
Video coming soon
Click to preview (placeholder)
Mission Control is the live operations surface at /dashboard/mission-control. Operators see every active conversation in real time, can intervene at any level, and the system keeps an immutable audit trail that satisfies EU AI Act Article 14 (human oversight) requirements.
Intervention types
- Whisper - nudge the bot's next turn without the user seeing
- Takeover - operator types directly to the user
- Pause - freeze the bot pending review
- Kill - terminate the session immediately
- Augment - add context/state to help the bot
Approvals & SLAs
- High-risk actions pause for operator approval
- Each approval has a configurable SLA timer
- Timeouts auto-escalate to a fallback operator
- Decisions (approve/deny/modify) are attached to the trace
Every operator action is captured in an immutable, hash-chained audit log you can export for compliance reviews.
Email DeliveryDashboard-only
Video coming soon
Click to preview (placeholder)
Rylvo handles its own transactional emails (welcome, team invites, scheduled reports, operational alerts) automatically. Templates are branded and theme-aware - there is nothing for you to set up.
To send your own emails on workflow events (e.g. notify a human when a session escalates), use an Event Connector or add an Email channel in Automation.
Webhook Connectors
Video coming soon
Click to preview (placeholder)
Connectors let Rylvo call your systems during workflow execution. Register webhook endpoints for tool calls, state sync, or event notifications - Rylvo handles auth, retry, and signing.
Three connector types
Tool
Execute actions on your systems (create case, look up order, check inventory)
State Sync
Read/write workflow state from your DB before and after decisions
Event
Receive notifications on escalation, stage change, verification failure
Register a tool connector
curl -X POST https://rylvo.com/api/v1/connectors \
-H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
-d '{
"company_id": "comp_001",
"connector_type": "tool",
"name": "Salesforce Case Creator",
"auth": {
"auth_type": "api_key",
"api_key_header": "X-Salesforce-Key",
"api_key_value": "your_salesforce_api_key"
},
"tool_config": {
"tool_name": "create_salesforce_case",
"tool_description": "Create a case in Salesforce",
"input_schema": { "type": "object", "properties": { "issue_summary": { "type": "string" } } }
},
"endpoint": { "url": "https://your-app.com/rylvo/tools/create-case", "method": "POST" }
}'API endpoints
| Method | Path | Description |
|---|---|---|
| POST | /v1/connectors | Create connector |
| GET | /v1/connectors/{company_id} | List connectors |
| GET | /v1/connectors/{company_id}/{id} | Get detail |
| PATCH | /v1/connectors/{company_id}/{id} | Update |
| DELETE | /v1/connectors/{company_id}/{id} | Delete |
| POST | .../{id}/activate | Activate |
| POST | .../{id}/deactivate | Deactivate |
| POST | .../{id}/test | Test endpoint |
| POST | /v1/connectors/generate-secret | Generate HMAC secret |
| GET | /v1/connectors/{company_id}/tools/available | List webhook tools |
7 authentication methods
10 subscribable event types
Connector Python SDK
Video coming soon
Click to preview (placeholder)
Typed convenience methods for all connector operations. Sync and async variants included.
from core.connectors.sdk import ConnectorSDK
sdk = ConnectorSDK(base_url="https://rylvo.com", api_key="rylvo_sk_live_...")
# Register a tool connector
connector = sdk.create_tool_connector(
company_id="comp_001",
name="Salesforce Case Creator",
endpoint_url="https://your-app.com/rylvo/tools/create-case",
tool_name="create_salesforce_case",
tool_description="Create a case in Salesforce",
auth_type="api_key",
api_key_header="X-Salesforce-Key",
api_key_value="your_salesforce_api_key",
)
# Test + activate
test = sdk.test_connector("comp_001", connector["connector_id"])
if test["success"]:
sdk.activate("comp_001", connector["connector_id"])
# List available tools
tools = sdk.list_available_tools("comp_001")
print(f"{tools['total']} webhook tools available")Async variant
from core.connectors.sdk import AsyncConnectorSDK
async with AsyncConnectorSDK(base_url="...", api_key="...") as sdk:
connector = await sdk.create_event_connector(
company_id="comp_001",
name="Slack Alerts",
endpoint_url="https://hooks.slack.com/...",
event_types=["workflow.escalation.triggered"],
)
await sdk.activate("comp_001", connector["connector_id"])Error handling
ConnectorNotFoundError(404)Connector does not existConnectorAuthError(401/403)Invalid or missing API keyConnectorValidationError(422)Invalid connector configurationConnectorSDKError(5xx)Base class for all SDK errorsMCP HubDashboard-only
Video coming soon
Click to preview (placeholder)
The MCP Hub is Rylvo's Model Context Protocol registry - a curated catalog of MCP servers your bots can use as tools. Manage from Dashboard → MCP Hub.
What you can do
- Discover & install MCP servers
- Store credentials securely (encrypted at rest)
- Allow specific servers per bot
- See invocation logs & per-server analytics
- Submit your own server for review
Built-in controls
- Approval workflow before a server can be used in production
- Cost tiers (low / medium / high) surfaced before invocation
- Health checks & auto-disable on repeated failure
- Resume tokens for long-running tool calls
Workspace ArchitectDashboard-only
Video coming soon
Click to preview (placeholder)
The Architect is a conversational setup agent that turns a plain-English brief into a working workspace: bots, prompts, guardrails, connectors, KB connections, evolution rules, and tests. It runs at /dashboard (Architect tab) and also powers natural-language edit mode and bot cloning.
8-phase agent loop
1. Intent
Capture goal, industry, tone, compliance constraints
2. Research
Pull org profile defaults, relevant industry templates, prior sessions
3. Blueprint
Propose bots + workflow + guardrails + KB + connectors
4. Review
User approves / edits the blueprint in natural language
5. Generate
Write prompts, guardrails, connectors, rules, KB stubs
6. Verify
Auto-run bot tests on the new bot(s) and score readiness
7. Apply
Commit as versioned resources, tagged source=architect
8. Handoff
Summarise what was built, link to Mission Control & Playground
Other architect capabilities
- Edit mode - change an existing bot with a sentence ("make it more empathetic, prefer email over phone")
- Bot cloning - duplicate a bot with modifications (industry, language, tone)
- Bot testing - architect can run tests and iterate until a readiness threshold is met
- Industry templates - 20+ starting points (SaaS support, fintech KYC, healthcare intake, etc.)
- Org profile prefill - reuses defaults you set once in your organization profile
Knowledge BaseDashboard-only
Video coming soon
Click to preview (placeholder)
Connect your data sources to Rylvo for grounded, evidence-backed decisions. The KB system provides hybrid retrieval with 12 pre-built blueprints covering common enterprise patterns.
How it works
Add a source
Upload documents, connect APIs, or point to URLs. 15 source types supported.
Pick a blueprint
Choose from 12 retrieval blueprints (FAQ, Policy Lookup, Troubleshooting, etc.) or create custom.
Create a connection
A connection links a source to a blueprint with specific pipeline settings.
Query in playground
Test retrieval quality before going live. Tune chunking, reranking, and thresholds.
Built-in blueprints
Dashboard features
Connections
Create, monitor, pause, and delete knowledge base connections
Sources
Manage 15 source types - file upload, API, URL, database
Blueprints
Pre-built and custom retrieval pipeline configurations
Playground
Test queries, inspect retrieved chunks, tune settings live
Performance
Retrieval quality metrics, latency, and hit rates
Settings
Auto-tune, chunking config, reranking, and threshold tuning
Conversation StorageDashboard-only
Video coming soon
Click to preview (placeholder)
Bring Your Own Database (BYODB). Every conversation event Rylvo processes can be pushed to a database or webhook endpoint you own — so your conversations live permanently in infrastructure you control. Rylvo also maintains a time-bounded operational copy for Mission Control, traces, agent evolution, and edge-case detection. Manage from Dashboard → Conv. Storage.
Connections
Add one or more storage targets. Each target receives a copy of every conversation event.
- PostgreSQL, Supabase, Neon, PlanetScale
- MySQL, Turso, MongoDB, Redis
- Webhook (none / API key / Bearer / HMAC auth)
- Credentials encrypted at rest
Schema Designer
Map Rylvo's conversation fields to your own table columns or JSON keys.
- Custom field mapping per target
- Schema migration runs idempotently (CREATE IF NOT EXISTS)
- Preview the output schema before going live
Sync Logs
Per-event push history with status, latency, and error details.
- Success / failure / retry status per target
- Webhook retry with exponential backoff (0.5 s → 1 s → 2 s)
- Inspect the exact payload that was sent
Retention
How long Rylvo keeps its own operational copy of your conversations.
Your database is the source of truth. Rylvo's copy is an operational cache — not a backup. Use the Connections tab to wire up your own database for permanent storage. Extending Rylvo-side retention increases storage costs but does not replace your own database.
Audience HubDashboard-only
Video coming soon
Click to preview (placeholder)
The central operator workspace for managing every end-user across every bot in your organization. Replace scattered user lists with a scalable hub: paginated people browsing, saved filter segments, aggregate analytics, consent governance, CSV import/export, and retention policy controls. Manage from Dashboard → Audience.
People
Paginated, server-driven list of every end-user. Scales to 100k+ rows with cursor pagination and infinite scroll.
- Filter by channel, consent scope, forgotten status, or free-text search
- Bot-scoped filtering with data-collection field predicates
- Inspector drawer with Overview, Profiles, Activity, and Audit tabs
- Bulk actions: tag, forget (GDPR), export CSV, seed broadcast
- Keyboard shortcuts:
/search,j/knavigate,Enterinspect
Audience Rooms
Saved filter presets that act like persistent views. Create rooms for common cohorts and share them with your team.
- Save any filter combination as a named room
- Dirty indicator when current filters diverge
- Pins & Discussion panel per room
- Deep-linkable via
?room=URL param
Segments
Reusable filters that resolve into concrete member lists for broadcasts and exports.
- Basic predicates: all users, active within N days, by channel, min conversations
- Profile predicates: checkpoint achieved, field value, completeness threshold
- Live preview with match count before saving
- One-click link to bot broadcast tab
Insights
Cached aggregate analytics computed from a snapshot (6h TTL). Org-wide or bot-scoped.
- Onboarding funnel, channel mix, consent breakdown
- Engagement depth, activity recency, hour-of-day heatmap
- Field-fill rates, top tags, completeness histogram
- Bot leaderboard (org-wide only)
Imports & Exports
Bring legacy CRM contacts in and export segments for your data warehouse.
- CSV import wizard: upload → map columns → preview → commit (idempotent)
- Segment export to CSV (up to 5,000 rows)
- 15 MB file limit for imports
Consent & Privacy
Govern how end-user data is collected and retained.
- Consent scope tiles: none, short_term_only, personalize, full
- GDPR forgotten-users queue with deep-links
- Retention policy: effective days, shorten override, extend add-ons
- Nightly sweep purges expired records automatically
Profiles & Schema
Org-wide field catalog + per-bot schema cards. Spot naming drift before it ruins dashboards.
Settings
Retention policy, add-on tiers, and governance. Admin-only configuration.
Ready to integrate?
Create an account, generate an API key, and start making decisions.
