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 mesh;
40pub mod keys;
41pub mod models;
42pub mod rag;
43pub mod realtime;
44pub mod search;
45pub mod session;
46pub mod video;
47pub mod voices;
48
49// Re-export primary types at crate root for convenience.
50pub use client::{Client, ClientBuilder, ResponseMeta, DEFAULT_BASE_URL, TICKS_PER_USD};
51pub use error::{ApiError, Error, Result};
52
53// Chat types
54pub use chat::{
55    ChatMessage, ChatRequest, ChatResponse, ChatStream, ChatTool, ChatUsage, Citation, ContentBlock,
56    StreamDelta, StreamEvent, StreamToolUse,
57};
58
59// Session types
60pub use session::{
61    ContextConfig, ContextMetadata, SessionChatRequest, SessionChatResponse, SessionContext,
62    SessionToolResult, ToolResult,
63};
64
65// Agent types
66pub use agent::{
67    AgentEvent, AgentRequest, AgentStream, AgentStreamEvent, AgentWorker, AgentWorkerConfig,
68    MissionEvent, MissionRequest, MissionWorker, MissionWorkerConfig,
69};
70
71// Image types
72pub use image::{
73    GeneratedImage, ImageEditRequest, ImageEditResponse, ImageRequest, ImageResponse,
74};
75
76// Video types
77pub use video::{
78    Avatar, AvatarsResponse, DigitalTwinRequest, GeneratedVideo, HeyGenAvatarsResponse,
79    HeyGenTemplatesResponse, HeyGenVoice, HeyGenVoicesResponse, JobResponse, PhotoAvatarRequest,
80    StudioClip, StudioVideoRequest, TranslateRequest, VideoRequest, VideoResponse,
81    VideoStudioRequest, VideoTemplate, VideoTemplatesResponse, VideoTranslateRequest,
82};
83
84// Audio types
85pub use audio::{
86    AlignRequest, AlignResponse, AlignedWord, AlignmentSegment, AudioResponse, DialogueRequest,
87    DialogueResponse, DialogueTurn, DubRequest, DubResponse, ElevenMusicClip, ElevenMusicRequest,
88    ElevenMusicResponse, FinetuneInfo,
89    IsolateVoiceRequest, IsolateRequest,
90    IsolateVoiceResponse, ListFinetunesResponse,
91    MusicAdvancedClip, MusicAdvancedRequest, MusicAdvancedResponse, MusicClip,
92    MusicFinetuneCreateRequest, MusicFinetuneInfo, MusicFinetuneListResponse, MusicRequest,
93    MusicResponse, MusicSection,
94    RemixVoiceRequest, RemixRequest,
95    RemixVoiceResponse, SoundEffectRequest,
96    SoundEffectResponse, SpeechToSpeechRequest, SpeechToSpeechResponse, StarfishTTSRequest,
97    StarfishTTSResponse,
98    SpeechToTextRequest, SttRequest,
99    SpeechToTextResponse, SttResponse,
100    TextToSpeechRequest, TtsRequest,
101    TextToSpeechResponse, TtsResponse,
102    VoiceDesignRequest, VoiceDesignResponse, VoicePreview,
103};
104
105// Account types
106pub use account::{
107    BalanceResponse, PricingEntry, PricingResponse, UsageEntry, UsageQuery, UsageResponse,
108    UsageSummaryMonth, UsageSummaryResponse,
109};
110
111// Auth types
112pub use auth::{AuthAppleRequest, AuthResponse, AuthUser};
113
114// Batch types
115pub use batch::{
116    BatchJob, BatchJobInfo, BatchJobInput, BatchJobsResponse, BatchJsonlResponse,
117    BatchSubmitRequest, BatchSubmitResponse,
118};
119
120// Credits types
121pub use credits::{
122    CreditBalanceResponse, CreditPack, CreditPacksResponse, CreditPurchaseRequest,
123    CreditPurchaseResponse, CreditTier, CreditTiersResponse, DevProgramApplyRequest,
124    DevProgramApplyResponse,
125};
126
127// Jobs types
128pub use jobs::{
129    JobAcceptedResponse, JobCreateRequest, JobCreateResponse, JobListEntry, JobListResponse,
130    JobStatusResponse, JobStreamEvent, JobSummary, ListJobsResponse,
131};
132
133// Keys types
134pub use keys::{CreateKeyRequest, CreateKeyResponse, KeyDetails, ListKeysResponse, StatusResponse};
135
136// Compute types
137pub use compute::{
138    BillingEntry, BillingRequest, BillingResponse, ComputeInstance, ComputeInstanceInfo,
139    ComputeTemplate, DeleteResponse, InstanceResponse, InstancesResponse, ProvisionRequest,
140    ProvisionResponse, SSHKeyRequest, TemplatesResponse,
141};
142
143// Voices types
144pub use voices::{
145    AddVoiceFromLibraryRequest, AddVoiceFromLibraryResponse, CloneVoiceFile, CloneVoiceRequest,
146    CloneVoiceResponse, SharedVoice, SharedVoicesResponse, Voice, VoiceInfo, VoiceLibraryQuery,
147    VoicesResponse,
148};
149
150// 3D Mesh pipeline types
151pub use mesh::{
152    AnimateRequest, AnimationPostProcess, BasicAnimations, Generate3DRequest, ModelUrls,
153    PostProcess, RemeshRequest, RetextureRequest, RigRequest,
154};
155
156// Contact types
157pub use contact::{ContactRequest, ContactResponse};
158
159// Embeddings types
160pub use embeddings::{EmbedRequest, EmbedResponse};
161
162// Document types
163pub use documents::{
164    ChunkDocumentRequest, ChunkRequest,
165    ChunkDocumentResponse, ChunkResponse,
166    DocumentChunk, DocumentRequest, DocumentResponse,
167    ProcessDocumentRequest, ProcessRequest,
168    ProcessDocumentResponse, ProcessResponse,
169};
170
171// RAG types
172pub use rag::{
173    Collection, CollectionDocument, CollectionSearchRequest, CollectionSearchResult,
174    CollectionUploadResult, CreateCollectionRequest, RagCorpus, RagResult, RagSearchRequest,
175    RagSearchResponse,
176    SurrealRagProviderInfo, SurrealRagProvider,
177    SurrealRagProvidersResponse, SurrealRagResult,
178    SurrealRagSearchRequest, SurrealRagSearchResponse,
179};
180
181// Search types
182pub use search::{
183    ContextChunk, ContextOptions, Discussion, DiscussionResult, Infobox, InfoboxResult,
184    LLMContextResponse, NewsResult, SearchAnswerCitation, SearchAnswerChoice,
185    SearchAnswerMessage, SearchAnswerRequest, SearchAnswerResponse, SearchContextChunk,
186    SearchContextRequest, SearchContextResponse, SearchContextSource, SearchMessage,
187    SearchOptions, VideoResult, WebResult, WebSearchRequest, WebSearchResponse,
188};
189
190// Model types
191pub use models::{ModelInfo, PricingInfo};
192
193// Realtime voice types
194pub use realtime::{
195    realtime_connect_direct, realtime_connect_direct_to, RealtimeConfig, RealtimeEvent,
196    RealtimeReceiver, RealtimeSender, RealtimeSession, RealtimeSessionResponse,
197};
198
199// Error helpers
200pub use error::{is_auth_error, is_not_found_error, is_rate_limit_error};