Expand description
§OpenRouter Rust Client
A comprehensive, type-safe Rust client library for the OpenRouter API.
§Features
- Chat Completions API: Full support for
/v1/chat/completionsendpoint - Responses API (Beta): Support for the new
/v1/responsesendpoint - Anthropic Messages API: Support for
/v1/messagesendpoint - Embeddings API: Text and image embeddings support
- Streaming: Real-time streaming responses using Server-Sent Events
- Models API: List and filter available models
- Providers API: List available providers
- Generation API: Retrieve generation metadata
- Type-Safe: Comprehensive types for all API requests and responses
- Builder Pattern: Ergonomic builder APIs for constructing requests
- Error Handling: Detailed error types for different failure scenarios
§Quick Start
use openrouter_rust::{OpenRouterClient, ChatCompletionBuilder};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a client
let client = OpenRouterClient::builder()
.api_key("your-api-key")
.build()?;
// Build a request
let request = ChatCompletionBuilder::new("openai/gpt-3.5-turbo")
.user_message("What is the meaning of life?")
.build();
// Send the request
let response = client.chat_completion(request).await?;
if let Some(ref content) = response.choices[0].message.content {
println!("Response: {}", content);
}
Ok(())
}§Feature Flags
chat(default): Enable chat completions APIresponses: Enable Responses API (Beta)streaming(default): Enable streaming supportembeddings: Enable embeddings APIanthropic: Enable Anthropic Messages APIproviders: Enable providers APImodels: Enable models APIgenerations: Enable generation metadata API
§Examples
See the examples/ directory for more comprehensive examples.
Re-exports§
pub use client::OpenRouterClient;pub use client::OpenRouterClientBuilder;pub use error::OpenRouterError;pub use error::Result;pub use chat::ChatCompletionBuilder;pub use chat::ChatCompletionRequest;pub use chat::ChatCompletionResponse;pub use chat::ChatCompletionBuilder as ChatRequestBuilder;pub use chat::Choice;pub use streaming::ChatCompletionStream;pub use streaming::ChatCompletionChunk;pub use streaming::StreamingChoice;pub use streaming::DeltaMessage;pub use streaming::collect_stream;pub use providers::Provider;pub use providers::ProvidersResponse;pub use models::Model;pub use models::ModelsResponse;pub use models::ModelsCountResponse;pub use models::PublicPricing;pub use models::ModelArchitecture;pub use models::TopProviderInfo;pub use models::PerRequestLimits;pub use models::DefaultParameters;pub use models::ListModelsParams;pub use generations::GenerationResponse;pub use generations::GenerationData;pub use generations::ProviderResponse;pub use types::Message;pub use types::Role;pub use types::Function;pub use types::Tool;pub use types::ToolChoice;pub use types::ResponseFormat;pub use types::Usage;pub use types::Plugin;pub use types::ProviderPreferences;