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
tracinginstrumentation 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::collections_search;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;pub use chat::web_search_allow;pub use chat::web_search_exclude;pub use chat::x_search;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.