| Crates.io | fluxtokens |
| lib.rs | fluxtokens |
| version | 1.0.0 |
| created_at | 2026-01-11 22:47:04.260375+00 |
| updated_at | 2026-01-11 22:47:04.260375+00 |
| description | Official FluxTokens Rust SDK - Access GPT-4.1, Gemini 2.5 and more at 30% lower cost |
| homepage | https://fluxtokens.io |
| repository | https://github.com/fluxtokens/fluxtokens-rs |
| max_upload_size | |
| id | 2036654 |
| size | 75,146 |
Official Rust SDK for the FluxTokens API
Access GPT-4.1, Gemini 2.5 Flash and more at 30% lower cost than competitors.
Add to your Cargo.toml:
[dependencies]
fluxtokens = "1.0"
tokio = { version = "1", features = ["full"] }
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(())
}
| 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 | ✅ | ✅ | ✅ |
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."
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'!"
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 { "❌" });
}
use fluxtokens::{Client, ClientConfig};
let client = Client::with_config(
"sk-flux-...",
ClientConfig::default()
.base_url("https://api.fluxtokens.io")
.timeout(60)
.max_retries(3)
);
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);
}
}
if error.is_retryable() {
// Retry the request
}
if error.is_authentication() {
// Handle auth error
}
MIT © FluxTokens