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