Installation
Install via npm:
npm install swiftlyai-client
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
}
}