SignalWire
⚠️ AVOID Deprecated APIs
SignalWire maintains compatibility APIs (LAML/CXML) that should NOT be used for new development:
- LAML endpoints (
/laml/) → Use REST API (/api/calling/,/api/video/) - CXML (XML markup) → Use SWML (YAML/JSON)
This skill documents ONLY modern APIs: REST with JSON, SWML, Relay SDK, AI Agents SDK.
SignalWire Technologies Quick Reference
| Technology | Use When | Format/Protocol | |------------|----------|-----------------| | REST APIs | Trigger actions from backend, query state | HTTP + JSON | | SWML | Define call flows, IVR, AI interactions | YAML/JSON documents | | Relay SDK | Real-time WebSocket control | JavaScript/Python | | AI Agents SDK | Build voice AI agents | Python decorators | | Call Fabric | Route between subscribers/resources | WebSocket framework | | SWAIG | AI agent calls server-side functions | HTTP POST to your endpoint |
Practical Knowledge from Production
This skill combines technical API documentation with practical implementation guidance from real-world SignalWire deployments. Each workflow file includes:
- Best Practices - Production-tested techniques and patterns
- Common Patterns - Real-world implementation examples
- Anti-Patterns - What NOT to do, mistakes to avoid
- Production Tips - Deployment, monitoring, and testing insights
- Real-World Examples - Complete working patterns from live applications
These insights come from analysis of 89 SignalWire training videos, LiveWire sessions, and production deployments.
Workflows by Use Case
Getting Started:
Voice Calls:
AI Voice Agents: Start with Voice AI overview
- SDK: Basics | Prompting | Functions | Deployment
- Best Practices: Patterns | Error Handling | Security | Testing | Debug Webhooks
Other:
Quick Start Patterns
Authentication: HTTP Basic Auth with Project ID (username) + API Token (password)
Space URL: All API requests go to https://{space-name}.signalwire.com
SWML Variables: %{call.from}, %{call.to}, %{params.custom_field}, %{args.user_input}
Webhooks: HTTP POST with JSON (call_id, call_state, from, to, direction)
Errors: REST returns HTTP status + JSON with error/message. SWML logs to Dashboard.
Key Concepts
Call States: queued → created → ringing → answered → ended
SWML Sections: main (required entry point) | execute (call + return) | transfer (goto)
Resources: Subscribers, AI Agents, SWML Scripts, Video Rooms, SIP Gateways, Relay Apps (created via Dashboard or REST API)
Critical Pattern: Loop Protection
SWML gather/prompt nodes can infinite loop. Always add counters:
- set:
loop_counter: "{{loop_counter | default(0) | int + 1}}"
- condition:
if: "{{loop_counter}} > 3"
then: hangup # Prevent caller stuck in loop
For complete patterns, see Inbound Call Handling.
AI Agents SDK Reference
IMPORTANT: For AI agent tasks, start with Voice AI - it covers 90% of use cases with examples and best practices.
Only load reference docs for: Complete API parameters, advanced features (Contexts/Steps, Prefabs), platform-specific deployment (Lambda/GCF/Azure), or debugging production issues.
See Voice AI workflow "When to Pull Additional Documentation" section for detailed guidance on when to use each reference document.
Finding the Right Workflow
New to SignalWire? → Authentication & Setup
Building AI voice agent? → Voice AI
Making/receiving calls? → Outbound Calling or Inbound Handling
Debugging webhooks/callbacks? → Webhooks & Events
Need real-time control? → Fabric & Relay
Additional Resources
- Main Documentation: https://developer.signalwire.com/
- GitHub Examples: https://github.com/signalwire
- AI Agents SDK: https://github.com/signalwire/signalwire-agents
- Dashboard:
https://{your-space-name}.signalwire.com