Skip to main content

AI Agents

Orbit AI Agents are autonomous conversational agents that handle voice calls, chat messages, and multi-channel workflows without human intervention. Powered by LangGraph state machines and connected to your business tools, agents can qualify leads, handle support tickets, schedule appointments, and more.

How It Works

  1. Inbound trigger — a user sends a message or calls a number routed to an agent
  2. State evaluation — the agent runtime loads the conversation state and determines the next step
  3. LLM reasoning — the agent sends conversation context to Anthropic’s Claude for a decision
  4. Tool execution — the agent calls tools (APIs, databases, functions) as needed
  5. Response — the agent replies to the user via the appropriate channel

Agent Types

The type field you set on create accepts one of the following values (default custom):
type is a behavioral hint for the agent runtime — it does not restrict channel reach. Which channels an agent can serve (voice, SMS, WhatsApp, RCS, etc.) is determined by how the agent is deployed and which channels you attach to it, not by the type value.

Deployment model

Channels are not set at create time — there is no channels field on the agent. Bind the agent to a channel with one deploy call per channel:
channel accepts exactly five values — an unknown value returns 422:

One agent, several channels

Deploy to as many channels as you need — each deploy call adds one channel binding. Per-channel sessions are unified by default: cross_channel_enabled (default on create) lets the agent remember a contact’s earlier conversations on other channels, so an SMS + web-chat continuation shares context instead of starting cold. Set it to false to run each channel as an isolated session. For the conversation-side semantics (how the thread itself moves across channels while keeping one transcript), see Continue a conversation on another channel.

Channel restrictions to plan for

  • Voice — phone behavior (TTS voice, barge-in sensitivity, backchanneling, STT biasing) is configured on the agent’s voice_settings, not on the deploy call. Voice agents deploy and run with gateway defaults if you skip it, but tune before launch: Creating Agents → Deploy.
  • WhatsApp — deploy requires a WABA connection already linked to the workspace, and outbound template-initiated sends still need approved templates; the agent answers inside the 24-hour window or via templates.
  • Router agents — a router only hands work on; pair it with handoff targets and deploy the router itself on the inbound channel.

Limits and quotas

Hard caps enforced by the create/update schema and runtime: Runtime budgets (per agent, all overridable on create/update): Org-level invocation throttles return AGENT_INVOCATION_RATE_LIMIT_EXCEEDED (per-minute) and AGENT_INVOCATION_QUOTA_EXCEEDED (per-day, resets 00:00 UTC) as 429s — raise them via the agent rate-limits endpoints. There is no per-org cap on the number of agents.

Observability

Agent metrics surface in three places:
  • Analytics — resolution rates, latency, and cost per conversation are queried through the analytics surface; see Cross-channel analytics for the /api/v1/analytics endpoints (60 req/min/tenant, analytics:read scope).
  • Voice per-turn latency — for voice agents, GET /api/v1/voice/calls/:id/latency breaks a call down per turn (STT / LLM / TTS legs, P50/P95/P99) and per-turn cost (actual_cost_usd, billed_cost_usd).
  • Webhook events — agent lifecycle and handoff events are dispatched as agent.created, agent.updated, agent.deleted, agent.deployed, agent.undeployed, and agent.handoff_occurred. Subscribe from the webhook events catalog.
Cost uses two columns throughout agent surfaces: actual_cost_usd is the raw provider cost of the tokens an agent consumed; billed_cost_usd is what you are charged on your Devotel Orbit bill for the same work. Reconcile spend against billed_cost_usd; use actual_cost_usd only when comparing provider efficiency across models.

Handoff to humans and other agents

“Handoff” on this page means one of three supported moves — pick deliberately:

Limits choose the model

model is validated against an allowlist — anything else returns 422 with invalid_claude_model: Model choice is a cost/lever: heavier models cost more per turn and can blow max_cost_per_run_cents faster; a cheaper model with a tightened tool_loop_limit often beats a heavy model on volume triage. See Model selection and Cost controls.

Create-an-agent checklist

Before you deploy, confirm:
  1. Knowledge base ready — content ingested and attached via knowledge_base_ids; search_knowledge finds nothing without it. Knowledge base lifecycle
  2. Tools mapped — each entry under 64, names snake_case, custom tools not shadowing built-ins. Creating Agents → Built-in tools
  3. System prompt tested — under 10,000 characters, exercised against the dry-run / simulation endpoints before the first live deploy. Red-team and simulation guides
  4. Toggles set deliberatelycross_channel_enabled, memory_enabled, vision_enabled, budgets, and tool_loop_limit — the schema defaults are sensible but they are your policy.
  5. Handoff allowlisted — if the agent routes, handoff_targets names real agent ids. Handoff targets
  6. Channel verified — sending number, WABA link, or SIP webhook reachable; then one deploy call per channel.

Common errors

Quick Example

Create a simple FAQ agent with the Node.js SDK:
The search_knowledge built-in tool performs semantic retrieval, but it only grounds in content you attach via knowledge_base_ids. Without a linked knowledge base it has nothing to search. See the full built-in tool registry in Creating Agents.

Next Steps