@leg3ndy/sdk
v0.1.0
Published
TypeScript SDK for the Otto/Leg3ndy API.
Downloads
81
Readme
@leg3ndy/sdk
Official TypeScript SDK for the Otto/Leg3ndy API.
The SDK provides a small, stable client for applications that need to call the
Otto API directly. It is ESM-only and works in Node.js 18+ or any runtime with
fetch, ReadableStream, and AbortController.
Installation
npm install @leg3ndy/sdkQuick Start
import Leg3ndy from '@leg3ndy/sdk'
const client = new Leg3ndy({
apiKey: process.env.LEG3NDY_API_KEY,
})
const message = await client.messages.create({
model: 'otto-default',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello' }],
})
console.log(message.content)Streaming
const stream = client.messages.stream({
model: 'otto-default',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Write a short answer.' }],
})
for await (const event of stream) {
console.log(event)
}
const finalMessage = await stream.finalMessage()
console.log(finalMessage)Token Counting
const usage = await client.messages.countTokens({
model: 'otto-default',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Count this request.' }],
})
console.log(usage)Models
for await (const model of client.models.list()) {
console.log(model)
}Error Handling
import { APIError, RateLimitError } from '@leg3ndy/sdk'
try {
await client.messages.create({
model: 'otto-default',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello' }],
})
} catch (error) {
if (error instanceof RateLimitError) {
console.error('Rate limited')
} else if (error instanceof APIError) {
console.error(error.status, error.request_id, error.message)
} else {
throw error
}
}API Surface
client.messages.create(...)client.messages.stream(...)client.messages.countTokens(...)client.beta.messages.*client.models.list(...)APIErrorand status-specific subclasses- message, content block, image, tool, and stream event TypeScript types
Runtime Support
- Node.js 18+
- Bun
- ESM projects
Browser usage is not the primary target for this first release.
License
UNLICENSED. Copyright LEG3NDY.
