Skip to main content

Overview

Telnyx is a cloud communications platform that provides programmable voice via its Call Control API. Ringlyra AI’s Telnyx integration uses Call Control plus WebSocket media streaming to power your voice agents.

Prerequisites

Before setting up Telnyx integration, you’ll need:
  • A Telnyx account
  • An API Key from the Telnyx Mission Control Portal
  • A Call Control Application (optional — leave the field blank in Ringlyra and we’ll auto-create one for you on save, with the inbound webhook URL pre-set)
  • At least one Telnyx phone number assigned to that Call Control Application
  • Ringlyra AI instance running and accessible

Configuration

Step 1: Get Telnyx Credentials

  1. Log in to the Telnyx Mission Control Portal
  2. Navigate to API Keys and create (or copy) an API Key
  3. (Optional) Navigate to Call Control → Applications and create (or open) the application you’ll use with Ringlyra, then copy its Connection ID (Call Control App ID). Skip this if you want Ringlyra to auto-create the Call Control Application for you on save.
  4. Navigate to Numbers → My Numbers and assign your phone numbers to the Call Control Application you’ll use with Ringlyra (if you’re letting Ringlyra auto-create the application, do this after saving the configuration in Step 2)

Step 2: Configure in Ringlyra AI

  1. Navigate to /telephony-configurations and click Add configuration
  2. Select Telnyx as your provider
  3. Enter your credentials:
    • API Key
    • Call Control App ID (Connection ID) — optional. Leave blank and Ringlyra will auto-create a Call Control Application on save (with the inbound webhook URL already configured) and store its Connection ID on this configuration.
  4. Click Save Configuration
  5. Open the configuration you just created and add at least one phone number (with country code in E.164 format, e.g. +1234567890). The default caller ID is used for outbound calls.
    If Ringlyra auto-created the Call Control Application for you, you still need to assign your Telnyx numbers to that application in the Telnyx Portal under Numbers → My Numbers. The auto-created application is named ringlyra-<random> — its Connection ID is shown on the saved configuration.

Step 3: Test Your Configuration

  1. Create a test workflow
  2. Click “Call” to verify connection
  3. Check call logs for successful connection

Inbound Calling Setup

Telnyx delivers inbound webhooks at the Call Control Application level — the webhook URL is configured once on the application, and applies to every number assigned to it. When you save an inbound workflow on a phone number, Ringlyra automatically pushes the webhook URL to your Call Control Application’s webhook_event_url (provided the credentials are correct). If Ringlyra auto-created the application during configuration save, the webhook URL is already set and this step is a no-op.

Step 1: Assign an Inbound Workflow to the Phone Number

  1. Go to /telephony-configurations and open your Telnyx configuration
  2. In the Phone numbers section, edit the number that should receive inbound calls
  3. Set its Inbound workflow to the agent that should answer
  4. Save

Step 2: Verify the Webhook URL on the Call Control Application

  1. Go to Call Control → Applications in the Telnyx Portal
  2. Open the application whose Connection ID you configured in Ringlyra
  3. In Webhook Settings, confirm:
    • Webhook URL is set to: https://api.ringlyra.com/api/v1/telephony/inbound/run
    • HTTP Method is POST
  4. Make sure the phone numbers you want to use for inbound are assigned to this application
    Ringlyra pushed this URL automatically when you saved the inbound workflow in Step 1. The same URL is shared across every number on the Call Control Application — Ringlyra matches the inbound call to the right agent using the called number’s inbound workflow assignment. If the field is empty, shows a different URL, or Ringlyra surfaced a sync warning on save, the auto-push failed — most often because the API Key or Connection ID in Ringlyra is incorrect. Paste the URL into the field yourself, set the method to POST, and save. On self-hosted Ringlyra, replace api.ringlyra.com with your backend domain.

Step 3: Verify Setup

  • Ensure your Ringlyra AI instance is publicly accessible
  • Verify any firewalls allow Telnyx’s IP ranges

Test Inbound Calling

  1. Call your configured Telnyx phone number from another phone
  2. Verify your Ringlyra AI voice agent answers and responds
  3. Check call logs in both Ringlyra AI dashboard and Telnyx Portal

Troubleshooting

Ensure phone numbers include country code in E.164 format: +1234567890
  • Verify the API Key is correct and active - Check for extra spaces in the key - Ensure the key hasn’t been revoked in the Telnyx Portal
  • Telnyx signs webhooks with Ed25519 - confirm the public key on the application hasn’t changed - Verify the webhook URL matches what Telnyx sends - Check if you’re behind a proxy that modifies request bodies
  • Verify WebSocket connection is established - Check firewall rules for WebSocket traffic - Ensure audio pipeline is configured correctly
  • Verify the Call Control Application’s webhook URL is set to https://api.ringlyra.com/api/v1/telephony/inbound/run - Ensure the webhook URL is publicly accessible from the internet - Confirm the called number is assigned to the same Call Control Application whose Connection ID is configured in Ringlyra - Confirm the called number exists in your Ringlyra telephony configuration and has an Inbound workflow assigned - Verify Ringlyra AI instance is running and responding
  • Confirm the phone number has an Inbound workflow assigned in /telephony-configurations - Verify the API Key matches the one stored in your Ringlyra telephony configuration - Verify WebSocket connection establishes successfully - Review call logs for error messages

Best Practices

  • Test your configuration with a single call before running campaigns
  • Monitor the Telnyx Portal for usage and billing
  • Use a dedicated Call Control Application for Ringlyra so the shared webhook URL doesn’t conflict with other systems