Expand description
§Anthropic Rust SDK
An async, typed client for the Anthropic API. This is an unofficial, community-maintained SDK and is not developed, endorsed, or supported by Anthropic.
The crate provides high-level clients for Messages, Models, Message Batches, Files, Skills, selected administration resources, and selected beta or research-preview resources. API schemas and preview availability can change independently of a crate release; consult the repository’s coverage notes and Anthropic’s official API documentation before relying on a less common surface.
§Operational behavior
- Non-streaming requests retry eligible network, timeout, rate-limit, and
selected server errors by default. Use
RequestOptions::no_retrywhen a mutation must not be replayed automatically. - Streaming requests are not automatically reconnected, resumed, or retried.
- Request timeouts apply per attempt; total retry time can be longer.
- Rate-limiter utilities are available in
utils::rate_limit, butClientdoes not automatically apply them in the current implementation. - A custom base URL receives the configured credential and must be trusted.
§Quick Start
use threatflux_anthropic_sdk::{Client, MessageBuilder, DEFAULT_MODEL};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::from_env()?;
let model = std::env::var("ANTHROPIC_MODEL")
.unwrap_or_else(|_| DEFAULT_MODEL.to_owned());
let request = MessageBuilder::new()
.model(model)
.max_tokens(256)
.user("Explain Rust ownership in one short paragraph.")
.build_validated()?;
let response = client.messages().create(request, None).await?;
println!("{}", response.text());
Ok(())
}§Configuration
use std::time::Duration;
use threatflux_anthropic_sdk::{Client, Config, Result};
fn configured_client(api_key: &str) -> Result<Client> {
let config = Config::new(api_key)?
.with_timeout(Duration::from_secs(30))
.with_max_retries(2);
Client::try_new(config)
}Re-exports§
pub use client::Client;pub use config::Config;pub use config::DEFAULT_MODEL;pub use error::AnthropicError;pub use error::Result;pub use oauth::OAuthAdminClient;pub use oauth::OAuthConfig;pub use oauth::OAuthPrincipal;pub use oauth::OAuthToken;pub use oauth::TokenProvider;pub use models::Agent;pub use models::AgentCreateRequest;pub use models::AgentListResponse;pub use models::AgentModel;pub use models::AgentTool;pub use models::AgentUpdateRequest;pub use models::ApiKey;pub use models::ApiKeyActor;pub use models::ApiKeyListParams;pub use models::BatchResult;pub use models::CacheControl;pub use models::ClaudeCodeCoreMetrics;pub use models::ClaudeCodeToolMetric;pub use models::ClaudeCodeUsageActor;pub use models::ClaudeCodeUsageReportParams;pub use models::ClaudeCodeUsageReportResponse;pub use models::ClaudeCodeUsageReportRow;pub use models::CompletionRequest;pub use models::CompletionResponse;pub use models::CompletionStopReason;pub use models::ContentBlock;pub use models::ContentBlockDelta;pub use models::Credential;pub use models::CredentialCreateRequest;pub use models::CredentialKind;pub use models::CredentialListResponse;pub use models::Deployment;pub use models::DeploymentCreateRequest;pub use models::DeploymentListResponse;pub use models::DeploymentRun;pub use models::Dream;pub use models::DreamCreateRequest;pub use models::DreamError;pub use models::DreamInput;pub use models::DreamListParams;pub use models::DreamListResponse;pub use models::DreamModel;pub use models::DreamModelConfig;pub use models::DreamOutput;pub use models::DreamStatus;pub use models::DreamUsage;pub use models::EnrollmentUrl;pub use models::Environment;pub use models::EnvironmentConfig;pub use models::EnvironmentCreateRequest;pub use models::EnvironmentListResponse;pub use models::Fallback;pub use models::FallbackCreditToken;pub use models::Fallbacks;pub use models::File;pub use models::FileDownload;pub use models::FileListResponse;pub use models::FilePurpose;pub use models::FileStatus;pub use models::FileUploadRequest;pub use models::FileUploadResponse;pub use models::ImageSource;pub use models::Invite;pub use models::InviteCreateRequest;pub use models::InviteCreateRole;pub use models::InviteDeleteResponse;pub use models::InviteListParams;pub use models::InviteListResponse;pub use models::InviteStatus;pub use models::Member;pub use models::MemberRole;pub use models::MemberStatus;pub use models::MemoryStore;pub use models::MemoryStoreCreateRequest;pub use models::MemoryStoreListResponse;pub use models::Message;pub use models::MessageBatch;pub use models::MessageBatchCreateRequest;pub use models::MessageBatchListResponse;pub use models::MessageBatchRequest;pub use models::MessageBatchResult;pub use models::MessageBatchResultEntry;pub use models::MessageBatchStatus;pub use models::MessageCostReportBucket;pub use models::MessageCostReportParams;pub use models::MessageCostReportResponse;pub use models::MessageDelta;pub use models::MessageRequest;pub use models::MessageResponse;pub use models::MessageUsageReportBucket;pub use models::MessageUsageReportParams;pub use models::MessageUsageReportResponse;pub use models::Model;pub use models::ModelFamily;pub use models::ModelListResponse;pub use models::ModelSize;pub use models::Organization;pub use models::OutputConfig;pub use models::OutputEffort;pub use models::OutputFormat;pub use models::OutputTokensDetails;pub use models::Role;pub use models::SendEvent;pub use models::Session;pub use models::SessionCreateRequest;pub use models::SessionEvent;pub use models::SessionEventListResponse;pub use models::SessionListResponse;pub use models::SessionStatus;pub use models::SessionStopReason;pub use models::Skill;pub use models::SkillCreateRequest;pub use models::SkillDeleteResponse;pub use models::SkillFileUpload;pub use models::SkillLatestVersion;pub use models::SkillListParams;pub use models::SkillListResponse;pub use models::SkillVersion;pub use models::SkillVersionCreateRequest;pub use models::SkillVersionDeleteResponse;pub use models::SkillVersionListParams;pub use models::SkillVersionListResponse;pub use models::StopDetails;pub use models::StopReason;pub use models::StreamEvent;pub use models::SystemBlock;pub use models::SystemPrompt;pub use models::TaskBudget;pub use models::ThinkingConfig;pub use models::TokenCountRequest;pub use models::TokenCountResponse;pub use models::Tool;pub use models::ToolChoice;pub use models::TrustGrant;pub use models::TrustGrantStatus;pub use models::Tunnel;pub use models::TunnelCertificate;pub use models::TunnelCertificateCreateRequest;pub use models::TunnelCertificateListResponse;pub use models::TunnelCreateRequest;pub use models::TunnelListParams;pub use models::TunnelListResponse;pub use models::TunnelRotateTokenRequest;pub use models::TunnelToken;pub use models::Usage;pub use models::UsageReport;pub use models::User;pub use models::UserDeleteResponse;pub use models::UserListParams;pub use models::UserListResponse;pub use models::UserProfile;pub use models::UserProfileCreateRequest;pub use models::UserProfileListParams;pub use models::UserProfileListResponse;pub use models::UserProfileRelationship;pub use models::UserProfileUpdateRequest;pub use models::UserRole;pub use models::UserUpdateRequest;pub use models::UserUpdateRole;pub use models::Vault;pub use models::VaultCreateRequest;pub use models::VaultListResponse;pub use models::WebhookEvent;pub use models::WebhookEventData;pub use models::Workspace;pub use models::WorkspaceDataResidency;pub use models::WorkspaceListParams;pub use models::WorkspaceMember;pub use models::WorkspaceMemberCreateRequest;pub use models::WorkspaceMemberCreateRole;pub use models::WorkspaceMemberDeleteResponse;pub use models::WorkspaceMemberListParams;pub use models::WorkspaceMemberListResponse;pub use models::WorkspaceMemberRole;pub use models::WorkspaceMemberUpdateRequest;pub use models::WorkspaceStatus;pub use models::DEFAULT_COMPLETION_MODEL;pub use api::message_batches::BatchResultsStream;pub use api::message_batches::BatchResultsStreamOptions;pub use models::common::RawContentBlock;pub use models::common::ReplayUnknownPolicy;pub use models::message::FieldUpdate;pub use models::message::PromptOptions;pub use models::message::UsageDelta;pub use models::model::ModelCapabilities;pub use models::skill::CurrentSkill;pub use models::skill::CurrentSkillCreateRequest;pub use models::skill::CurrentSkillListResponse;pub use models::skill::CurrentSkillVersion;pub use models::skill::CurrentSkillVersionCreateRequest;pub use models::skill::CurrentSkillVersionListResponse;pub use streaming::StreamLimits;pub use types::PageStream;pub use types::PaginationLimits;pub use types::ApiErrorResponse;pub use types::HttpMethod;pub use types::ModelCapability;pub use types::PaginatedResponse;pub use types::Pagination;pub use types::RequestOptions;pub use types::RequestPriority;pub use streaming::EventParser;pub use streaming::MessageStream;pub use streaming::SessionEventStream;pub use builders::batch_builder::BatchBuilder;pub use builders::message_builder::MessageBuilder;
Modules§
- api
- API modules for different Anthropic API endpoints
- builders
- Builder utilities for constructing API requests
- client
- HTTP client for the Anthropic API
- config
- Configuration for the Anthropic API client
- error
- Error types for the Threatflux SDK
- models
- Data models for the Anthropic API
- oauth
- Explicit OAuth administration and optional workload identity federation.
- streaming
- Streaming support for real-time API responses
- tool_
runner - Optional, bounded execution of explicitly registered client tools.
- types
- Common types and utilities
- utils
- Utility modules for HTTP, retry logic, and rate limiting