Expand description
SDK for interacting with the TD Ameritrade API.
Important: Before starting, you will need to make sure you have a developer application created (thus a client ID), and a valid refresh token. If you need help with either of these steps, you should refer to the following API Guide Pages:
Create a Client and Fetch a New Token
After creating a Client
, you will need to give it an
access token. You can either use an existing one from your database or
filesystem, or fetch a new one from the API.
let mut client = Client::new("CLIENT_ID", "REFRESH_TOKEN", None);
let access_token = client.get_access_token().unwrap();
// We must convert the token response into a token usable by the client.
client.set_access_token(&Some(access_token.into()));
Create a Client and Use an Old Token
use tda_sdk::{AccessToken, Client};
let access_token = AccessToken {
expires_at: 0,
token: "YOUR_TOKEN_STRING".to_string(),
scope: Vec::new(),
};
let client = Client::new("CLIENT_ID", "REFRESH_TOKEN", Some(access_token));
Full Example for Fetching All Accounts
After a token has been set, you may call any of the API methods. You can view all request parameters in the params module.
use tda_sdk::{
Client,
params::GetAccountsParams,
responses::SecuritiesAccount,
};
let mut client = Client::new("CLIENT_ID", "REFRESH_TOKEN", None);
let access_token = client.get_access_token().unwrap();
client.set_access_token(&Some(access_token.into()));
let accounts = client.get_accounts(GetAccountsParams::default()).unwrap();
for account in accounts {
match account.securities_account {
SecuritiesAccount::MarginAccount { r#type, account_id, .. } => {
println!("Account ID: {}", account_id);
println!("Account Type: {}", r#type);
}
}
}
Token Structure and Expiration
This library does not handle token expirations, that is up to the user.
However, the AccessToken
struct has a handy
method for detecting its expiration status.
Note: The get_access_token()
response has a different structure than
the token expected by the client. You will need to parse the response.
let access_token: AccessToken = client.get_access_token().unwrap().into();
if access_token.has_expired() {
panic!("Token has expired!");
}
Modules
Structs and utilities for building API request parameters.
Structs and utilities for handling API response data.
Structs
API access token.
Client for interacting with the TDA API.
Enums
Represents all possible errors the Client
might encounter.
Constants
Base path for the TDA API.