Skip to main content

Official SDKs

Raily provides official SDKs to make integration easy. Our SDKs handle authentication, retries, rate limiting, and error handling automatically.

Quick Comparison

FeatureJavaScriptPython
Async/AwaitYesYes
TypeScript TypesBuilt-inType hints
Auto-retryYesYes
Rate Limit HandlingAutomaticAutomatic
StreamingYesYes

Choosing an SDK

Use JavaScript/TypeScript if:

  • Building Node.js backend services
  • Creating serverless functions (Lambda, Vercel)
  • Working with modern JavaScript frameworks
  • Need TypeScript type safety

Use Python if:

  • Building ML/AI pipelines
  • Working with data science tools
  • Using frameworks like FastAPI, Django, Flask
  • Integrating with Jupyter notebooks

Common Patterns

Both SDKs follow similar patterns:
import Raily from '@raily/sdk';

const raily = new Raily({
  apiKey: process.env.RAILY_API_KEY
});

// Create content
const content = await raily.content.create({
  externalId: "article-123",
  title: "My Article",
  type: "article",
  source: "https://example.com/article"
});

// Check access
const access = await raily.access.check({
  contentId: content.id,
  requesterId: "my_app",
  context: { purpose: "rag" }
});

// Get analytics
const usage = await raily.analytics.usage({
  period: "30d"
});

Error Handling

Both SDKs provide typed exceptions:
import Raily, { RailyError, NotFoundError, RateLimitError } from '@raily/sdk';

try {
  const content = await raily.content.get('invalid_id');
} catch (error) {
  if (error instanceof NotFoundError) {
    console.log('Content not found');
  } else if (error instanceof RateLimitError) {
    console.log(`Rate limited. Retry after ${error.retryAfter}s`);
  } else if (error instanceof RailyError) {
    console.log(`API error: ${error.message}`);
  }
}

Environment Configuration

Both SDKs support multiple configuration methods:

Environment Variables

# Set in your environment
export RAILY_API_KEY=raily_sk_xxxxx
export RAILY_BASE_URL=https://api.raily.ai  # Optional

Direct Configuration

const raily = new Raily({
  apiKey: 'raily_sk_xxxxx',
  baseUrl: 'https://api.raily.ai',  // Optional
  timeout: 30000,  // 30 seconds
  retries: 3
});

Next Steps