Skip to main content

quantum_sdk/
lib.rs

1//! Rust client SDK for the Quantum AI API.
2//!
3//! Supports text generation (with streaming), session chat, multi-agent orchestration,
4//! image/video/audio generation, embeddings, RAG search, compute provisioning,
5//! voice management, API key management, and model listing through a single API endpoint.
6//!
7//! # Example
8//!
9//! ```no_run
10//! # async fn example() -> quantum_sdk::Result<()> {
11//! let client = quantum_sdk::Client::new("your-api-key");
12//!
13//! let resp = client.chat(&quantum_sdk::ChatRequest {
14//!     model: "claude-sonnet-4-6".into(),
15//!     messages: vec![quantum_sdk::ChatMessage::user("Hello!")],
16//!     ..Default::default()
17//! }).await?;
18//!
19//! println!("{}", resp.text());
20//! # Ok(())
21//! # }
22//! ```
23
24pub mod account;
25pub mod agent;
26pub mod audio;
27pub mod auth;
28pub mod batch;
29pub mod chat;
30pub mod client;
31pub mod compute;
32pub mod contact;
33pub mod credits;
34pub mod documents;
35pub mod embeddings;
36pub mod error;
37pub mod image;
38pub mod jobs;
39pub mod keys;
40pub mod models;
41pub mod rag;
42pub mod realtime;
43pub mod search;
44pub mod session;
45pub mod video;
46pub mod voices;
47
48// Re-export primary types at crate root for convenience.
49pub use client::{Client, ClientBuilder, ResponseMeta, DEFAULT_BASE_URL, TICKS_PER_USD};
50pub use error::{ApiError, Error, Result};
51
52// Chat types
53pub use chat::{
54    ChatMessage, ChatRequest, ChatResponse, ChatStream, ChatTool, ChatUsage, ContentBlock,
55    StreamDelta, StreamEvent, StreamToolUse,
56};
57
58// Session types
59pub use session::{ContextConfig, SessionChatRequest, SessionChatResponse, SessionContext, ToolResult};
60
61// Agent types
62pub use agent::{
63    AgentRequest, AgentStream, AgentStreamEvent, AgentWorker, MissionRequest, MissionWorker,
64};
65
66// Image types
67pub use image::{
68    GeneratedImage, ImageEditRequest, ImageEditResponse, ImageRequest, ImageResponse,
69};
70
71// Video types
72pub use video::{
73    Avatar, AvatarsResponse, DigitalTwinRequest, GeneratedVideo, HeyGenVoice,
74    HeyGenVoicesResponse, JobResponse, PhotoAvatarRequest, StudioClip, StudioVideoRequest,
75    TranslateRequest, VideoRequest, VideoResponse, VideoTemplate, VideoTemplatesResponse,
76};
77
78// Audio types
79pub use audio::{
80    AlignRequest, AlignResponse, AlignmentSegment, AudioResponse, DialogueRequest, DialogueTurn,
81    DubRequest, ElevenMusicClip, ElevenMusicRequest, ElevenMusicResponse, FinetuneInfo, IsolateRequest,
82    ListFinetunesResponse, MusicClip, MusicRequest, MusicResponse, MusicSection, RemixRequest,
83    SoundEffectRequest, SoundEffectResponse, SpeechToSpeechRequest, StarfishTTSRequest,
84    SttRequest, SttResponse, TtsRequest, TtsResponse, VoiceDesignRequest,
85};
86
87// Account types
88pub use account::{
89    BalanceResponse, PricingEntry, PricingResponse, UsageEntry, UsageQuery, UsageResponse,
90    UsageSummaryMonth, UsageSummaryResponse,
91};
92
93// Auth types
94pub use auth::{AuthAppleRequest, AuthResponse, AuthUser};
95
96// Batch types
97pub use batch::{
98    BatchJob, BatchJobInfo, BatchJobsResponse, BatchJsonlResponse, BatchSubmitResponse,
99};
100
101// Credits types
102pub use credits::{
103    CreditBalanceResponse, CreditPack, CreditPacksResponse, CreditPurchaseRequest,
104    CreditPurchaseResponse, CreditTier, CreditTiersResponse, DevProgramApplyRequest,
105    DevProgramApplyResponse,
106};
107
108// Jobs types
109pub use jobs::{JobCreateRequest, JobCreateResponse, JobStatusResponse, JobSummary, ListJobsResponse};
110
111// Keys types
112pub use keys::{CreateKeyRequest, CreateKeyResponse, KeyDetails, ListKeysResponse, StatusResponse};
113
114// Compute types
115pub use compute::{
116    BillingEntry, BillingRequest, BillingResponse, ComputeInstance, ComputeTemplate,
117    DeleteResponse, InstanceResponse, InstancesResponse, ProvisionRequest, ProvisionResponse,
118    SSHKeyRequest, TemplatesResponse,
119};
120
121// Voices types
122pub use voices::{
123    AddVoiceFromLibraryResponse, CloneVoiceFile, CloneVoiceResponse, SharedVoice,
124    SharedVoicesResponse, Voice, VoiceLibraryQuery, VoicesResponse,
125};
126
127// Contact types
128pub use contact::ContactRequest;
129
130// Embeddings types
131pub use embeddings::{EmbedRequest, EmbedResponse};
132
133// Document types
134pub use documents::{
135    ChunkRequest, ChunkResponse, DocumentChunk, DocumentRequest, DocumentResponse, ProcessRequest,
136    ProcessResponse,
137};
138
139// RAG types
140pub use rag::{
141    RagCorpus, RagResult, RagSearchRequest, RagSearchResponse, SurrealRagProvider,
142    SurrealRagProvidersResponse, SurrealRagResult, SurrealRagSearchRequest,
143    SurrealRagSearchResponse,
144};
145
146// Model types
147pub use models::{ModelInfo, PricingInfo};
148
149// Realtime voice types
150pub use realtime::{
151    realtime_connect_direct, realtime_connect_direct_to, RealtimeConfig, RealtimeEvent,
152    RealtimeReceiver, RealtimeSender, RealtimeSession,
153};
154
155// Error helpers
156pub use error::{is_auth_error, is_not_found_error, is_rate_limit_error};