Voice

Getting started

Learn how to start building an engaging voice experience

Twilio Programmable Voice logo

Adding customizable voice capabilities has never been easier

Focus on your customers, not on building voice from the ground up

Twilio Voice gives you the tools needed to build bespoke voice experiences that meet and exceed ever-changing customer expectations. Using our enterprise-grade infrastructure, you can spend more time delivering memorable customer experiences and less time building those experiences from scratch.

And with our innovative APIs, SDKs, and developer resources, you’ll have all the support needed to start building a memorable voice application.

Voice API


Customer service agent

Upgrade how you connect with customers

Start connecting to customers around the world

// Download the helper library from https://www.twilio.com/docs/node/install
// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);

client.calls
      .create({
         url: 'https://example.com',
         to: '+15558675310',
         from: '+15017122661'
       })
      .then(call => console.log(call.sid));
# Download the helper library from https://www.twilio.com/docs/python/install
import os
from twilio.rest import Client


# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)

call = client.calls.create(
                        url='https://example.com',
                        to='+15558675310',
                        from_='+15017122661'
                    )

print(call.sid)
// Install the C# / .NET helper library from twilio.com/docs/csharp/install

using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;


class Program
{
    static void Main(string[] args)
    {
        // Find your Account SID and Auth Token at twilio.com/console
        // and set the environment variables. See http://twil.io/secure
        string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
        string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");

        TwilioClient.Init(accountSid, authToken);

        var call = CallResource.Create(
            url: new Uri("https://example.com"),
            to: new Twilio.Types.PhoneNumber("+15558675310"),
            from: new Twilio.Types.PhoneNumber("+15017122661")
        );

        Console.WriteLine(call.Sid);
    }
}
// Install the Java helper library from twilio.com/docs/java/install

import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Call;
import com.twilio.type.PhoneNumber;

import java.net.URI;

public class Example {
    // Find your Account SID and Auth Token at twilio.com/console
    // and set the environment variables. See http://twil.io/secure
    public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
    public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");

    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        Call call = Call.creator(
                new com.twilio.type.PhoneNumber("+15558675310"),
                new com.twilio.type.PhoneNumber("+15017122661"),
                URI.create("https://example.com"))
            .create();

        System.out.println(call.getSid());
    }
}
use Twilio\\Rest\\Client;

// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
\$sid = getenv("TWILIO_ACCOUNT_SID");
\$token = getenv("TWILIO_AUTH_TOKEN");
\$twilio = new Client(\$sid, \$token);

\$call = \$twilio->calls
               ->create("+15558675310", // to
                        "+15017122661", // from
                        ["url" => "https://example.com"]
               );

print(\$call->sid);
require 'rubygems'
require 'twilio-ruby'

# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = ENV['TWILIO_ACCOUNT_SID']
auth_token = ENV['TWILIO_AUTH_TOKEN']
@client = Twilio::REST::Client.new(account_sid, auth_token)

call = @client.calls.create(
                       url: 'https://example.com',
                       to: '+15558675310',
                       from: '+15017122661'
                     )

puts call.sid
# Install the twilio-cli from https://twil.io/cli

twilio api:core:calls:create \\
    --url https://example.com \\
    --to +15558675310 \\
    --from +15017122661
curl -X POST "https://api.twilio.com/2010-04-01/Accounts/\$TWILIO_ACCOUNT_SID/Calls.json" \\
--data-urlencode "Url=https://example.com" \\
--data-urlencode "To=+15558675310" \\
--data-urlencode "From=+15017122661" \\
-u \$TWILIO_ACCOUNT_SID:\$TWILIO_AUTH_TOKEN

// Download the helper library from https://www.twilio.com/docs/node/install
// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);

client.transcriptions('TRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
      .fetch()
      .then(transcription => console.log(transcription.dateCreated));
# Download the helper library from https://www.twilio.com/docs/python/install
import os
from twilio.rest import Client


# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)

transcription = client.transcriptions('TRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \\
                      .fetch()

print(transcription.date_created)
// Install the C# / .NET helper library from twilio.com/docs/csharp/install

using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;


class Program
{
    static void Main(string[] args)
    {
        // Find your Account SID and Auth Token at twilio.com/console
        // and set the environment variables. See http://twil.io/secure
        string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
        string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");

        TwilioClient.Init(accountSid, authToken);

        var transcription = TranscriptionResource.Fetch(
            pathSid: "TRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        );

        Console.WriteLine(transcription.DateCreated);
    }
}
public class Example {
    // Find your Account SID and Auth Token at twilio.com/console
    // and set the environment variables. See http://twil.io/secure
    public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
    public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");

    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        Transcription transcription =
            Transcription.fetcher("TRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
            .fetch();

        System.out.println(transcription.getDateCreated());
    }
}
<?php

// Update the path below to your autoload.php,
// see https://getcomposer.org/doc/01-basic-usage.md
require_once '/path/to/vendor/autoload.php';

use Twilio\\Rest\\Client;

// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
\$sid = getenv("TWILIO_ACCOUNT_SID");
\$token = getenv("TWILIO_AUTH_TOKEN");
\$twilio = new Client(\$sid, \$token);

\$transcription = \$twilio->transcriptions("TRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
                        ->fetch();

print(\$transcription->dateCreated->format());
# Download the helper library from https://www.twilio.com/docs/ruby/install
require 'rubygems'
require 'twilio-ruby'

# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = ENV['TWILIO_ACCOUNT_SID']
auth_token = ENV['TWILIO_AUTH_TOKEN']
@client = Twilio::REST::Client.new(account_sid, auth_token)

transcription = @client.transcriptions('TRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
                       .fetch

puts transcription.date_created
# Install the twilio-cli from https://twil.io/cli

twilio api:core:transcriptions:fetch \\
    --sid TRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
curl -X GET "https://api.twilio.com/2010-04-01/Accounts/\$TWILIO_ACCOUNT_SID/Transcriptions/TRXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json" \\
-u \$TWILIO_ACCOUNT_SID:\$TWILIO_AUTH_TOKEN

Control and modify calls with ease

Build without worrying about your data’s security

  • Emergency calling

    Enable emergency call routing to Public Safety Answering Points (PSAPs) in the US, Canada, and the UK

  • Masked calling

    Protect you and your customers’ sensitive data with temporary phone number proxies

  • HIPAA and PCI

    compliance: Twilio Voice is both HIPAA compliant and PCI DSS Level 1 compliant

// Download the helper library from https://www.twilio.com/docs/node/install
// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);

client.calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
      .payments
      .create({
         idempotencyKey: 'idempotency_key',
         statusCallback: 'https://example.com'
       })
      .then(payment => console.log(payment.sid));
# Download the helper library from https://www.twilio.com/docs/python/install
import os
from twilio.rest import Client


# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)

payment = client.calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \\
                .payments \\
                .create(
                     idempotency_key='idempotency_key',
                     status_callback='https://example.com'
                 )

print(payment.sid)
using Twilio;
using Twilio.Rest.Api.V2010.Account.Call;


class Program
{
    static void Main(string[] args)
    {
        // Find your Account SID and Auth Token at twilio.com/console
        // and set the environment variables. See http://twil.io/secure
        string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
        string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");

        TwilioClient.Init(accountSid, authToken);

        var payment = PaymentResource.Create(
            idempotencyKey: "idempotency_key",
            statusCallback: new Uri("https://example.com"),
            pathCallSid: "CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        );

        Console.WriteLine(payment.Sid);
    }
}
using Twilio;
using Twilio.Rest.Api.V2010.Account.Call;


class Program
{
    static void Main(string[] args)
    {
        // Find your Account SID and Auth Token at twilio.com/console
        // and set the environment variables. See http://twil.io/secure
        string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
        string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");

        TwilioClient.Init(accountSid, authToken);

        var payment = PaymentResource.Create(
            idempotencyKey: "idempotency_key",
            statusCallback: new Uri("https://example.com"),
            pathCallSid: "CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        );

        Console.WriteLine(payment.Sid);
    }
}
<?php

// Update the path below to your autoload.php,
// see https://getcomposer.org/doc/01-basic-usage.md
require_once '/path/to/vendor/autoload.php';

use Twilio\\Rest\\Client;

// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
\$sid = getenv("TWILIO_ACCOUNT_SID");
\$token = getenv("TWILIO_AUTH_TOKEN");
\$twilio = new Client(\$sid, \$token);

\$payment = \$twilio->calls("CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
                  ->payments
                  ->create("idempotency_key", "https://example.com");

print(\$payment->sid);
require 'twilio-ruby'

# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = ENV['TWILIO_ACCOUNT_SID']
auth_token = ENV['TWILIO_AUTH_TOKEN']
@client = Twilio::REST::Client.new(account_sid, auth_token)

payment = @client.calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
                 .payments
                 .create(
                    idempotency_key: 'idempotency_key',
                    status_callback: 'https://example.com'
                  )

puts payment.sid
# Install the twilio-cli from https://twil.io/cli

twilio api:core:calls:payments:create \\
    --call-sid CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \\
    --idempotency-key idempotency_key \\
    --status-callback https://example.com
curl -X POST "https://api.twilio.com/2010-04-01/Accounts/\$TWILIO_ACCOUNT_SID/Calls/CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Payments.json" \\
--data-urlencode "IdempotencyKey=idempotency_key" \\
--data-urlencode "StatusCallback=https://example.com" \\
-u \$TWILIO_ACCOUNT_SID:\$TWILIO_AUTH_TOKEN

Supporting products


Resources


Pricing


Flexible pricing for a flexible Voice API

With Twilio Voice, you only pay for what you use with no commitments necessary. Pay-as-you-go, or, get discounts on a committed volume.