Open and update various types of accounts.

ACH Profiles

Create, update, and verify account ACH profiles.


Manage deposit and withdrawal transactions on an account.


Fetch statements, tax documents and trade confirmations for customers.


Manage and test evented webhooks.

Virtual Accounts

Create and update paper trading accounts.

ACAT Transfers

Manage ACAT Transfers on an account.


Examples, response types, property details and explanations.

Update a Promotion

  • Available in Paper Trading
  • Available in Production
  • Available to Advisors
  • Deprecated
Note: this API will be removed in future versions of the API. Please use the corresponding account-based API in its place.

You can update an application’s promotion at any point during its workflow. If the application has already been completed and has an account number, the promotion will subsequently be applied to the account as well.



Header Required Values/Example Default
Authorization Required Basic XXX


Parameter Type Param Type Required Values/Example Default
id Path Int Required 1234
Id of the application
code Body String Required abc
Promotion code to be applied to the Application

Code Example

curl -X PUT "https://api.tradier.com/v2/applications/{id}/promotion" \
     -H 'Authorization: Basic <TOKEN>' \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d '{ "code": "abc" }'
// 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("code", "abc");
    final HttpUriRequest request = RequestBuilder
        .addHeader("Authorization", "Basic <TOKEN>")
        .addHeader("Accept", "application/json")
        .setEntity(new StringEntity(node.toString(), APPLICATION_JSON))

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

# Version 2.5.0p0
require 'uri'
require 'net/http'

url = URI("https://api.tradier.com/v2/applications/{id}/promotion")

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

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Basic <TOKEN>'
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request.body = '{ "code": "abc" }'

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

import (

func main() {
    apiUrl := "https://api.tradier.com/v2/applications/{id}/promotion"
    u, _ := url.ParseRequestURI(apiUrl)
    urlStr := u.String()
    var jsonStr = []byte(`{ "code": "abc" }`)
    client := &http.Client{}
    r, _ := http.NewRequest("PUT", 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 {

// Version
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://api.tradier.com/v2/applications/{id}/promotion");
    var requestData = "{ \"code\": \"abc\" }";
    var data = Encoding.ASCII.GetBytes(requestData);
    request.Method = "PUT";
    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');

    method: 'put',
    url: 'https://api.tradier.com/v2/applications/{id}/promotion',
    json: {
     'code': 'abc'
    headers: {
      'Authorization': 'Basic <TOKEN>',
      'Accept': 'application/json'
  }, (error, response, body) => {
# Version 3.6.1
import requests

response = requests.put('https://api.tradier.com/v2/applications/{id}/promotion',
    json={'code': 'abc'},
    headers={'Authorization': 'Basic <TOKEN>', 'Accept': 'application/json'}
json_response = response.json()
// Version 7.2.17-0ubuntu0.18.04.1
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.tradier.com/v2/applications/{id}/promotion');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "code": "abc" }');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');

$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 Definition

Intentionally left blank