Looking for Turbo, click here

  Build, Test & Scale
AI Phone Agents

Bland is the infrastructure for building AI phone calling applications at scale

Receive a phone call from Blandy
What's your name?
What's your phone number?
Where do you work?
Blandy will call you momentarily...
Oops! Something went wrong while submitting the form.
Backed by

Send your first     phone call, with
<10 lines of code.

Send your first phone call,     with <10 lines of code.

Get your API key and $2 free credits when you sign up.

READ THE DOCS
curl --request POST \
  --url https://api.bland.ai/v1/calls \
  --header 'Content-Type: application/json' \
  --header 'authorization: <authorization>' \
  --data '{
  "phone_number": "+12223334455",
  "task": "A prompt up to 24k characters that instructs your phone agent what to do",
  "tools": [
    "A set of external APIs your phone agent can interact with during calls"
  ],
  "transfer_phone_number": "+16667778899",
  "voice_id": 123,
}'  
fetch('https://api.bland.ai/v1/calls', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'authorization': '<authorization>'
    },
    body: JSON.stringify({
        phone_number: '+12223334455',
        task: 'A prompt up to 24k characters that instructs your phone agent what to do',
        tools: ['A set of external APIs your phone agent can interact with during calls'],
        transfer_phone_number: '+16667778899',
        voice_id: 123
    })
})
.then(response => response.json())
.then(data => console.log(data))
.catch((error) => console.error('Error:', error));
import requests
import json

url = 'https://api.bland.ai/v1/calls'
authorization = '<authorization>'  # Replace with your actual authorization token
data = {
   'phone_number': '+12223334455',
   'task': 'A prompt up to 24k characters that instructs your phone agent what to do',
   'tools': ['A set of external APIs your phone agent can interact with during calls'],
   'transfer_phone_number': '+16667778899',
   'voice_id': 123
}

headers = {
   'Content-Type': 'application/json',
   'Authorization': authorization
}

response = requests.post(url, headers=headers, data=json.dumps(data))

print(response.text)
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
   static async Task Main(string[] args)
   {
       using (var client = new HttpClient())
       {
           var request = new HttpRequestMessage(HttpMethod.Post, "https://api.bland.ai/v1/calls");

           request.Headers.Add("Authorization", "<authorization>");
           request.Headers.Add("Content-Type", "application/json");

           var json = @"{
               ""phone_number"": ""+12223334455"",
               ""task"": ""A prompt up to 24k characters that instructs your phone agent what to do"",
               ""tools"": [""A set of external APIs your phone agent can interact with during calls""],
               ""transfer_phone_number"": ""+16667778899"",
               ""voice_id"": 123
           }";

           request.Content = new StringContent(json, Encoding.UTF8, "application/json");

           try
           {
               var response = await client.SendAsync(request);
               response.EnsureSuccessStatusCode();
               var responseBody = await response.Content.ReadAsStringAsync();
               Console.WriteLine(responseBody);
           }
           catch (HttpRequestException e)
           {
               Console.WriteLine("\nException Caught!");
               Console.WriteLine("Message :{0} ", e.Message);
           }
       }
   }
}
<?php

$url = 'https://api.bland.ai/v1/calls';
$authorization = "<authorization>"; // Replace with your actual authorization token

$data = array
    'phone_number' => '+12223334455',
    'task' => 'A prompt up to 24k characters that instructs your phone agent what to do',
    'tools' => array('A set of external APIs your phone agent can interact with during calls'),
    'transfer_phone_number' => '+16667778899',
    'voice_id' => 123
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Authorization: ' . $authorization
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);

if (!$response) {
    die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
}

curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'

url = URI.parse('https://api.bland.ai/v1/calls')
authorization = '<authorization>' # Replace with your actual authorization token

data = {
  phone_number: '+12223334455',
  task: 'A prompt up to 24k characters that instructs your phone agent what to do',
  tools: ['A set of external APIs your phone agent can interact with during calls'],
  transfer_phone_number: '+16667778899',
  voice_id: 123
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url.request_uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = authorization
request.body = data.to_json

begin
  response = http.request(request)
  puts response.body
rescue StandardError => e
  puts "Error: #{e.message}"
end
import java.io.OutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class Main {
   public static void main(String[] args) {
       String urlString = "https://api.bland.ai/v1/calls";
       String authorization = "<authorization>"; // Replace with your actual authorization token
       String jsonData = "{"
               + "\"phone_number\": \"+12223334455\","
               + "\"task\": \"A prompt up to 24k characters that instructs your phone agent what to do\","
               + "\"tools\": [\"A set of external APIs your phone agent can interact with during calls\"],"
               + "\"transfer_phone_number\": \"+16667778899\","
               + "\"voice_id\": 123"
               + "}";

       try {
           URL url = new URL(urlString);
           HttpURLConnection con = (HttpURLConnection) url.openConnection();
           con.setRequestMethod("POST");
           con.setRequestProperty("Content-Type", "application/json");
           con.setRequestProperty("Authorization", authorization);
           con.setDoOutput(true);

           try (OutputStream os = con.getOutputStream()) {
               byte[] input = jsonData.getBytes(StandardCharsets.UTF_8);
               os.write(input, 0, input.length);
           }

           StringBuilder response = new StringBuilder();
           try (BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8))) {
               String responseLine;
               while ((responseLine = br.readLine()) != null) {
                   response.append(responseLine.trim());
               }
           }            System.out.println(response.toString());

       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}

Program phone agents
to automate any task

Live Call Transfers

Transfer calls to a human whenever a condition you define is met.

TRY OUT TRANSFERS

Live Context

Integrate your APIs to inject live data into phone calls.

TRY LIVE CONTEXT

Human-like Voices

Select from our library or create a voice clone.

GET STARTED

Scale with Enterprise-grade capabilities

Fine tuning

Train an AI phone agent on existing phone calls to improve call performance, and build guardrails against hallucination.

Custom tools

Enable your phone agent to access external APIs, live during the call, to access customer records and knowledgebases, and perform actions like scheduling appointments.

Dedicated infrastructure

Even during moments of high volume, your enterprise’ infrastructure is partitioned from our general API, increasing the reliability of your phone agents.

A solution for
     every industry.

Automate phone calls in healthcare, real estate, logistics, financial services, alternative data, and small business.

01
Inbound Sales

Boost your conversion rate as much as 8x by calling inbound leads the moment they fill out your website form.

02
Customer Support

Offer a 24/7 support agent to answer customers’ questions and collect their contact info to call back later.

03
B2B Data Collection

Call pharmacies, apartment complexes, and larger organizations to collect and create valuable datasets.

How to get started

   How to get
started

Step ONE

Sign up and send your first phone call

Step TWO

Test your phone agent and craft a robust conversational pathway

Step THREE

Deploy your agent to fully automate your inbound and outbound phone calls

Bland maintains:
Call Monitoring
Prompt filtering
Rate limits for scaling
Periodic Audits

The highest standards of trust and safety.

We continue to actively restrict the calls we support, ensuring that our AI phone call technology continues to benefit consumers, businesses, and society as a whole.

The Latest,
from Bland

Serving sectors including real estate, healthcare, logistics, financial services, alternative data, small business and prospecting.

The Latest, from Bland

Learn how to build, test, and scale Bland AI phone agents to automate any phone call.

Frequently Asked Questions

If you have a question that isn't addressed here, reach out at hello@bland.ai.

What is Bland’s pricing?

Bland costs $0.12/minute, only for connected calls, billed to the exact second. To learn about volume discounts and enterprise solutions, submit an inquiry here.

Does Bland work outside the US?

By default, Bland’s infrastructure only works within the United States. For international enterprises, Bland can configure custom infrastructure. Please reach out here.

Can I create a phone agent that speaks non-english languages?

Yes you can, using Bland’s voice cloning functionality to create a voice for any language - from French to German, Spanish, etc.

If I’m not a developer, can I still use Bland?

If you aren’t a developer, you can integrate Bland using Zapier or Make. Join the Discord community to meet and get support from other no-code builders.

How do I access Bland Turbo?

You can access Bland Turbo via the developer portal. Get started here.

Does Bland work for Inbound calling?

Yes, you can configure Bland AI phone agents to answer inbound phone calls. To create your inbound phone agent, visit the Bland developer portal.

How many phone calls can Bland handle at any given time?

You can dispatch or receive thousands of phone calls at once, using Bland. To scale further, Bland will provide dedicated infrastructure for your enterprise. Connect with one of our solutions engineers here.

Can I create a custom phone agent with my company’s data?

Bland will fine-tune a custom language model for your enterprise, using prior conversation data. To inquire about a custom model, contact our team here.

What features does Bland Enterprise offer?

Custom models, removed rate limits (for unlimited scale), and enterprise-level support from Bland AI’s solutions engineers. Learn more here.

Bland.AI

The platform for AI phone calling