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