Voice 
# Getting started
Learn how to start building an engaging voice experience 
[ Start for free  ](https://www.twilio.com/try-twilio?ext-anonymousId=281a6562-e13d-4154-b04b-030cf0c2f225&ext-gaClientId=103004518.1788813776&ext-gaSessionId=1788813772&utm_referrer=https%3A%2F%2Fwww.twilio.com%2Fen-us%2Fvoice%2Fgetting-started)
##  Adding customizable voice capabilities has never been easier 
![Diagram showing a customer asking to book a reservation for four at 8pm tomorrow, with text type classifications.](https://www.twilio.com/content/dam/twilio-com/global/en/products/voice/getting-started/voice-getting-started.png/_jcr_content/renditions/compressed-original.webp)
![Diagram showing a customer asking to book a reservation for four at 8pm tomorrow, with text type classifications.](https://www.twilio.com/content/dam/twilio-com/global/en/products/voice/getting-started/voice-getting-started.png/_jcr_content/renditions/compressed-original.webp)
### 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.
##  Upgrade how you connect with customers 
### Start connecting to customers around the world
  * [ Make your first outbound call ](https://www.twilio.com/docs/voice/tutorials/how-to-make-outbound-phone-calls-csharp)
In just minutes, you can take the first steps in building your ideal voice experience 
  * [ Call queues ](https://www.twilio.com/docs/voice/api/queue-resource)
Set up queues to store incoming calls in order, and then connect them to available agents 
  * [ Customize how you respond to calls ](https://www.twilio.com/docs/voice/tutorials/how-to-respond-to-incoming-phone-calls-csharp)
Respond to incoming calls using your ASP.NET web application 
  * [ Embed calling capabilities anywhere ](https://www.twilio.com/docs/voice/client/javascript)
Add the ability to make inbound and outbound calls from your browser or applications 


```
// 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
  * [ Global conference calling ](https://www.twilio.com/docs/voice/tutorials/how-to-create-conference-calls)
Create customizable conference calls for up to 250 people globally
  * [ Call recording ](https://www.twilio.com/docs/voice/tutorials/how-to-record-phone-calls)
Securely record, store, and encrypt both inbound and outbound call
  * [ Conversational Intelligence ](https://www.twilio.com/docs/voice/intelligence/api)
Turn voice calls into actionable data insights with machine learning.


### Build without worrying about your data’s security
  * [ Emergency calling ](https://www.twilio.com/docs/voice/sip/emergency-calling)
Enable emergency call routing to Public Safety Answering Points (PSAPs) in the US, Canada, and the UK 
  * [ Masked calling ](https://www.twilio.com/docs/glossary/what-is-masked-calling)
Protect you and your customers’ sensitive data with temporary phone number proxies 
  * [ HIPAA and PCI ](https://www.twilio.com/en-us/hipaa)
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
```

##  Communication doesn’t begin and end with Voice 
[](https://www.twilio.com/en-us/messaging)
######  Messaging
Reach your customers on their preferred channel worldwide with messaging—whether it’s over SMS, WhatsApp, or chat. 
[ Explore Messaging  ](https://www.twilio.com/en-us/messaging)
[](https://www.twilio.com/en-us/sip-trunking)
######  Elastic SIP Trunking
Add PSTN connectivity and global scaling to your communications infrastructure with the most agile SIP trunking solution available.
[ Explore SIP Trunking  ](https://www.twilio.com/en-us/sip-trunking)
##  Everything you’ll need to build engagement with Voice 
[ Get set up in just minutes using one of our quickstart guides and start building in the language of your choice. An icon of a right arrow ](https://www.twilio.com/docs/voice/quickstart) [ See how to both set up conference resources and initiate them using the REST API. An icon of a right arrow ](https://www.twilio.com/docs/voice/api/conference-resource) [ Increase your business agility by upgrading your VoIP infrastructure with scalable cloud capabilities. An icon of a right arrow ](https://www.twilio.com/docs/voice/sip) [ Route calls through one of our nine global edge locations to provide the lowest latency possible to your customers.  An icon of a right arrow ](https://www.twilio.com/docs/voice/sdks/javascript/edges#twilio-docs-content-area) [ Add agent-assisted payments to your voice experience with the guarantee that you stay secure with PCI compliance. An icon of a right arrow ](https://www.twilio.com/docs/voice/api/payment-resource) [ Use a verified phone number to set a caller ID when making calls with the REST API. An icon of a right arrow ](https://www.twilio.com/docs/voice/api/outgoing-caller-ids)
[ Set up call queueing to store incoming calls in order, then easily connect the first in line to a salesperson or agent. An icon of a right arrow ](https://www.twilio.com/docs/voice/api/queue-resource)
##  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. 
[ See Voice pricing  ](https://www.twilio.com/en-us/voice/pricing/us) [ Start for free  ](https://www.twilio.com/try-twilio?ext-anonymousId=281a6562-e13d-4154-b04b-030cf0c2f225&ext-gaClientId=103004518.1788813776&ext-gaSessionId=1788813772&utm_referrer=https%3A%2F%2Fwww.twilio.com%2Fen-us%2Fvoice%2Fgetting-started)
## Let's find the right products for you
## Generating your product picks...
## See your product picks
For the best recommendations, tell me your use case, goals, requirements, etc. 
Generating...
Complete
Thinking...
Finding the best products for your use case
R.I.P.
Something went wrong.
#  Generating Toolkit... See your toolkit
## What's in your toolkit
### 


[ ](https://www.twilio.com/en-us/voice/getting-started) [ View pricing ](https://www.twilio.com/en-us/voice/getting-started)
## Add-ons to enhance your basic toolkit
### 
[ ](https://www.twilio.com/en-us/voice/getting-started)
## Ask about your toolkit
Ask about Twilio products, features, and capabilities.
Thinking...
We've run into an issue, please try again. 
Looking for inspiration? Ask me one of these!
##  Toolkit summary
Did you know you can try these products today with a Twilio account?
### Products


### Add-ons


[ Start for free ](https://www.twilio.com/en-us/try-twilio?ext-anonymousId=281a6562-e13d-4154-b04b-030cf0c2f225&ext-gaClientId=103004518.1788813776&ext-gaSessionId=1788813772&utm_referrer=https%3A%2F%2Fwww.twilio.com%2Fen-us%2Fvoice%2Fgetting-started) [ Contact sales ](https://www.twilio.com/en-us/help/owl-sales)
Not quite what you're looking for?   
You can 
## Ready, set, build! Resources to get started
An icon of a right arrow
##  Put the toolkit to use
[ Start for free ](https://www.twilio.com/en-us/try-twilio?ext-anonymousId=281a6562-e13d-4154-b04b-030cf0c2f225&ext-gaClientId=103004518.1788813776&ext-gaSessionId=1788813772&utm_referrer=https%3A%2F%2Fwww.twilio.com%2Fen-us%2Fvoice%2Fgetting-started) [ Contact sales ](https://www.twilio.com/en-us/help/owl-sales)
Not quite what you're looking for? You can 
This product recommendation tool is powered by a hybrid AI system (Twilio and OpenAI) and may generate information that is inaccurate or incomplete. Recommendations are algorithmic, not professional advice. You should independently verify this information before use. By using this tool, you agree that your input is processed by both Twilio's internal systems and external OpenAI models to generate a response. You are responsible for any information you share. Twilio is not responsible for your use of this generated information, and this use does not modify your Twilio agreement if one is in place. Review our Privacy Notice for additional details on how we use data. 
