JavaScript SDK
JavaScript SDK Documentation
Official JavaScript/TypeScript SDK for the OrbitalsAI API. Process audio, manage billing, and integrate AI-powered features into your applications with ease.
Features
✓Simple & Intuitive API
✓Full TypeScript Support
✓Automatic Retries
✓Modern async/await
✓Universal (Node.js & Browser)
✓Comprehensive Error Handling
Installation
bash
npm install orbitalsaiQuick Start
quick-start.js
javascript
import { OrbitalsClient } from "orbitalsai";// Initialize the client with your API keyconst client = new OrbitalsClient({ apiKey: "your-api-key-here",});// (Optional) List available modelsconst models = await client.audio.getModels();console.log("Available models:", models.map(m => m.model_name));// Upload and transcribe audio (optionally choose a model)const file = /* your audio file */;const upload = await client.audio.upload(file, undefined, { generate_srt: true, language: "english", model_name: "Perigee-1", // optional, defaults to Perigee-1});// Wait for transcription to completeconst result = await client.audio.waitForCompletion(upload.task_id);console.log("Transcription:", result.result_text);Initialization
init.js
javascript
import { OrbitalsClient } from "orbitalsai";const client = new OrbitalsClient({ apiKey: "your-api-key-here", timeout: 30000, // optional - request timeout in ms maxRetries: 3, // optional - number of retry attempts debug: false, // optional - enable debug logging});Get Your API Key
Get your API key from the OrbitalsAI Dashboard
Audio Processing
Upload Audio for Transcription
javascript
// Browser environmentconst fileInput = document.querySelector('input[type="file"]');const file = fileInput.files[0];// You can optionally pass upload options (3rd arg) including model_nameconst upload = await client.audio.upload(file, undefined, { model_name: "Perigee-1" });console.log("Task ID:", upload.task_id);Check Transcription Status
check-status.js
javascript
const status = await client.audio.getStatus(taskId);console.log("Status:", status.status);if (status.status === "completed") { console.log("Transcription:", status.result_text); if (status.srt_content) { console.log("SRT subtitles:", status.srt_content); }}Wait for Completion
wait-completion.js
javascript
// Automatically polls until completion or timeoutconst result = await client.audio.waitForCompletion( taskId, 2000, // poll interval in ms (optional, default: 2000) 300000 // max wait time in ms (optional, default: 300000 - 5 minutes));console.log("Transcription:", result.result_text);Get All Tasks
get-tasks.js
javascript
const tasks = await client.audio.getTasks();tasks.forEach((task) => { console.log(`${task.original_filename}: ${task.status}`);});Get Available Models
get-models.js
javascript
// Fetch available transcription modelsconst models = await client.audio.getModels();models.forEach(model => { console.log(model.model_name, model.is_active ? "(active)" : "(inactive)");});Billing Management
Get Account Balance
get-balance.js
javascript
const balance = await client.billing.getBalance();console.log(`Balance: $${balance.balance}`);console.log(`Last updated: ${balance.last_updated}`);Get Daily Usage History
usage-history.js
javascript
// Get usage with date rangeconst usage = await client.billing.getUsageHistory({ start_date: "2024-01-01", end_date: "2024-01-31", page: 1, page_size: 30,});console.log(`Total records: ${usage.total_records}`);console.log("Period summary:", usage.period_summary);usage.records.forEach((record) => { console.log(`${record.date}:`); console.log( ` Transcription: ${record.transcription_usage} ($${record.transcription_cost})` ); console.log(` Total: $${record.total_cost}`);});Error Handling
The SDK provides detailed error classes for different scenarios:
error-handling.js
javascript
import { OrbitalsClient, AuthenticationError, ValidationError, RateLimitError, NetworkError,} from "orbitalsai";const client = new OrbitalsClient({ apiKey: "your-api-key" });try { const result = await client.audio.upload(file);} catch (error) { if (error instanceof AuthenticationError) { console.error("Invalid API key:", error.message); } else if (error instanceof ValidationError) { console.error("Invalid request:", error.message, error.details); } else if (error instanceof RateLimitError) { console.error("Rate limited. Retry after:", error.retryAfter); } else if (error instanceof NetworkError) { console.error("Network error:", error.message); } else { console.error("Unknown error:", error); }}Error Types
AuthenticationError
Invalid or missing API key (401)
ValidationError
Invalid request parameters (422)
RateLimitError
Too many requests (429)
NetworkError
Connection or timeout issues
Complete Example
complete-example.js
javascript
import { OrbitalsClient } from "orbitalsai";import fs from "fs";async function processAudio(filePath) { const client = new OrbitalsClient({ apiKey: process.env.ORBITALS_API_KEY, }); try { // 1. Upload file console.log("Uploading audio..."); const audioBuffer = fs.readFileSync(filePath); const upload = await client.audio.upload(audioBuffer, "audio.mp3", { generate_srt: true, language: "english", model_name: "Perigee-1", }); console.log("Task created:", upload.task_id); // 2. Wait for completion console.log("Processing..."); const result = await client.audio.waitForCompletion(upload.task_id); console.log("Processing complete!"); // 3. Check balance const balance = await client.billing.getBalance(); console.log(`Remaining balance: $${balance.balance}`); return result; } catch (error) { console.error("Error processing audio:", error); throw error; }}processAudio("./my-audio.mp3");TypeScript Support
The SDK is written in TypeScript and provides comprehensive type definitions:
types.ts
typescript
import type { OrbitalsConfig, AudioUploadOptions, ModelInfo, TaskStatus, BillingBalance, UsageHistory,} from "orbitalsai";// All types are exported for your convenienceEnvironment Variables
For security, use environment variables to store your API key:
.env
bash
# .envORBITALS_API_KEY=your-api-key-hereenv-usage.js
javascript
const client = new OrbitalsClient({ apiKey: process.env.ORBITALS_API_KEY,});