OpenRouter Rust SDK
openrouter-rs
is a third-party Rust SDK that helps you interact with the OpenRouter API. It wraps various endpoints of the OpenRouter API, making it easier to use in Rust projects. By taking advantage of Rust's strengths like type safety, memory safety, and concurrency without data races, openrouter-rs
ensures a solid and reliable integration with the OpenRouter API.
Current Status
This SDK is currently being used in production and supports both simple and advanced usage patterns. If you encounter any issues while using it, please open an issue.
Features
- ✅ Builder pattern for complex requests (chat/completion/credits/generation)
- ✅ Simple constructors for basic usage
- ✅ Full API coverage including:
- API key management
- Chat and text completions
- Streaming responses
- Credit management
- Model information
Installation
Add to your Cargo.toml
:
[]
= "0.3.0"
Quick Start
Using Builder Pattern (Recommended)
use ;
async
Simple Constructor
use ;
// Simple one-off requests
let request = new;
Key Features Explained
1. Builder Pattern
For complex requests, we recommend using the builder pattern:
use CompletionRequest;
let request = builder
.model
.prompt
.temperature
.top_p
.max_tokens
.build?;
Benefits:
- Compile-time safety
- Auto-completion friendly
- Clear parameter validation
2. Streaming Responses
use ;
use StreamExt;
let client = new;
let request = builder
.model
.messages
.max_tokens
.temperature
.build?;
let mut stream = client.stream_chat_completion.await?;
while let Some = stream.next.await
3. Error Handling
Comprehensive error types:
use OpenRouterError;
match client.send_chat_completion.await
Examples
Run examples with:
# Builder pattern example
# Simple usage
# Streaming
Best Practices
- For complex requests: Use builders (
Request::builder()
) - For simple cases: Use direct constructors (
Request::new()
) - Always handle errors: Match on
OpenRouterError
variants - Reuse clients: Create one
OpenRouterClient
per application
Migration Guide
If upgrading from older versions:
Old Style | New Recommended Style |
---|---|
ChatCompletionRequest::new().max_tokens(100) |
ChatCompletionRequest::builder().max_tokens(100).build() |
CoinbaseChargeRequest::new(1.0, "addr", 1) |
CoinbaseChargeRequest::builder().amount(1.0).sender("addr").chain_id(1).build() |
Risk Disclaimer
This is a third-party SDK not affiliated with OpenRouter. Use at your own risk.
Contributing
Contributions welcome! Please:
- Use builders for new request types
- Include documentation examples
- Add tests for new features
License
MIT - See LICENSE