JavaScript/TypeScript SDK

Official JavaScript and TypeScript SDK for Tenzro. Works everywhere JavaScript runs - Node.js, browsers, Deno, Bun, and edge runtime environments.

npm package
TypeScript ready
Streaming

Installation

Install JavaScript SDKbash
# Install with npm
npm install @tenzro/sdk

# Install with yarn
yarn add @tenzro/sdk

# Install with pnpm
pnpm add @tenzro/sdk

# Install with bun
bun add @tenzro/sdk

Quick Start

Basic Usagejavascript
import { Tenzro } from '@tenzro/sdk';

// Initialize the client
const tenzro = new Tenzro({
  apiKey: 'sk_your_key_here', // Get from platform.tenzro.com
  baseURL: 'https://api.tenzro.com', // Optional, defaults to this
});

// Generate text with AI
const response = await tenzro.cortex.generate({
  prompt: "Write a hello world function in Python",
  model: "gpt-4o",
  max_tokens: 1000
});

console.log(response.content);

Configuration

Environment Variablesjavascript
// Using environment variables (recommended)
// Set TENZRO_API_KEY in your environment
const tenzro = new Tenzro(); // Automatically uses process.env.TENZRO_API_KEY

// Or load from a .env file
import { config } from 'dotenv';
config();

const tenzro = new Tenzro({
  apiKey: process.env.TENZRO_API_KEY
});

Error Handling

Try-Catch with TenzroErrorjavascript
import { TenzroError } from '@tenzro/sdk';

try {
  const response = await tenzro.cortex.generate({
    prompt: "Hello world",
    model: "gpt-4o"
  });
  
  console.log(response.content);
} catch (error) {
  if (error instanceof TenzroError) {
    console.error('Tenzro API Error:', error.message);
    console.error('Error code:', error.code);
    console.error('Status:', error.status);
  } else {
    console.error('Unexpected error:', error);
  }
}

Streaming

Real-time Streamingjavascript
// Streaming text generation
const stream = await tenzro.cortex.stream({
  prompt: "Write a long story about space exploration",
  model: "gpt-4o"
});

for await (const chunk of stream) {
  process.stdout.write(chunk.content);
}

// Or with callback
await tenzro.cortex.stream({
  prompt: "Write a story",
  model: "gpt-4o"
}, {
  onChunk: (chunk) => console.log(chunk.content),
  onComplete: () => console.log('\nStream completed'),
  onError: (error) => console.error('Stream error:', error)
});

React Integration

React Chat Componentjavascript
import React, { useState } from 'react';
import { Tenzro } from '@tenzro/sdk';

const tenzro = new Tenzro({
  apiKey: process.env.REACT_APP_TENZRO_API_KEY
});

function AIChat() {
  const [messages, setMessages] = useState([]);
  const [input, setInput] = useState('');
  const [loading, setLoading] = useState(false);

  const sendMessage = async () => {
    if (!input.trim()) return;
    
    setLoading(true);
    const userMessage = { role: 'user', content: input };
    setMessages(prev => [...prev, userMessage]);
    
    try {
      const response = await tenzro.cortex.chat({
        messages: [...messages, userMessage],
        model: 'gpt-4o'
      });
      
      setMessages(prev => [...prev, {
        role: 'assistant',
        content: response.content
      }]);
    } catch (error) {
      console.error('Error:', error);
    } finally {
      setLoading(false);
      setInput('');
    }
  };

  return (
    <div className="chat-container">
      <div className="messages">
        {messages.map((msg, i) => (
          <div key={i} className={`message ${msg.role}`}>
            {msg.content}
          </div>
        ))}
      </div>
      <div className="input-area">
        <input
          value={input}
          onChange={(e) => setInput(e.target.value)}
          onKeyPress={(e) => e.key === 'Enter' && sendMessage()}
          disabled={loading}
        />
        <button onClick={sendMessage} disabled={loading}>
          {loading ? 'Sending...' : 'Send'}
        </button>
      </div>
    </div>
  );
}

Node.js Backend

Express.js API Serverjavascript
// Node.js backend example
import express from 'express';
import { Tenzro } from '@tenzro/sdk';

const app = express();
const tenzro = new Tenzro();

app.use(express.json());

// Generate text endpoint
app.post('/api/generate', async (req, res) => {
  try {
    const { prompt, model = 'gpt-4o' } = req.body;
    
    const response = await tenzro.cortex.generate({
      prompt,
      model
    });
    
    res.json({
      success: true,
      content: response.content,
      tokens_used: response.tokens_used,
      cost: response.cost_estimate
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      error: error.message
    });
  }
});

// Deploy application endpoint
app.post('/api/deploy', async (req, res) => {
  try {
    const { github_url, name } = req.body;
    
    const deployment = await tenzro.factory.quickDeploy({
      github_url,
      name
    });
    
    res.json({
      success: true,
      deployment_id: deployment.id,
      url: deployment.endpoint.url
    });
  } catch (error) {
    res.status(500).json({
      success: false,
      error: error.message
    });
  }
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

Key Features

Full TypeScript Support

Complete type definitions for all API responses and request parameters

Universal Compatibility

Works in Node.js, browsers, Deno, Bun, and edge runtime environments

Tree Shakeable

Import only what you need for smaller bundle sizes

Streaming Support

Real-time streaming for chat, text generation, and live APIs

Async/Await

Modern promise-based API with async/await support

Error Handling

Comprehensive error types and automatic retry logic

Next Steps