Skip to main content

Crate threatflux_anthropic_sdk

Crate threatflux_anthropic_sdk 

Source
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_retry when 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, but Client does 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

Constants§

API_VERSION