Create Virtual Account

  • Available in Sandbox
  • Available in Production
  • Available to Advisors
  • Supported

Create a paper trading account with Tradier Brokerage. The account will be funded automatically with $100,000 of virtual cash. Additional funds can be made available using the funding API.

Available APIs:

  • Balances (user/account)
  • Positions (user/account)
  • Orders (user/account)
  • Trading
  • Market Data (delayed 15-minute)
  • Watchlists
POST

Headers

Header Required Values/Example Default
Authorization Required Basic XXX
HTTP Basic authentication, more information here.

Parameters

Parameter Type Param Type Required Values/Example Default
firstName Body String Required Jane
First name
lastName Body String Required Doe
Last Name
email Body String Required example@email.com
Email address
agreementSigned Body String Required 2019-06-04T12:08:56.235-0700
Signed virtual account terms of service. Data format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
repCode Body String Required REP
Representative code associated with virtual account

Code Example

curl -X POST "https://sandbox.tradier.com/v2/virtual/accounts" \
     -H 'Authorization: Basic <TOKEN>' \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d '{ "firstName": "Jane","lastName": "Doe","email": "example@email.com","agreementSigned": "2019-06-04T12:08:56.235-0700","repCode": "REP" }'
// Version 1.8.0_31
import static org.apache.http.entity.ContentType.APPLICATION_JSON;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

public class Main {
  public static void main(String[] args) throws IOException {
    final ObjectNode node = new ObjectMapper().createObjectNode();
    node.put("firstName", "Jane");
    node.put("lastName", "Doe");
    node.put("email", "example@email.com");
    node.put("agreementSigned", "2019-06-04T12:08:56.235-0700");
    node.put("repCode", "REP");
    final HttpUriRequest request = RequestBuilder
        .post("https://sandbox.tradier.com/v2/virtual/accounts")
        .addHeader("Authorization", "Basic <TOKEN>")
        .addHeader("Accept", "application/json")
        .setEntity(new StringEntity(node.toString(), APPLICATION_JSON))
        .build();

    final HttpResponse response = HttpClientBuilder.create().build().execute(request);
    final String jsonString = EntityUtils.toString(response.getEntity());
    final JsonNode json = new ObjectMapper().readTree(jsonString);

    System.out.println(response.getStatusLine().getStatusCode());
    System.out.println(json);
  }
}
# Version 2.5.0p0
require 'uri'
require 'net/http'

url = URI("https://sandbox.tradier.com/v2/virtual/accounts")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <TOKEN>'
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request.body = '{ "firstName": "Jane","lastName": "Doe","email": "example@email.com","agreementSigned": "2019-06-04T12:08:56.235-0700","repCode": "REP" }'

response = http.request(request)
puts response.code
puts response.read_body
// Version go1.12
package main

import (
    "fmt"
    "net/http"
    "net/url"
    "io/ioutil"
    "log"
    "bytes"
)

func main() {
    apiUrl := "https://sandbox.tradier.com/v2/virtual/accounts"
    u, _ := url.ParseRequestURI(apiUrl)
    urlStr := u.String()
    var jsonStr = []byte(`{ "firstName": "Jane","lastName": "Doe","email": "example@email.com","agreementSigned": "2019-06-04T12:08:56.235-0700","repCode": "REP" }`)
    client := &http.Client{}
    r, _ := http.NewRequest("POST", urlStr, bytes.NewBuffer(jsonStr))
    r.Header.Add("Authorization", "Basic <TOKEN>")
    r.Header.Add("Accept", "application/json")
    r.Header.Add("Content-Type", "application/json")

    resp, _ := client.Do(r)
    responseData, err := ioutil.ReadAll(resp.Body)

    if err != nil {
      log.Fatal(err)
    }

    fmt.Println(resp.Status)
    fmt.Println(string(responseData))
}
// Version 4.6.2.0
using System;
using System.Net;
using System.IO;
using System.Text;

public class MainClass {
  public static void Main (string[] args) {
    var request = (HttpWebRequest)WebRequest.Create("https://sandbox.tradier.com/v2/virtual/accounts");
    var requestData = "{ \"firstName\": \"Jane\",\"lastName\": \"Doe\",\"email\": \"example@email.com\",\"agreementSigned\": \"2019-06-04T12:08:56.235-0700\",\"repCode\": \"REP\" }";
    var data = Encoding.ASCII.GetBytes(requestData);
    
    request.Method = "POST";
    request.Headers["Authorization"] = "Basic <TOKEN>";
    request.Accept = "application/json";
    request.ContentType = "application/json";
    request.ContentLength = data.Length;

    using (var stream = request.GetRequestStream())
     {
         stream.Write(data, 0, data.Length);
     }

    var response = (HttpWebResponse)request.GetResponse();

    Console.WriteLine (response.StatusCode);
    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
    Console.WriteLine (responseString);
  }
}
// Version 10.15.2
const request = require('request');

request({
    method: 'post',
    url: 'https://sandbox.tradier.com/v2/virtual/accounts',
    json: {
     'firstName': 'Jane',
     'lastName': 'Doe',
     'email': 'example@email.com',
     'agreementSigned': '2019-06-04T12:08:56.235-0700',
     'repCode': 'REP'
    },
    headers: {
      'Authorization': 'Basic <TOKEN>',
      'Accept': 'application/json'
    }
  }, (error, response, body) => {
      console.log(response.statusCode);
      console.log(body);
  });
# Version 3.6.1
import requests

response = requests.post('https://sandbox.tradier.com/v2/virtual/accounts',
    json={'firstName': 'Jane', 'lastName': 'Doe', 'email': 'example@email.com', 'agreementSigned': '2019-06-04T12:08:56.235-0700', 'repCode': 'REP'},
    headers={'Authorization': 'Basic <TOKEN>', 'Accept': 'application/json'}
)
json_response = response.json()
print(response.status_code)
print(json_response)
<?php
// Version 7.2.17-0ubuntu0.18.04.1
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://sandbox.tradier.com/v2/virtual/accounts');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "firstName": "Jane","lastName": "Doe","email": "example@email.com","agreementSigned": "2019-06-04T12:08:56.235-0700","repCode": "REP" }');
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = 'Authorization: Basic <TOKEN>';
$headers[] = 'Accept: application/json';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
echo $http_code;
echo $result;

Response

Response Definition

{
    "uuid": "sb-ldkshj",
    "token": "s2AL3srXwiFfLso7Um4xuijo",
    "accountNumber": "VA02372"
}