Reputation: 171
Does anyone know how to programmatically check account balances in Twilio (via API)? Was it not implemented?
Upvotes: 16
Views: 8019
Reputation: 11
import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Balance;
...
public String getBalance(String accountSid, String authToken) {
Twilio.init(accountSid, authToken);
Balance balance = Balance.fetcher(accountSid).fetch();
return balance.getBalance();
}
Upvotes: 0
Reputation: 1190
You can get Balance by Python using this script :
from twilio.rest import Client
client = Client()
balance_data = client.api.v2010.balance.fetch()
balance = float(balance_data.balance)
currency = balance_data.currency
print(f'Your account has {balance:.2f}{currency} left.')
check this Tutorial is working for me ,is working for account and sub account
Upvotes: 0
Reputation: 11
For those who work with node.js
(javascript), the best way :
require('dotenv').config();
const client = require('twilio')(process.env.ACCOUNT_SID, process.env.AUTH_TOKEN)
client.balance.fetch()
.then((data) => {
const balance = Math.round(data.balance * 100) / 100;
const currency = data.currency;
console.log(`Your account balance is ${balance} ${currency}.`)
});
more information => https://www.twilio.com/blog/check-twilio-account-balance-javascript
Work perfectly !
Upvotes: 1
Reputation: 578
Update 06/27/2020 - Twilio's website now includes an example cURL script which can be wrapped in an HTML GET request: https://support.twilio.com/hc/en-us/articles/360025294494-Check-Your-Twilio-Project-Balance
Here is the C# code I use to get a value:
using System.Net;
using Newtonsoft.Json;
string url = "https://api.twilio.com/2010-04-01/Accounts/" + accountSid + "/Balance.json";
var client = new WebClient();
client.Credentials = new NetworkCredential(accountSid, authToken);
string responseString = client.DownloadString(url);
dynamic responseObject = JsonConvert.DeserializeObject<object>(responseString);
double accountBalance = Double.Parse(responseObject["balance"].Value);
accountBalance = Math.Round((double)accountBalance,2);
Upvotes: 2
Reputation: 1271
This is possible trough the use of HttpClient. Here is an C# example:
public static string GetTwilioBalance(string accountSid, string authToken)
{
// declare variable to assign later on
dynamic balance = null;
// check required parameters value
if (!string.IsNullOrEmpty(accountSid) && !string.IsNullOrEmpty(authToken))
{
// initialize the TwilioClient using credentials passed as parameters
TwilioClient.Init(accountSid, authToken);
// declare instance of HttpClient
using (var httpClient = new HttpClient())
{
// declaring and assigning the authorization value to pass as a parameter in the request to the API
string base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes(accountSid + ":" + authToken));
// adding it and using Basic authentication
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", base64authorization);
// receiving the raws response (got url from reading docs and other posts from other languages)
HttpResponseMessage response = httpClient.GetAsync("https://api.twilio.com/2010-04-01/Accounts/" + accountSid + "/Balance.json").Result;
// assigning the content to a variable
HttpContent content = response.Content;
// reading the string
string result = content.ReadAsStringAsync().Result;
// multiple ways of reading Json (which we will receive as result, here are 2
//dynamic value = JObject.Parse(result);
//string result1 = value.balance;
//string result2 = value["balance"];
// I prefer this one but this is a preference :)
balance = JObject.Parse(result)["balance"].ToString();
}
}
// you can handle this as you like
// for example purposes I am returning either the value of the Balance or a string value to flag/check afterwards if not succesful
return (balance != null) ? balance : "BalanceNotRetrieved";
}
And you could use it like that:
string twilioBalance = GetTwilioBalance(accountSid, authToken);
Hope it helps someone!
Upvotes: 1
Reputation: 998
You can get Twilio Account details and then make a request to get balance using subresource_uris.balance from Account response
{
"status": "active",
"subresource_uris": {
...
"balance": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Balance.json"
},
"type": "Full",
...
}
Here's a snippet - https://gist.github.com/andriichuk/d1c81e58398b19979a3ddbe8a64b316b
Upvotes: 10
Reputation: 9
I grab all records and use this in python (for loop in records):
Balance = 1024 - round_decimal(r.price)
The 1024 is the amount I paid in (which needs to be updated when applicable), price is what I have spent from the API. It's the best I've come up with, blends what you know with what limited info the API gives.
Upvotes: -1
Reputation: 3337
I confirm there is no API call to get the balance of your account. Even 2 years after this question has been asked. I have lodged a ticket requesting such basic action and was told "it's on the to-do
list" but they weren't too convincing. For whatever reason, it's by design you can't get your balance. It is a shame because they have such a formidable API and feature-set.
Upvotes: 1
Reputation: 30565
It's not possible to check account balances via the Twilio API.
Please see the REST API documentation for what's possible: https://www.twilio.com/docs/api/rest
Upvotes: 7