# FluxTokens Rust SDK
<div align="center">
[](https://crates.io/crates/fluxtokens)
[](https://docs.rs/fluxtokens)
[](https://opensource.org/licenses/MIT)
**Official Rust SDK for the FluxTokens API**
Access GPT-4.1, Gemini 2.5 Flash and more at **30% lower cost** than competitors.
[Website](https://fluxtokens.io) · [Documentation](https://fluxtokens.io/docs) · [Dashboard](https://fluxtokens.io/dashboard)
</div>
---
## Installation
Add to your `Cargo.toml`:
```toml
[dependencies]
fluxtokens = "1.0"
tokio = { version = "1", features = ["full"] }
```
## Quick Start
```rust
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
| `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
```rust
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
```rust
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
```rust
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
```rust
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
```rust
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
```rust
if error.is_retryable() {
// Retry the request
}
if error.is_authentication() {
// Handle auth error
}
```
## Requirements
- Rust 1.70+
- Tokio runtime
## Support
- 📧 Email: support@fluxtokens.io
- 💬 Discord: [Join our community](https://discord.gg/fluxtokens)
- 📖 Docs: [fluxtokens.io/docs](https://fluxtokens.io/docs)
## License
MIT © [FluxTokens](https://fluxtokens.io)