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