Skip to main content
Lindo provides official SDKs for TypeScript/JavaScript and Python to help you integrate with the API quickly and easily.

Available SDKs

TypeScript SDK

Full-featured SDK with TypeScript support for Node.js and browsers.

Python SDK

Sync and async clients for Python 3.8+.

TypeScript SDK

The lindoai package provides typed methods and interfaces for interacting with AI agents, workflows, workspace management, and analytics.

Installation

npm install lindoai

Quick Start

import { LindoClient } from 'lindoai';

const client = new LindoClient({
  apiKey: 'your-api-key',
});

// Run an agent
const result = await client.agents.run({
  agent_id: 'my-agent',
  input: { prompt: 'Hello!' },
});

// Start a workflow
const workflow = await client.workflows.start({
  workflow_name: 'publish-page',
  params: { page_id: 'page-123' },
});

// Get workspace credits
const credits = await client.workspace.getCredits();

// Get analytics
const analytics = await client.analytics.getWorkspace({
  from: '2024-01-01',
  to: '2024-01-31',
});

Configuration

const client = new LindoClient({
  apiKey: 'your-api-key',          // Required
  baseUrl: 'https://api.lindo.ai', // Optional
  timeout: 30000,                  // Optional, defaults to 30000ms
});

Agents

Run AI agents with custom inputs.
const result = await client.agents.run({
  agent_id: 'my-agent',
  input: { prompt: 'Hello!' },
  stream: false, // Optional: enable streaming
});

console.log(result.success);      // boolean
console.log(result.output);       // Agent output
console.log(result.credits_used); // Credits consumed

Workflows

Manage long-running workflows.
// Start a workflow
const workflow = await client.workflows.start({
  workflow_name: 'publish-page',
  params: { page_id: 'page-123' },
});

// Start multiple workflows in batch
const batch = await client.workflows.batchStart({
  workflow_name: 'publish-page',
  items: [
    { params: { page_id: 'page-1' } },
    { params: { page_id: 'page-2' } },
  ],
});

// Get workflow status
const status = await client.workflows.getStatus('instance-123');
// status.status: 'queued' | 'running' | 'paused' | 'completed' | 'failed' | 'terminated'

// Control workflows
await client.workflows.pause('instance-123');
await client.workflows.resume('instance-123');
await client.workflows.terminate('instance-123');

Workspace

const credits = await client.workspace.getCredits();
console.log(credits.balance);    // Current balance
console.log(credits.allocated);  // Total allocated
console.log(credits.used);       // Total used

Analytics

// Workspace analytics
const workspaceAnalytics = await client.analytics.getWorkspace({
  from: '2024-01-01',
  to: '2024-01-31',
});

// Website analytics
const websiteAnalytics = await client.analytics.getWebsite({
  from: '2024-01-01',
  to: '2024-01-31',
});

Error Handling

import {
  LindoClient,
  AuthenticationError,
  RateLimitError,
  NotFoundError,
  ValidationError,
  ServerError,
} from 'lindoai';

try {
  const result = await client.agents.run({
    agent_id: 'my-agent',
    input: {},
  });
} catch (error) {
  if (error instanceof AuthenticationError) {
    console.error('Please check your API key');
  } else if (error instanceof RateLimitError) {
    console.error(`Rate limited. Retry after ${error.retryAfter} seconds`);
  } else if (error instanceof NotFoundError) {
    console.error('Agent not found');
  } else if (error instanceof ValidationError) {
    console.error('Validation errors:', error.errors);
  } else if (error instanceof ServerError) {
    console.error('Server error, please try again later');
  }
}

Python SDK

The lindoai package provides both synchronous and asynchronous clients for Python.

Installation

pip install lindoai

Requirements

  • Python 3.8 or higher
  • httpx

Quick Start (Sync)

from lindoai import LindoClient

client = LindoClient(api_key="your-api-key")

# Run an agent
result = client.agents.run(
    agent_id="my-agent",
    input={"prompt": "Hello!"}
)

# Start a workflow
workflow = client.workflows.start(
    workflow_name="publish-page",
    params={"page_id": "page-123"}
)

# Get workspace credits
credits = client.workspace.get_credits()

# Get analytics
analytics = client.analytics.get_workspace(
    from_date="2024-01-01",
    to_date="2024-01-31"
)

# Close the client when done
client.close()

Using Context Manager

from lindoai import LindoClient

with LindoClient(api_key="your-api-key") as client:
    result = client.agents.run(
        agent_id="my-agent",
        input={"prompt": "Hello!"}
    )

Async Client

import asyncio
from lindoai import AsyncLindoClient

async def main():
    async with AsyncLindoClient(api_key="your-api-key") as client:
        result = await client.agents.run(
            agent_id="my-agent",
            input={"prompt": "Hello!"}
        )
        
        workflow = await client.workflows.start(
            workflow_name="publish-page",
            params={"page_id": "page-123"}
        )
        
        credits = await client.workspace.get_credits()

asyncio.run(main())

Configuration

client = LindoClient(
    api_key="your-api-key",           # Required
    base_url="https://api.lindo.ai",  # Optional
    timeout=30.0,                      # Optional, defaults to 30.0 seconds
)

Agents

result = client.agents.run(
    agent_id="my-agent",
    input={"prompt": "Hello!"},
    stream=False  # Optional: enable streaming
)

print(result.success)       # bool
print(result.output)        # Agent output
print(result.credits_used)  # Credits consumed

Workflows

# Start a workflow
workflow = client.workflows.start(
    workflow_name="publish-page",
    params={"page_id": "page-123"}
)

# Batch start
batch = client.workflows.batch_start(
    workflow_name="publish-page",
    items=[
        {"params": {"page_id": "page-1"}},
        {"params": {"page_id": "page-2"}},
    ]
)

# Get status
status = client.workflows.get_status("instance-123")
# status.status: 'queued', 'running', 'paused', 'completed', 'failed', 'terminated'

# Control workflows
client.workflows.pause("instance-123")
client.workflows.resume("instance-123")
client.workflows.terminate("instance-123")

Error Handling

from lindoai import (
    LindoClient,
    AuthenticationError,
    RateLimitError,
    NotFoundError,
    ValidationError,
    ServerError,
)

try:
    result = client.agents.run(agent_id="my-agent", input={})
except AuthenticationError:
    print("Please check your API key")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after} seconds")
except NotFoundError:
    print("Agent not found")
except ValidationError as e:
    print(f"Validation errors: {e.errors}")
except ServerError:
    print("Server error, please try again later")

Error Reference

Both SDKs provide consistent error classes:
Error ClassHTTP StatusDescription
AuthenticationError401Invalid or expired API key
ForbiddenError403Insufficient permissions
NotFoundError404Resource not found
ValidationError400Invalid request parameters
RateLimitError429Too many requests
ServerError5xxInternal server error
NetworkError-Network connection failed
TimeoutError-Request timed out