Besides other benefits of working with InstaForex, every customer of the company can take advantage of a new service — Client Cabinet API.

API is a large function library available to every customer of InstaForex. With the new service you will be able to have the main functions of Client Cabinet on any web resource.

So, now every customer of InstaForex can make use of the following set of Client Cabinet options: queries about open and closed trades, account balance, lots closed during a certain period of time, bonus statistics, login history and account summary.

Access levels

There are two levels of access to Client Cabinet API functions.

Free access does not require entering any additional information.

Depending on the settings, with limited access you can view the data only after keying in the password or IP password and IP mask.

Client Cabinet API enables every InstaForex customer to keep his trading account in check without the need to log in to Client Cabinet on the company’s official website.

Example PHP

$Login = 0; #Must be Changed
$apiPassword = "password"; #Must be Changed
$data = array("Login" => $Login, "Password" => $apiPassword);
$data_string = json_encode($data);

$apiAuthenticationMethod = ''; #Must be Changed
$ch = curl_init('https://client-api.instaforex.com/'.$apiAuthenticationMethod);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($data_string)));

$token = curl_exec($ch);

$apiMethodUrl = ''; #Must be Changed
$ch = curl_init('https://client-api.instaforex.com/'.$apiMethodUrl.$Login); #possibly Must be Changed part with [$Login]. Depends on the method param
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('passkey: '.$token));
$result = curl_exec($ch);
echo $result;

Example C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Text;

namespace ClientPartnerApiDemoProject{
class PartnerApiSample{
public void TestMethod(){
const int login = 000000;
const string pass = "your pass";
var token = GetToken(login, pass);
var result = GetCommissionRecords(login, token);
foreach (var trade in result){
Console.WriteLine("{0} {1}",trade.Partner, trade.BalanceRecords.Count);
public string GetToken(int login, string password){
var client = new HttpClient();
HttpContent tokenContent = new ObjectContent(typeof(AccessTokenRequest), new AccessTokenRequest { Login = login, Password = password }, new JsonMediaTypeFormatter());
var token = client.PostAsync("https://client-api.instaforex.com/api/Authentication/RequestPartnerApiToken", tokenContent).Result.Content.ReadAsStringAsync().Result;
return token;
public List GetCommissionRecords(int login, string token){
var client = new HttpClient();
client.DefaultRequestHeaders.Add("passkey", token);
var result = client.GetAsync(string.Format("https://client-api.instaforex.com/partner/GetCommissionRecords/{0}", login)).Result.Content.ReadAsAsync>().Result;
return result;
public class AccessTokenRequest{
public int Login { get; set; }
public string Password { get; set; }
Can't speak right now?
Ask your question in the chat.