Make a phone call

Request

POST https://api.46elks.com/a1/calls

Request parameters

Parameters Example Description
from +46700000000 A valid phone number in E.164 format. Can be one of your voice enabled 46elks numbers, the phone number you signed up with, or an unlocked number.
to +46700000000 The phone number of the recipient, in E.164 format.
voice_start http://yourapp.example/call A webhook URL that returns the first action to execute. See Call actions for details. It is also possible to add a JSON struct for direct call actions without any logic, like: {"connect":"+46700000000"}.

Optional Request parameters

Parameters Example Description
whenhangup https://yourapp.example/callend URL to send call data to when call ends.
timeout 60 Seconds to wait for the to-number to pickup before stopping call.

The voice_start is not loaded until the call connects (when someone answers the phone call). Include the 'whenhangup' parameter as a parameter in the initial request if you want to get a webhook when the call ends including if the calls fails to connect in the first instance.

Sample code

curl https://api.46elks.com/a1/calls \
  -u <Username>:<API Password> \
  -d from=+46700000000 \
  -d to=+46700000000 \
  -d voice_start='{"play":"https://yourserver.example/files/hello.mp3"}'
import HTTPotion.base
authdata = [basic_auth: {'<API_USERNAME>',
                         '<API_PASSWORD>'}]

request = %{
            "from"    => "+46700000000",
            "to"      => "+46700000000",
            "voice_start" => "{"play":"https://yourserver.example/files/hello.mp3"}"
           }

request_data = URI.encode_query(request)

HTTPotion.start
HTTPotion.post("https://api.46elks.com/a1/calls",
  [body: request_data , ibrowse: authdata]
)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

public class UnirestSendcalls {
  public static void main(String[] args) {
    try {
      System.out.println("Sending calls");

      HttpResponse response = Unirest.post("https://api.46elks.com/a1/calls")
        .basicAuth("API_USERNAME","API_PASSWORD")
        .field("to", "+46700000000")
        .field("from", "+46700000000")
        .field("voice_start", "{"play":"https://yourserver.example/files/hello.mp3"}")
        .asString();

      System.out.println(response.getBody());
      }

    catch (Exception e){
        System.out.println(e);
    }
  }
}
function sendcalls ($calls) {
  $username = "API_USERNAME";
  $password = "API_PASSWORD";
  $context = stream_context_create(array(
    'http' => array(
      'method' => 'POST',
      'header'  => 'Authorization: Basic '.
                   base64_encode($username.':'.$password). "\r\n".
                   "Content-type: application/x-www-form-urlencoded\r\n",
      'content' => http_build_query($calls,'','&'),
      'timeout' => 10
  )));
  $response = file_get_contents("https://api.46elks.com/a1/calls",
    false, $context);

  if (!strstr($http_response_header[0],"200 OK"))
    return $http_response_header[0];
  return $response;
}
$calls = array(
  "from" => "+46700000000",
  "to" => "+46700000000",
  "voice_start" => '{"play":"https://yourserver.example/files/hello.mp3"}',
);
echo sendcalls($calls);
import requests

auth = (
    'API_USERNAME',
    'API_PASSWORD'
    )

fields = {
    'from': '+46700000000',
    'to': '+46700000000',
    'voice_start': '{"play":"https://yourserver.example/files/hello.mp3"}'
    }

response = requests.post(
    "https://api.46elks.com/a1/calls",
    data=fields,
    auth=auth
    )

print(response.text)
require 'net/http'

uri = URI('https://api.46elks.com/a1/calls')
req = Net::HTTP::Post.new(uri)
req.basic_auth 'API_USERNAME', 'API_PASSWORD'
req.set_form_data(
  :from => '+46700000000',
  :to => '+46704508449',
  :voice_start => '{"play":"https://yourserver.example/files/hello.mp3"}'
)

res = Net::HTTP.start(
    uri.host,
    uri.port,
    :use_ssl => uri.scheme == 'https') do |http|
  http.request req
end

puts res.body
const axios = require("axios");

const makeCall = async () => {
  
  try {

    // API credentials
    const username = '';
    const password = '';
    const authKey     = Buffer.from(username + ":" + password).toString("base64");

    // Set the SMS endpoint
    const url = "https://api.46elks.com/a1/calls";

    // Request data object
    var data = {
      from: "+46700000001",
      to: "+46700000002",
      voice_start: '{"connect":"+46700000003"}'
    }

    data = new URLSearchParams(data);
    data = data.toString();

    // Set the headers
    const config = {
      headers: {
       "Authorization": "Basic " + authKey
      }
    };

    // Send request
    const res = await axios.post(url, data, config);
    console.log(res.data);

  } catch (err) {
    console.error(err);
  }
};

makeCall();
  

More examples
C - C# - Go - Node.js (fetch) - Google App Script - Haskell - Postman

Response

Example JSON response
{
  "direction": "outgoing",
  "from": "+46700000000",
  "created": "2016-11-03T15:08:14.609873",
  "to": "+46700000000",
  "state": "ongoing",
  "id": "c719b1eefbf65b1f89c013e6433dbf537"
}
Attribute Type Description
id string Unique id of the call. Used to track the call during its lifetime and in history.
created string Time in UTC when the call was created.
state string Current state of the call.
Possible values are "success", "busy", "failed".
from string Caller id of the call.
to string The phone number the call is made to.
direction string The direction of the call.
Always "outgoing" when an call is initated by an API request.