Skip to main content

Crate xai_rust

Crate xai_rust 

Source
Expand description

§xai-rust

A Rust SDK for the xAI API (Grok models).

§Quick Start

use xai_rust::{XaiClient, Role};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = XaiClient::new(std::env::var("XAI_API_KEY")?)?;

    let response = client.responses()
        .create("grok-4")
        .message(Role::User, "Hello, Grok!")
        .send()
        .await?;

    println!("{}", response.output_text().unwrap_or_default());
    Ok(())
}

§Blocking Sync Client

use xai_rust::SyncXaiClient;

let client = SyncXaiClient::from_env()?;

let response = client
    .responses()
    .create("grok-4")
    .user("Say hello.")
    .send()?;

println!("{}", response.output_text().unwrap_or_default());

§Python SDK-style Helpers

use xai_rust::XaiClient;
use xai_rust::chat::{system, user, assistant, image, text, web_search};

let client = XaiClient::from_env()?;

let response = client.responses()
    .create("grok-4")
    .messages(vec![
        system("You are a helpful assistant."),
        user("What's in this image?"),
    ])
    .tool(web_search())
    .send()
    .await?;

§Features

  • Responses API: The primary endpoint for chat interactions
  • Chat Completions: Legacy chat API (deprecated but supported)
  • Image Generation: Generate images with Grok models
  • Files API: Upload and manage files
  • Models API: List available models
  • Realtime API: WebSocket-based voice interactions
  • Batch API: Process multiple requests in batches
  • Collections API: Document storage and retrieval
  • Tokenizer API: Count and get tokens
  • Streaming: Server-sent events for streaming responses
  • Telemetry (optional): Feature-gated tracing instrumentation for request/retry events

Re-exports§

pub use client::XaiClient;
pub use config::ClientConfig;
pub use config::SecretString;
pub use config::XaiClientBuilder;
pub use error::Error;
pub use error::Result;
pub use sync::SyncXaiClient;
pub use chat::assistant;
pub use chat::code_interpreter;
pub use chat::developer;
pub use chat::file;
pub use chat::file_inline;
pub use chat::image;
pub use chat::image_base64;
pub use chat::image_with_detail;
pub use chat::mcp;
pub use chat::required_tool;
pub use chat::system;
pub use chat::text;
pub use chat::tool;
pub use chat::tool_choice_auto;
pub use chat::tool_choice_none;
pub use chat::tool_choice_required;
pub use chat::tool_result;
pub use chat::tool_strict;
pub use chat::user;
pub use chat::web_search_allow;
pub use chat::web_search_exclude;
pub use chat::IntoMessageContent;
pub use models::auth::ApiKeyInfo;
pub use models::batch::Batch;
pub use models::batch::BatchListResponse;
pub use models::batch::BatchRequest;
pub use models::batch::BatchRequestInfo;
pub use models::batch::BatchRequestListResponse;
pub use models::batch::BatchRequestStatus;
pub use models::batch::BatchResult;
pub use models::batch::BatchResultListResponse;
pub use models::batch::BatchStatus;
pub use models::collection::AddDocumentsResponse;
pub use models::collection::BatchGetDocumentsRequest;
pub use models::collection::Collection;
pub use models::collection::CollectionListResponse;
pub use models::collection::CreateCollectionRequest;
pub use models::collection::Document;
pub use models::collection::DocumentListResponse;
pub use models::collection::SearchRequest;
pub use models::collection::SearchResponse;
pub use models::collection::SearchResult;
pub use models::collection::UpdateCollectionRequest;
pub use models::content::ContentPart;
pub use models::content::FileContent;
pub use models::content::ImageDetail;
pub use models::content::ImageUrlContent;
pub use models::file::DeleteFileResponse;
pub use models::file::FileListResponse;
pub use models::file::FileObject;
pub use models::file::FilePurpose;
pub use models::file::FileDownloadRequest;
pub use models::file::FileUploadChunksRequest;
pub use models::file::FileUploadChunksResponse;
pub use models::file::FileUploadInitializeRequest;
pub use models::file::FileUploadInitializeResponse;
pub use models::image::ImageData;
pub use models::image::ImageGenerationRequest;
pub use models::image::ImageGenerationResponse;
pub use models::image::ImageResponseFormat;
pub use models::message::Message;
pub use models::message::MessageContent;
pub use models::message::Role;
pub use models::response::InlineCitation;
pub use models::response::OutputItem;
pub use models::response::Response;
pub use models::response::ResponseFormat;
pub use models::response::ResponseFormatType;
pub use models::response::StreamChunk;
pub use models::response::TextContent;
pub use models::tokenizer::TokenizeRequest;
pub use models::tokenizer::TokenizeResponse;
pub use models::tool::FunctionCall;
pub use models::tool::FunctionDefinition;
pub use models::tool::McpServer;
pub use models::tool::McpTool;
pub use models::tool::Tool;
pub use models::tool::ToolCall;
pub use models::tool::ToolChoice;
pub use models::tool::WebSearchFilters;
pub use models::usage::Usage;
pub use models::videos::Video;
pub use models::videos::VideoData;
pub use models::videos::VideoEditRequest;
pub use models::videos::VideoGenerationRequest;
pub use models::videos::VideoGenerationResponse;
pub use models::videos::VideoResponseFormat;
pub use models::voice::AudioFormat;
pub use models::voice::ConversationContent;
pub use models::voice::ConversationContentType;
pub use models::voice::ConversationItem;
pub use models::voice::ConversationItemType;
pub use models::voice::RealtimeClientMessage;
pub use models::voice::RealtimeError;
pub use models::voice::RealtimeResponse;
pub use models::voice::RealtimeServerMessage;
pub use models::voice::SessionConfig;
pub use models::voice::Voice;

Modules§

api
API endpoint implementations.
chat
Chat helper functions matching the Python SDK’s ergonomic API.
client
xAI API client implementation.
config
Client configuration and builder.
error
Error types for the xAI SDK.
models
Data types for the xAI API.
stream
Server-Sent Events (SSE) streaming support.
sync
Blocking (sync-style) client facade built on top of the async SDK.