FluxTokens Rust SDK

Official Rust SDK for the FluxTokens API
Access GPT-4.1, Gemini 2.5 Flash and more at 30% lower cost than competitors.
Website · Documentation · Dashboard
Installation
Add to your Cargo.toml:
[dependencies]
fluxtokens = "1.0"
tokio = { version = "1", features = ["full"] }
Quick Start
use fluxtokens::{Client, ChatCompletionRequest, Message};
#[tokio::main]
async fn main() -> Result<(), fluxtokens::Error> {
let client = Client::new("sk-flux-your-api-key");
let response = client.chat().completions().create(
ChatCompletionRequest::new("gpt-4.1-mini")
.messages(vec![
Message::system("You are a helpful assistant."),
Message::user("Hello!"),
])
).await?;
println!("{}", response.choices[0].message.content.as_ref().unwrap());
Ok(())
}
Available Models
| Model |
Provider |
Input Price |
Output Price |
Max Tokens |
Vision |
Audio |
Video |
gpt-4.1-mini |
OpenAI |
$0.28/1M |
$1.12/1M |
16,384 |
✅ |
❌ |
❌ |
gpt-4.1-nano |
OpenAI |
$0.07/1M |
$0.28/1M |
16,384 |
✅ |
❌ |
❌ |
gemini-2.5-flash |
Google |
$0.21/1M |
$1.75/1M |
65,536 |
✅ |
✅ |
✅ |
Usage Examples
Basic Chat Completion
let response = client.chat().completions().create(
ChatCompletionRequest::new("gpt-4.1-mini")
.messages(vec![
Message::user("What is the capital of France?"),
])
.temperature(0.7)
.max_tokens(256)
).await?;
println!("{}", response.choices[0].message.content.as_ref().unwrap());
System Messages
let response = client.chat().completions().create(
ChatCompletionRequest::new("gpt-4.1-mini")
.messages(vec![
Message::system("You are a pirate. Always respond in pirate speak."),
Message::user("How are you today?"),
])
).await?;
List Available Models
use fluxtokens::Models;
for model in Models::list() {
println!("{} ({})", model.name, model.provider);
println!(" Input: ${}/1M tokens", model.input_price);
println!(" Output: ${}/1M tokens", model.output_price);
println!(" Vision: {}", if model.supports_vision { "✅" } else { "❌" });
}
Configuration Options
use fluxtokens::{Client, ClientConfig};
let client = Client::with_config(
"sk-flux-...",
ClientConfig::default()
.base_url("https://api.fluxtokens.io")
.timeout(60)
.max_retries(3)
);
Error Handling
use fluxtokens::Error;
match client.chat().completions().create(request).await {
Ok(response) => {
println!("{}", response.choices[0].message.content.as_ref().unwrap());
}
Err(Error::Authentication(msg)) => {
eprintln!("Invalid API key: {}", msg);
}
Err(Error::RateLimit(msg)) => {
eprintln!("Rate limit exceeded: {}", msg);
}
Err(Error::InsufficientBalance(msg)) => {
eprintln!("Please add credits: {}", msg);
}
Err(Error::BadRequest(msg)) => {
eprintln!("Invalid request: {}", msg);
}
Err(e) => {
eprintln!("Error: {}", e);
}
}
Error Type Checking
if error.is_retryable() {
}
if error.is_authentication() {
}
Requirements
Support
License
MIT © FluxTokens