Skip to content

Real-time voice API for AI phone agents

Give your AI a voice on the phone. Real-time speech, EU-hosted, GDPR-compliant.

What is sipgate flow?

sipgate flow is the real-time voice & telephony layer that connects phone calls to your own AI agents. It handles the telephony, speech-to-text, and text-to-speech, so you keep full control over your conversation logic and your choice of LLM — sipgate flow gives your existing AI a voice on the phone. It is GDPR-compliant, EU-hosted, and operated by sipgate in Germany — a European alternative to US-based voice AI platforms.

Whether you're building customer service bots, IVR systems, giving an existing chatbot a voice, or any interactive voice application, the API works with any programming language using HTTP webhooks or WebSocket.

New here? Start with the API Quick Start, the TypeScript SDK, or browse the FAQ.

For All Languages

The API uses plain JSON over HTTP/WebSocket - no SDK required. Examples are provided in Python, Node.js, Go, Ruby, and more.

TypeScript SDK Available

If you're using TypeScript, we also provide a convenient SDK that wraps the API for easier development.

Key Features

  • Event-Driven Architecture - Respond to user speech, barge-ins, and session events
  • Multiple TTS Providers - Support for Azure Cognitive Services and ElevenLabs
  • Flexible Actions - Speak, play audio, transfer calls, and more
  • TypeScript First - Full type safety with comprehensive type definitions
  • Easy Integration - Express.js middleware and WebSocket support out of the box
  • Production Ready - Built for scale with proper error handling and validation

Quick Example (Any Language)

Python:

python
@app.route('/webhook', methods=['POST'])
def webhook():
    event = request.json
    if event['type'] == 'user_speak':
        return jsonify({
            'type': 'speak',
            'session_id': event['session']['id'],
            'text': f"You said: {event['text']}"
        })
    return '', 204

Node.js:

javascript
app.post('/webhook', (req, res) => {
  const event = req.body;
  if (event.type === 'user_speak') {
    return res.json({
      type: 'speak',
      session_id: event.session.id,
      text: `You said: ${event.text}`
    });
  }
  res.status(204).send();
});

Or use our TypeScript SDK:

typescript
import { AiFlowAssistant } from "@sipgate/ai-flow-sdk";
const assistant = AiFlowAssistant.create({
  onUserSpeak: async (event) => {
    return `You said: ${event.text}`;
  },
});
app.post("/webhook", assistant.express());
Ready to get started? Check out our API Quick Start Guide for language-agnostic examples, or use our TypeScript SDK for convenience.

For AI-Assisted Development

Using Claude Code, ChatGPT, Cursor, or other AI coding assistants? We publish two auto-generated, always-up-to-date files following the llms.txt spec:

  • /llms.txt — short index, auto-discovered by AI tooling.
  • /llms-full.txt — full documentation corpus in a single file, ideal for pasting into an LLM context.

Getting Help