Skip to content

Realizar chamadas (/calls)​

POST
/calls

Para realizar uma chamada de voz, utilize o método POST na rota /calls. Este método requer os seguintes parâmetros:

  • caller: Ramal ou número que originará a chamada (normalmente o mesmo valor de extension)
  • called: Número de telefone do destinatário
  • extension: Ramal do usuário que realizará a chamada
  • metadata: Metadados da chamada (opcional)

Este método retorna um objeto com os dados da chamada, incluindo:

  • status: Código de status da requisição
  • id: Identificador único da chamada
  • message: Mensagem de sucesso

Exemplo de requisição

Bash
curl --request POST \
  --url https://api.api4com.com/api/v1/calls/ \
  --header 'Authorization: {SEU_TOKEN}' \
  --header 'Content-Type: application/json' \
  --data '{
    "extension": "1000",
    "caller": "1000",
    "called": "+5548988669122",
    "metadata": {}
  }'

Resposta de sucesso:

JSON
{
  "status": "200",
  "id": "1PkXhmBsYAvr9legLB2d7BimT0Q",
  "message": "successful request"
}

Para encerrar a chamada, envie esse id para POST /calls/{id}/hangup.

Erros comuns

  • 404: O ramal informado em extension não existe na conta (EXTENSION_NOT_FOUND).
  • 422: Parâmetros inválidos, como caller ou called em formato de telefone inválido.
  • 424: Não foi possível estabelecer a chamada.
  • 429: Limite de requisições excedido. Consulte Rate Limit.

Importante:

  • Para realizar uma chamada de voz, é necessário informar o token de autenticação no cabeçalho da requisição.
  • Todas as chaves / valores enviados no campo metadata serão disponibilizados no webhook da chamada.
  • Diferente da rota /dialer (descontinuada), o id retornado por este método corresponde ao mesmo ID da chamada exibido na Lista de Chamadas, podendo ser usado tanto para consultas quanto para encerrar a chamada.
  • A resposta só é enviada depois que a chamada é estabelecida, o que pode levar o tempo de toque do ramal. Configure o timeout HTTP da sua integração considerando esse tempo.
  • Esta rota tem limite de 15 requisições por minuto por ramal de cada usuário. Consulte Rate Limit.

Corpo da Requisição​

JSON
{
"caller": "1000",
"called": "+554833328530",
"extension": "1000",
"metadata": {
}
}

Respostas​

Request was successful
JSON
{
"status": "200",
"message": "successful request",
"id": "1PkXhmBsYAvr9legLB2d7BimT0Q"
}

Exemplos​

cURL
curl -X POST \
'https://api.api4com.com/api/v1/calls' \
 -H "Content-Type: application/json"
JavaScript
fetch('https://api.api4com.com/api/v1/calls', {method:'POST',headers:{'Content-Type':'application/json'}})
  .then(response => response.json())
  .then(data => console.log(data));
PHP
<?php
$url = 'https://api.api4com.com/api/v1/calls';
$method = 'POST';
$headers = [
    'Content-Type' => 'application/json',
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
Python
import requests

url = 'https://api.api4com.com/api/v1/calls'

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

response = requests.post(url, headers=headers)
print(response.json())

Released under the MIT License.