Skip to content

Solatis API Documentation

API Version 2.1.0

Current stable API version with enhanced security features and improved rate limiting.

SOC 2 Type II Certified

Solatis APIs meet rigorous security standards for enterprise-grade applications.

Build AI-Powered Apps with Solatis APIs

Access 50+ production-ready AI endpoints for document intelligence, meeting analysis, content generation, and workflow automation. Enterprise-grade security, rate limiting, and 99.9% uptime SLA.

Key Features

🔒 Enterprise Security

SOC 2 Type II certified, end-to-end encryption, GDPR compliant, and role-based access control

⚡ 99.9% Uptime SLA

Production-grade infrastructure with automatic failover and 24/7 monitoring

📊 Smart Rate Limiting

Intelligent rate limiting that scales with your usage patterns and business needs

Quick Start

Get started with the Solatis API in minutes.

1. Get Your API Key

Navigate to your Solatis Dashboard and create a new API key:

bash
# Your API key will look like this:
sol_live_abc123xyz456...

Keep Your API Key Secure

Never commit API keys to version control or expose them in client-side code. Use environment variables.

2. Make Your First Request

bash
# Example: Transcribe an audio file
curl -X POST https://api.solatis.team/v2/transcribe \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "audio_url": "https://example.com/meeting.mp3",
    "language": "en",
    "speaker_labels": true
  }'

3. Handle the Response

json
{
  "id": "trans_abc123",
  "status": "processing",
  "estimated_completion": "2024-01-15T10:30:00Z",
  "webhook_url": "https://yourapp.com/webhook"
}

4. Get Results via Webhook or Polling

Option A: Webhook (Recommended)

javascript
// Your webhook endpoint receives:
{
  "id": "trans_abc123",
  "status": "completed",
  "transcript": "Full transcript text...",
  "speakers": [
    {"speaker": "Speaker 1", "segments": [...]},
    {"speaker": "Speaker 2", "segments": [...]}
  ],
  "duration_seconds": 1800,
  "confidence": 0.95
}

Option B: Polling

bash
curl https://api.solatis.team/v2/transcribe/trans_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Core API Endpoints

Document Intelligence

Analyze Documents

Extract insights, summaries, and structured data from documents.

http
POST /v2/documents/analyze

Request:

json
{
  "document_url": "https://example.com/contract.pdf",
  "analysis_type": "contract_review",
  "extract_fields": ["parties", "dates", "obligations", "risks"]
}

Response:

json
{
  "id": "doc_xyz789",
  "summary": "This is a service agreement between...",
  "extracted_fields": {
    "parties": ["Acme Corp", "Client LLC"],
    "start_date": "2024-01-01",
    "end_date": "2025-01-01",
    "obligations": [...],
    "risks": [...]
  },
  "confidence": 0.92
}

Chat with Documents

Ask questions about uploaded documents.

http
POST /v2/documents/chat

Request:

json
{
  "document_id": "doc_xyz789",
  "question": "What are the termination clauses?",
  "context_window": 5
}

Meeting Analysis

Transcribe Audio/Video

Convert meeting recordings to text with speaker diarization.

http
POST /v2/transcribe

Supported formats: MP3, WAV, M4A, MP4, WEBM Max file size: 2GB Languages: English, Spanish, French, German, Portuguese

Extract Action Items

Automatically identify tasks and commitments from transcripts.

http
POST /v2/meetings/action-items

Request:

json
{
  "transcript_id": "trans_abc123",
  "assign_to_speakers": true,
  "extract_deadlines": true
}

Response:

json
{
  "action_items": [
    {
      "description": "Send proposal to client",
      "assigned_to": "Speaker 1",
      "due_date": "2024-01-20",
      "confidence": 0.89
    }
  ]
}

Strategic Conversation Analysis

Identify key moments, decisions, and objections.

http
POST /v2/meetings/strategic-analysis

Content Generation

Generate Content

Create blog posts, emails, reports, and more.

http
POST /v2/generate/content

Request:

json
{
  "type": "blog_post",
  "topic": "AI in Healthcare",
  "tone": "professional",
  "length": "medium",
  "keywords": ["AI", "healthcare", "diagnostics"]
}

Brainstorming Sessions

Interactive AI brainstorming for ideas and problem-solving.

http
POST /v2/generate/brainstorm

Workflow Automation

Create Tasks

Programmatically create and manage tasks.

http
POST /v2/tasks

Sync with Project Tools

Push tasks to Jira, Asana, or other tools.

http
POST /v2/integrations/sync

Authentication

All API requests require authentication via Bearer token:

http
Authorization: Bearer YOUR_API_KEY

API Key Types

TypePrefixUse CaseRate Limit
Testsol_test_Development & testing100 requests/hour
Livesol_live_Production applicationsBased on plan
Restrictedsol_restricted_Specific scopes onlyCustom

Scopes

Control what your API key can access:

  • read:transcripts - Read transcription data
  • write:transcripts - Create transcriptions
  • read:documents - Read document analyses
  • write:documents - Upload and analyze documents
  • read:tasks - View tasks
  • write:tasks - Create and modify tasks
  • admin:all - Full account access

Rate Limiting

Rate limits vary by plan:

PlanRequests/MinuteRequests/DayConcurrent
Individual6010,0005
Team300100,00025
EnterpriseCustomCustomCustom

Rate Limit Headers

Every response includes rate limit information:

http
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1642348800

Handling Rate Limits

javascript
async function makeRequestWithRetry(url, options, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const resetTime = response.headers.get('X-RateLimit-Reset');
      const waitTime = (resetTime * 1000) - Date.now();
      await new Promise(resolve => setTimeout(resolve, waitTime));
      continue;
    }

    return response;
  }
  throw new Error('Max retries exceeded');
}

Webhooks

Set up webhooks to receive real-time notifications.

Configure Webhook Endpoints

bash
POST /v2/webhooks

Request:

json
{
  "url": "https://yourapp.com/webhook",
  "events": ["transcription.completed", "document.analyzed", "task.created"],
  "secret": "your_webhook_secret"
}

Verify Webhook Signatures

javascript
const crypto = require('crypto');

function verifyWebhookSignature(payload, signature, secret) {
  const hmac = crypto.createHmac('sha256', secret);
  const digest = hmac.update(payload).digest('hex');
  return signature === digest;
}

// Express middleware example
app.post('/webhook', (req, res) => {
  const signature = req.headers['x-solatis-signature'];
  const isValid = verifyWebhookSignature(
    JSON.stringify(req.body),
    signature,
    process.env.WEBHOOK_SECRET
  );

  if (!isValid) {
    return res.status(401).send('Invalid signature');
  }

  // Process webhook event
  res.status(200).send('OK');
});

Error Handling

HTTP Status Codes

CodeMeaningAction
200SuccessProcess response
201CreatedResource created successfully
400Bad RequestCheck request parameters
401UnauthorizedVerify API key
403ForbiddenCheck API key scopes
404Not FoundResource doesn't exist
429Rate LimitedWait and retry
500Server ErrorContact support

Error Response Format

json
{
  "error": {
    "code": "invalid_request",
    "message": "Missing required field: audio_url",
    "details": {
      "field": "audio_url",
      "type": "required"
    },
    "request_id": "req_abc123"
  }
}

Common Error Codes

CodeDescriptionSolution
invalid_api_keyAPI key is invalid or expiredCheck your API key
insufficient_quotaUsage quota exceededUpgrade plan or wait for reset
invalid_requestRequest parameters are invalidReview API documentation
resource_not_foundRequested resource doesn't existVerify resource ID
rate_limit_exceededToo many requestsImplement exponential backoff

SDKs & Libraries

Official SDKs

JavaScript/TypeScript

bash
npm install @solatis/sdk
typescript
import { Solatis } from '@solatis/sdk';

const client = new Solatis({
  apiKey: process.env.SOLATIS_API_KEY
});

// Transcribe audio
const transcript = await client.transcribe({
  audioUrl: 'https://example.com/meeting.mp3',
  language: 'en',
  speakerLabels: true
});

Python

bash
pip install solatis
python
from solatis import Solatis

client = Solatis(api_key='YOUR_API_KEY')

# Analyze document
analysis = client.documents.analyze(
    document_url='https://example.com/contract.pdf',
    analysis_type='contract_review'
)

Ruby

bash
gem install solatis

Go

bash
go get github.com/solatis/solatis-go

Community SDKs

Best Practices

Security

  1. Never expose API keys in client-side code
javascript
// ❌ Bad - exposed in frontend
const apiKey = 'sol_live_abc123';

// ✅ Good - use environment variables
const apiKey = process.env.SOLATIS_API_KEY;
  1. Use restricted keys for specific scopes
bash
# Create a key with limited permissions
POST /v2/api-keys
{
  "name": "Frontend Readonly",
  "scopes": ["read:transcripts", "read:documents"]
}
  1. Rotate keys regularly
bash
# Rotate every 90 days for production keys

Performance

  1. Use webhooks instead of polling
javascript
// ✅ Good - webhook receives notification
app.post('/webhook', handleTranscriptionComplete);

// ❌ Bad - polling wastes resources
setInterval(() => checkTranscriptionStatus(), 5000);
  1. Batch requests when possible
javascript
// ✅ Good - batch upload
await client.documents.analyzeBatch(documentUrls);

// ❌ Bad - individual requests
for (const url of documentUrls) {
  await client.documents.analyze(url);
}
  1. Implement caching
javascript
const cache = new Map();

async function getTranscript(id) {
  if (cache.has(id)) {
    return cache.get(id);
  }
  const transcript = await client.transcripts.get(id);
  cache.set(id, transcript);
  return transcript;
}

Error Handling

  1. Implement exponential backoff
javascript
async function retryWithBackoff(fn, maxRetries = 5) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (i === maxRetries - 1) throw error;
      const delay = Math.pow(2, i) * 1000;
      await new Promise(resolve => setTimeout(resolve, delay));
    }
  }
}
  1. Log errors with request IDs
javascript
try {
  await client.transcribe(audioUrl);
} catch (error) {
  console.error('Transcription failed', {
    requestId: error.requestId,
    message: error.message
  });
}

Support & Resources

Documentation

Developer Community

Support

  • Email: developers@solatis.team
  • Response Time:
    • Enterprise: 4 hours
    • Team: 24 hours
    • Individual: 48 hours

Status & Uptime

Released under the MIT License.