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.

Node.js 16+
Stable
npm Package

Features

Simple & Intuitive API
Full TypeScript Support
Automatic Retries
Modern async/await
Universal (Node.js & Browser)
Comprehensive Error Handling

Installation

bash
npm install orbitalsai

Quick Start

quick-start.js
javascript
import { OrbitalsClient } from "orbitalsai";
// Initialize the client with your API key
const client = new OrbitalsClient({
apiKey: "your-api-key-here",
});
// (Optional) List available models
const 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 complete
const 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 environment
const fileInput = document.querySelector('input[type="file"]');
const file = fileInput.files[0];
// You can optionally pass upload options (3rd arg) including model_name
const 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 timeout
const 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 models
const 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 range
const 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 convenience

Environment Variables

For security, use environment variables to store your API key:

.env
bash
# .env
ORBITALS_API_KEY=your-api-key-here
env-usage.js
javascript
const client = new OrbitalsClient({
apiKey: process.env.ORBITALS_API_KEY,
});