osmTalk Docs
Agents

Templates

Industry-organized starting points for common voice-agent use cases.

osmTalk ships 13 built-in templates across 8 categories so you don't have to write a system prompt from scratch.

Pick one

Open Agents → New Agent and:

  1. Choose a quality preset (Fast / Balanced / Premium)
  2. Filter templates by category or search by keyword (e.g. clinic, lead, refill)
  3. Click "Use" — the template's system prompt + welcome message + name are pre-filled and the agent is created with your chosen preset

You can edit everything after the agent is created. Templates are a starting point, not a contract.

Catalog

CategoryTemplates
SupportCustomer Support, Tier-1 Troubleshooting
SalesInbound Sales, Outbound Cold Outreach
Reception & IVRVirtual Receptionist, IVR Router
HealthcareClinic Appointment Booking, Pharmacy Refill
Real EstateReal-Estate Lead Qualifier
BookingAppointment Booking
Research & SurveyCustomer Survey
LogisticsDelivery Status

Each template includes:

  • Name — the first name the agent introduces itself as
  • Tagline — one-line description for the picker
  • System prompt — voice-tuned: short turns, one question at a time, no markdown
  • Welcome message — first thing the agent says
  • Recommended preset — the quality tier that fits the use case (e.g., IVR Router defaults to Fast; Premium Sales defaults to Balanced or Premium)
  • Tags — searchable keywords (industry, sub-vertical)

Fetch programmatically

Templates are pure config and exposed on a public endpoint (no auth required) so SDKs, CLI tools, and AI assistants can list them.

# All templates
curl https://api.osmtalk.com/api/templates

# Filter by category
curl https://api.osmtalk.com/api/templates?category=healthcare

# Full-text search
curl https://api.osmtalk.com/api/templates?q=refill

Response shape:

{
  "categories": [
    { "id": "support", "label": "Support" },
    { "id": "sales", "label": "Sales" },
    ...
  ],
  "templates": [
    {
      "id": "support-general",
      "label": "Customer Support",
      "category": "support",
      "name": "Maya",
      "tagline": "Empathetic help-desk agent for general support",
      "recommendedPreset": "balanced",
      "tags": ["saas", "ecommerce", "subscription"],
      "systemPrompt": "...",
      "welcomeMessage": "Hi there! Thanks for calling. How can I help you today?"
    }
  ]
}

SDK

// TypeScript
import { Osmtalk } from "@osmapi/osmtalk-sdk";
const osm = new Osmtalk({ apiKey: "..." });
const { templates } = await osm.platform.getTemplates({ category: "healthcare" });
# Python
from osmtalk import Osmtalk
osm = Osmtalk(api_key="...")
data = osm.platform.list_templates(category="healthcare")

MCP

If you're using the osmTalk MCP server, the list_templates tool returns the catalog as markdown — useful for asking Claude "find me a template for a pizza ordering agent".

Why no markdown in the prompts?

Voice agents speak — they don't write. Markdown sections (## Personality, **bold**) leak into the editor as literal # and * characters and don't help the LLM produce better voice replies. Templates use plain-text PERSONALITY / CONVERSATION FLOW / RULES blocks instead.

If you generate a prompt via "Generate with AI", the response is sanitized server-side to strip any markdown the LLM produced.

Save your own templates

The 13 built-in templates are a starting point. Once you've tuned a system prompt that works well for your business, save it as a custom template so the whole team can pick it from the same picker.

To save: open any agent's Config tab, scroll to System Prompt, click Save as template. Enter a label your team will recognize.

To use: open Agents → New Agent. The custom templates appear at the top under "Saved by your team" with the rest of the picker.

Custom templates are org-scoped — each team's library is isolated. They live in the user_agent_templates table and are exposed at the same /api/templates endpoint, prefixed with custom: IDs so they never collide with built-ins:

# Save a template via the API
curl -X POST https://api.osmtalk.com/api/templates \
  -H "Authorization: Bearer $OSMTALK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "Renewal Follow-up",
    "name": "Priya",
    "category": "sales",
    "recommendedPreset": "balanced",
    "tags": ["renewal", "saas"],
    "systemPrompt": "You are a renewal specialist...",
    "welcomeMessage": "Hi, this is Priya calling about your subscription"
  }'

# Delete a custom template (built-in IDs are rejected)
curl -X DELETE https://api.osmtalk.com/api/templates/custom:tpl_xyz \
  -H "Authorization: Bearer $OSMTALK_API_KEY"

SDK

// TypeScript
await client.platform.getTemplates();           // built-ins + your team's saved
# Python
osm.platform.list_templates()

Both return the merged list when called with a valid session/API key; anonymous calls return only the built-ins.