1 stable release
| new 1.0.0 | Jan 11, 2026 |
|---|
#2285 in Web programming
24KB
446 lines
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.
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 |
$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());
// Output: "The capital of France is Paris."
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?;
// Output: "Ahoy, matey! I be doin' just fine, thank ye fer askin'!"
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() {
// Retry the request
}
if error.is_authentication() {
// Handle auth error
}
Requirements
- Rust 1.70+
- Tokio runtime
Support
- 📧 Email: [email protected]
- 💬 Discord: Join our community
- 📖 Docs: fluxtokens.io/docs
License
MIT © FluxTokens
Dependencies
~7–22MB
~255K SLoC