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 session;
44pub mod video;
45pub mod voices;
46
47// Re-export primary types at crate root for convenience.
48pub use client::{Client, ClientBuilder, ResponseMeta, DEFAULT_BASE_URL, TICKS_PER_USD};
49pub use error::{ApiError, Error, Result};
50
51// Chat types
52pub use chat::{
53    ChatMessage, ChatRequest, ChatResponse, ChatStream, ChatTool, ChatUsage, ContentBlock,
54    StreamDelta, StreamEvent, StreamToolUse,
55};
56
57// Session types
58pub use session::{ContextConfig, SessionChatRequest, SessionChatResponse, SessionContext, ToolResult};
59
60// Agent types
61pub use agent::{
62    AgentRequest, AgentStream, AgentStreamEvent, AgentWorker, MissionRequest, MissionWorker,
63};
64
65// Image types
66pub use image::{
67    GeneratedImage, ImageEditRequest, ImageEditResponse, ImageRequest, ImageResponse,
68};
69
70// Video types
71pub use video::{
72    Avatar, AvatarsResponse, DigitalTwinRequest, GeneratedVideo, HeyGenVoice,
73    HeyGenVoicesResponse, JobResponse, PhotoAvatarRequest, StudioClip, StudioVideoRequest,
74    TranslateRequest, VideoRequest, VideoResponse, VideoTemplate, VideoTemplatesResponse,
75};
76
77// Audio types
78pub use audio::{
79    AlignRequest, AlignResponse, AlignmentSegment, AudioResponse, DialogueRequest, DialogueTurn,
80    DubRequest, ElevenMusicClip, ElevenMusicRequest, ElevenMusicResponse, FinetuneInfo, IsolateRequest,
81    ListFinetunesResponse, MusicClip, MusicRequest, MusicResponse, MusicSection, RemixRequest,
82    SoundEffectRequest, SoundEffectResponse, SpeechToSpeechRequest, StarfishTTSRequest,
83    SttRequest, SttResponse, TtsRequest, TtsResponse, VoiceDesignRequest,
84};
85
86// Account types
87pub use account::{
88    BalanceResponse, PricingEntry, PricingResponse, UsageEntry, UsageQuery, UsageResponse,
89    UsageSummaryMonth, UsageSummaryResponse,
90};
91
92// Auth types
93pub use auth::{AuthAppleRequest, AuthResponse, AuthUser};
94
95// Batch types
96pub use batch::{
97    BatchJob, BatchJobInfo, BatchJobsResponse, BatchJsonlResponse, BatchSubmitResponse,
98};
99
100// Credits types
101pub use credits::{
102    CreditBalanceResponse, CreditPack, CreditPacksResponse, CreditPurchaseRequest,
103    CreditPurchaseResponse, CreditTier, CreditTiersResponse, DevProgramApplyRequest,
104    DevProgramApplyResponse,
105};
106
107// Jobs types
108pub use jobs::{JobCreateRequest, JobCreateResponse, JobStatusResponse, JobSummary, ListJobsResponse};
109
110// Keys types
111pub use keys::{CreateKeyRequest, CreateKeyResponse, KeyDetails, ListKeysResponse, StatusResponse};
112
113// Compute types
114pub use compute::{
115    BillingEntry, BillingRequest, BillingResponse, ComputeInstance, ComputeTemplate,
116    DeleteResponse, InstanceResponse, InstancesResponse, ProvisionRequest, ProvisionResponse,
117    SSHKeyRequest, TemplatesResponse,
118};
119
120// Voices types
121pub use voices::{
122    AddVoiceFromLibraryResponse, CloneVoiceFile, CloneVoiceResponse, SharedVoice,
123    SharedVoicesResponse, Voice, VoiceLibraryQuery, VoicesResponse,
124};
125
126// Contact types
127pub use contact::ContactRequest;
128
129// Embeddings types
130pub use embeddings::{EmbedRequest, EmbedResponse};
131
132// Document types
133pub use documents::{
134    ChunkRequest, ChunkResponse, DocumentChunk, DocumentRequest, DocumentResponse, ProcessRequest,
135    ProcessResponse,
136};
137
138// RAG types
139pub use rag::{
140    RagCorpus, RagResult, RagSearchRequest, RagSearchResponse, SurrealRagProvider,
141    SurrealRagProvidersResponse, SurrealRagResult, SurrealRagSearchRequest,
142    SurrealRagSearchResponse,
143};
144
145// Model types
146pub use models::{ModelInfo, PricingInfo};
147
148// Realtime voice types
149pub use realtime::{
150    realtime_connect_direct, realtime_connect_direct_to, RealtimeConfig, RealtimeEvent,
151    RealtimeReceiver, RealtimeSender, RealtimeSession,
152};
153
154// Error helpers
155pub use error::{is_auth_error, is_not_found_error, is_rate_limit_error};