Skip to main content

Crate openrouter_rust

Crate openrouter_rust 

Source
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/completions endpoint
  • Responses API (Beta): Support for the new /v1/responses endpoint
  • Anthropic Messages API: Support for /v1/messages endpoint
  • 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 API
  • responses: Enable Responses API (Beta)
  • streaming (default): Enable streaming support
  • embeddings: Enable embeddings API
  • anthropic: Enable Anthropic Messages API
  • providers: Enable providers API
  • models: Enable models API
  • generations: 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;

Modules§

chat
client
error
generations
models
providers
streaming
types