# Programmable Voice

With Twilio, you can quickly make and receive voice calls in your application. We provide the docs, code samples, SDKs, and developer tools you need on your journey. You bring your imagination. Let's build something amazing together.

[Make your first voice call](https://www.twilio.com/docs/voice/quickstart/server)

Take the next steps with Programmable Voice

1. Twilio servers
2. Your app

```python
from flask import Flask
from twilio.twiml.voice_response import VoiceResponse

app = Flask(__name__)

@app.route("/answer", methods=['GET', 'POST'])
def answer_call():
    resp = VoiceResponse()
    resp.say("Twilio's always there when you call!")
    return str(resp)

if __name__ == "__main__":
    app.run()
```

3. Twilio's always there when you call!

* * *

## Get Started

With just a few lines of code, you'll make your first outgoing phone call with the Voice API. Add a few more and your app can respond to incoming callers. Choose your programming language to get started.

- Node.js
- Python
- C#
- Java
- Go
- PHP
- Ruby
- twilio-cli
- curl

```javascript
// Download the helper library from https://www.twilio.com/docs/node/install
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";

// 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 = twilio(accountSid, authToken);

async function createCall() {
    const call = await client.calls.create({
        from: "+15558675310",
        to: "+15017122661",
        url: "http://demo.twilio.com/docs/voice.xml",
    });
    console.log(call.sid);
}

createCall();
```

Make your first call. Jump to a quickstart for the technology stack of your choice:

- [PHP](https://www.twilio.com/docs/voice/quickstart/server)
- [Node.js](https://www.twilio.com/docs/voice/quickstart/server)
- [Python](https://www.twilio.com/docs/voice/quickstart/server)
- [Ruby](https://www.twilio.com/docs/voice/quickstart/server)
- [Java](https://www.twilio.com/docs/voice/quickstart/server)
- [C#](https://www.twilio.com/docs/voice/quickstart/server)
- [Go](https://www.twilio.com/docs/voice/quickstart/server)

* * *

## Build your App

You've got an idea in mind. Let's get it to production. Pick the docs that are right for you. These short tutorials, sample apps, and API reference docs will get you from _dream_ to _HTTP `200 OK`_.

Voice Tutorials

- [Make outgoing voice calls](https://www.twilio.com/docs/voice/tutorials/how-to-make-outbound-phone-calls "Make outgoing voice calls")
- [Respond to incoming calls](https://www.twilio.com/docs/voice/tutorials/how-to-respond-to-incoming-phone-calls "Respond to incoming calls")
- [Browse our other Voice short tutorials](https://www.twilio.com/docs/voice/tutorials#basic-tutorials "Browse our other Voice short tutorials")

Sample Apps

- [Build an Interactive Voice Response system](https://www.twilio.com/docs/voice/tutorials/build-interactive-voice-response-ivr-phone-tree "Build an Interactive Voice Response system")
- [Add warm transfer for support agents](https://www.twilio.com/blog/warm-transfer-nodejs-express "Add warm transfer for support agents")
- [View our other Voice sample applications](https://www.twilio.com/docs/voice/tutorials "View our other Voice sample applications")

Voice API Reference

- [Dive into the Twilio Voice API](https://www.twilio.com/docs/voice/api "Dive into the Twilio Voice API")
- [Voice API Call resource reference documentation](https://www.twilio.com/docs/voice/api/call-resource "Voice API Call resource reference documentation")

* * *

## Advanced Features

Your application is unique, but you're not alone - we've got the building blocks you need to grow and scale. Use Twilio with your current VoIP system, debug call issues, find the right data, and queue and modify calls. Deploy your app with confidence.

Twilio's [Voice Insights](https://www.twilio.com/docs/voice/voice-insights "Voice Insights") takes your apps to the next level and helps you target the right improvements. Surface [jitter](https://www.twilio.com/docs/glossary/what-is-jitter "jitter"), [mean opinion score](https://www.twilio.com/docs/glossary/what-is-mean-opinion-score-mos "mean opinion score"), and [latency](https://www.twilio.com/docs/glossary/what-is-latency "latency") issues while monitoring the carrier and hang-up data you need to improve your service.

Build a [Conversational IVR](https://www.twilio.com/docs/voice/virtual-agent "Conversational IVR") using machine learning and natural language understanding with [Conversation Intelligence (classic)](https://www.twilio.com/docs/conversation-intelligence-classic "Conversation Intelligence (classic)") and [Virtual Agent](https://www.twilio.com/docs/voice/virtual-agent "Virtual Agent").

* * *

## Info

If you are an Australian Consumer customer, Twilio's Critical Information Summary (CIS) can be found [here](https://docs-resources.prod.twilio.com/documents/CriticalInformationSummaryofProgrammableVoice.docx "here").

Advanced Voice

- [Set up SIP for outgoing and incoming calls with Twilio Voice](https://www.twilio.com/docs/voice/api/sip-interface "Set up SIP for outgoing and incoming calls with Twilio Voice")
- [Forward incoming calls using your logic](https://www.twilio.com/blog/call-forwarding-nodejs-express "Forward incoming calls using your logic")

Insights and Reporting

- [Retrieve call logs](https://www.twilio.com/docs/voice/tutorials/how-to-retrieve-call-logs "Retrieve call logs")
- [Use Twilio Voice Insights to view advanced call metrics like carrier, hang-ups, jitter and latency](https://www.twilio.com/docs/voice/voice-insights "Use Twilio Voice Insights to view advanced call metrics like carrier, hang-ups, jitter and latency")

Useful Features

- [Modify in-progress calls using the Voice API](https://www.twilio.com/docs/voice/api/call-resource#update-a-call-resource "Modify in-progress calls using the Voice API")
- [Build in application features to detect answering machines](https://www.twilio.com/docs/voice/answering-machine-detection "Build in application features to detect answering machines")

* * *

When your phone number receives an incoming call, Twilio will send an HTTP request to your server at /answer.
Your app tells Twilio how to respond with a text to speech response.
Twilio gets the instructions from your app and sends the voice response.
