TypeScript Quick Start

Get started with the Autoken TypeScript/JavaScript client library. Full type safety and async/await support for Node.js.

Installation

npm install autoken

Or with yarn:

yarn add autoken

Configuration

Set your API key as an environment variable (recommended):

export AUTOKEN_API_KEY="sk_your_api_key_here"

Or pass it directly when creating the client:

import { Autoken } from 'autoken';

const client = new Autoken({ 
  apiKey: 'sk_your_api_key' 
});

Basic Usage

Execute a Task

import { Autoken } from 'autoken';

const client = new Autoken();

// Execute a task
const result = await client.task('translate-text', {
  text: 'Hello world',
  language: 'es'
});

console.log(result.output.translatedText); // "Hola mundo"
console.log(result.tokenCost); // Cost in tokens

List Available Tasks

const tasks = await client.listTasks();

for (const task of tasks) {
  console.log(`${task.name}: ${task.description}`);
}

Get Task Details

const task = await client.getTask('translate-text');

console.log(task.name);
console.log(task.description);
console.log(task.input);  // Input schema
console.log(task.output); // Output schema

Working with Files (Artifacts)

Upload and Use a File

import fs from 'fs';

// Read file and upload as artifact
const audioData = fs.readFileSync('./audio.mp3');
const artifact = await client.uploadArtifact(audioData, {
  filename: 'audio.mp3',
  mimeType: 'audio/mpeg'
});

// Use the artifact in a task
const result = await client.task('transcribe-audio', {
  artifactHash: artifact.contentHash
});

console.log(result.output.text);

Download an Artifact

// Generate audio and download it
const result = await client.task('text-to-speech', {
  text: 'Hello world',
  voice: 'alloy'
});

// Download the generated audio
const audioBuffer = await client.downloadArtifact(
  result.output.artifactHash
);

fs.writeFileSync('./output.mp3', audioBuffer);

Error Handling

import { Autoken, AutokenError } from 'autoken';

const client = new Autoken();

try {
  const result = await client.task('translate-text', {
    text: 'Hello',
    language: 'es'
  });
} catch (error) {
  if (error instanceof AutokenError) {
    console.error('Autoken error:', error.message);
    console.error('Status code:', error.statusCode);
  } else {
    throw error;
  }
}

Token Management

Check Balance

const balance = await client.getBalance();
console.log(`Balance: ${balance.balance}`);

View Transaction History

const transactions = await client.getTransactions();

for (const tx of transactions) {
  console.log(`${tx.type}: ${tx.amount} - ${tx.description}`);
}

Execution History

// Get execution history
const history = await client.getHistory();

for (const execution of history) {
  console.log(`${execution.taskName}: ${execution.status}`);
}

// Get a specific execution
const execution = await client.getExecution('exec_abc123');
console.log(execution.output);

Complete Example

import { Autoken } from 'autoken';
import fs from 'fs';

async function main() {
  const client = new Autoken();

  // Check balance
  const balance = await client.getBalance();
  console.log(`Current balance: ${balance.balance}`);

  // Translate text
  const translation = await client.task('translate-text', {
    text: 'Hello, how are you?',
    language: 'fr'
  });
  console.log(`Translation: ${translation.output.translatedText}`);

  // Generate speech
  const speech = await client.task('text-to-speech', {
    text: translation.output.translatedText,
    voice: 'alloy'
  });

  // Download and save the audio
  const audio = await client.downloadArtifact(speech.output.artifactHash);
  fs.writeFileSync('./greeting.mp3', audio);
  console.log('Audio saved to greeting.mp3');
}

main().catch(console.error);