using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using System.Net.Http.Headers;
static string _baseURL = "https://sandbox.livevol.com/api/v1/delayed/";
public static void Main()
string idServerURL = "https://sandbox.livevol.com/id/connect/token";
string authenticationHeader = Convert.ToBase64String(Encoding.UTF8.GetBytes("sandbox_api_examples_client:api_example_secret"));
var accessToken = GetBearerToken(idServerURL, authenticationHeader);
if (!string.IsNullOrEmpty(accessToken))
GetData("market/symbols/AAPL,RCL", accessToken);
static string GetBearerToken(string idServer, string authorization)
var httpClient = new HttpClient{BaseAddress = new Uri(idServer)};
Console.WriteLine("Accessing URL: " + idServer);
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authorization);
HttpResponseMessage response = httpClient.PostAsync(string.Empty, (HttpContent)new FormUrlEncodedContent(new Dictionary<string, string>()
{{"grant_type", "client_credentials"}}), CancellationToken.None).Result;
if (response.StatusCode == HttpStatusCode.OK)
var data = response.Content.ReadAsStringAsync().Result;
var content = JObject.Parse(data);
Console.WriteLine("Successfully received access token...");
return content.GetValue("access_token").ToString();
Console.WriteLine(string.Format("Response status code does not indicate success: {0} ({1})", (int)response.StatusCode, response.ReasonPhrase));
Console.WriteLine("Did you remember to update the client_id:client_secret?");
static void GetData(string url, string accessToken)
var httpClient = new HttpClient { BaseAddress = new Uri(_baseURL) };
Console.WriteLine("Accessing URL: " + _baseURL + url);
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var response = httpClient.GetAsync(url).Result;
if (response.StatusCode == HttpStatusCode.OK)
var data = JArray.Parse(response.Content.ReadAsStringAsync().Result);
DisplayNetFiddleTable(data);
Console.WriteLine(string.Format("Response status code does not indicate success: {0} ({1})", (int)response.StatusCode, response.ReasonPhrase));
static void DisplayNetFiddleTable(JArray data)
DataTable table = new DataTable();
table.Columns.Add("Symbol", typeof(string));
table.Columns.Add("Last", typeof(double));
table.Columns.Add("Bid", typeof(double));
table.Columns.Add("Ask", typeof(double));
table.Columns.Add("Volume", typeof(double));
foreach (var symbolValues in data)
table.Rows.Add(symbolValues.Value<string>("symbol"), symbolValues.Value<double>("current_price"),symbolValues.Value<double>("bid"),symbolValues.Value<double>("ask"),symbolValues.Value<double>("volume"));
FiddleHelper.WriteTable(table);