Docs JavaScript SDK
JS

JavaScript SDK

swiftlyai-client — Node.js, Deno, Bun, Browser

Installation

Install via npm:

npm install swiftlyai-client

GitHub: Swiftly-Developed/SwiftlyAIKit-Javascript-SDK

Quick Start

import { SwiftlyClient, userMessage } from 'swiftlyai-client';

// Initialize the client
const client = new SwiftlyClient({
  apiKey: 'sa_your_api_key',
});

// Send a chat message
const response = await client.chat(
  'claude-sonnet-4-5-20250929',
  [userMessage('Hello!')]
);
console.log(response.message);

Chat

Send a chat completion request with conversation history:

const response = await client.chat(
  'claude-sonnet-4-5-20250929',
  [
    systemMessage('You are a helpful assistant.'),
    userMessage('Explain quantum computing'),
  ],
  { temperature: 0.7 }  // optional options
);

console.log(response.message);     // The response text
console.log(response.model);       // Model used
console.log(response.usage);       // Token usage info

Streaming

Stream responses using async iterators:

for await (const chunk of client.streamChat(
  'claude-sonnet-4-5-20250929',
  [userMessage('Tell me a story')]
)) {
  process.stdout.write(chunk.message);
}

Image Generation

Generate images from text prompts:

const image = await client.generateImage(
  'A sunset over the mountains',
  'dall-e-3'
);

console.log(image.url);

Token Counting

Count tokens before sending a request:

const count = await client.countTokens(
  'claude-sonnet-4-5-20250929',
  [userMessage('Hello!')]
);

console.log(count.totalTokens);

Available Models

List all available models:

const models = await client.getModels();

models.providers.forEach(provider => {
  console.log(`${provider.name}: ${provider.models.length} models`);
});

Error Handling

Handle errors with typed exceptions:

try {
  const response = await client.chat(
    'claude-sonnet-4-5-20250929',
    [userMessage('Hello')]
  );
} catch (error) {
  if (error instanceof SwiftlyClientError) {
    console.log(error.message);
    console.log(error.code);

    if (error.isRetryable) {
      // Retry after suggestedRetryDelay
    }
    if (error.isBillingError) {
      // Show upgrade prompt
    }
  }
}

Quota Tracking

Monitor your usage quota:

const quota = client.currentQuota;

if (quota) {
  console.log(`Used: ${quota.requestsUsed} / ${quota.requestsLimit}`);
  console.log(`Usage: ${quota.usagePercent}%`);

  if (quota.isApproachingLimit) {
    // Show warning to user
  }
}