Basic Usage Examples¶
Common patterns for using OpenComplai in Python and JavaScript.
Python: Create, Read, Update, Delete (CRUD)¶
Installation¶
Complete Example¶
"""Basic CRUD operations with OpenComplai."""
import os
from dotenv import load_dotenv
from opencomplai import Client
# Load environment variables
load_dotenv()
def main():
"""Run basic CRUD example."""
# Initialize client
api_key = os.getenv("OPENCOMPLAI_API_KEY")
client = Client(api_key=api_key)
# CREATE - Add a new document
print("š Creating document...")
doc = client.documents.create(
title="Project Report Q2 2026",
content="""
# Q2 2026 Report
## Executive Summary
Strong quarter with 35% growth.
## Key Metrics
- Revenue: $2.5M
- Customers: 500+
- Employees: 25
"""
)
print(f"ā
Created: {doc.id}")
print(f" Title: {doc.title}")
print(f" Status: {doc.processing_status}")
# READ - Retrieve document
print("\nš Reading document...")
retrieved = client.documents.get(doc.id)
print(f"ā
Retrieved: {retrieved.title}")
print(f" Content: {retrieved.content[:100]}...")
# UPDATE - Modify document
print("\nāļø Updating document...")
retrieved.update(
title="Q2 2026 Final Report",
description="Final version with all metrics"
)
print(f"ā
Updated: {retrieved.title}")
# LIST - Browse documents
print("\nš Listing documents...")
docs = client.documents.list(limit=5, offset=0)
print(f"ā
Found {len(docs)} documents (limited to 5)")
for i, d in enumerate(docs, 1):
print(f" {i}. {d.title}")
# DELETE - Remove document
print("\nšļø Deleting document...")
retrieved.delete()
print(f"ā
Deleted: {doc.id}")
print("\nš CRUD operations complete!")
if __name__ == "__main__":
main()
Output¶
š Creating document...
ā
Created: doc_abc123
Title: Project Report Q2 2026
Status: pending
š Reading document...
ā
Retrieved: Project Report Q2 2026
Content: # Q2 2026 Report...
āļø Updating document...
ā
Updated: Q2 2026 Final Report
š Listing documents...
ā
Found 5 documents (limited to 5)
1. Q2 2026 Final Report
2. Meeting Notes
3. Budget Plan
4. Team Updates
5. Client Proposal
šļø Deleting document...
ā
Deleted: doc_abc123
š CRUD operations complete!
JavaScript: Async/Await Pattern¶
Installation¶
Complete Example¶
import { OpenComplai } from '@opencomplai/sdk';
async function main() {
const client = new OpenComplai({
apiKey: process.env.OPENCOMPLAI_API_KEY
});
// CREATE - Add document
console.log("š Creating document...");
const doc = await client.documents.create({
title: "Marketing Strategy 2026",
content: `
# Marketing Strategy
## Q1-Q2 Focus
- Expand social media reach
- Launch podcast series
- Partner with 5 influencers
## Budget: $50,000
`
});
console.log(`ā
Created: ${doc.id}`);
console.log(` Title: ${doc.title}`);
// READ - Get document
console.log("\nš Reading document...");
const retrieved = await client.documents.get(doc.id);
console.log(`ā
Title: ${retrieved.title}`);
// UPDATE - Modify document
console.log("\nāļø Updating document...");
await retrieved.update({
title: "Marketing Strategy 2026 - Final"
});
console.log(`ā
Updated: ${retrieved.title}`);
// LIST - Browse documents
console.log("\nš Listing documents...");
const docs = await client.documents.list({ limit: 5 });
console.log(`ā
Found ${docs.length} documents`);
docs.forEach((d, i) => {
console.log(` ${i + 1}. ${d.title}`);
});
// DELETE - Remove document
console.log("\nšļø Deleting document...");
await doc.delete();
console.log(`ā
Deleted: ${doc.id}`);
console.log("\nš CRUD operations complete!");
}
main().catch(console.error);
Python: Error Handling¶
Handling Common Errors¶
from opencomplai import Client
from opencomplai.errors import (
APIError,
ValidationError,
RateLimitError,
AuthenticationError
)
client = Client(api_key="sk_test_xyz...")
try:
# Create document with validation
doc = client.documents.create(
title="My Document",
content="Document content here"
)
print(f"ā
Created: {doc.id}")
except ValidationError as e:
# Invalid input data
print(f"ā Validation error: {e.message}")
print(f" Details: {e.details}")
except AuthenticationError as e:
# Invalid API key
print(f"ā Auth failed: Check your API key")
except RateLimitError as e:
# Too many requests
print(f"ā Rate limited. Retry after {e.retry_after}s")
import time
time.sleep(e.retry_after)
doc = client.documents.create(...) # Retry
except APIError as e:
# Server error
print(f"ā API error: {e.status_code} - {e.message}")
JavaScript: File Upload¶
Upload from File¶
import { OpenComplai } from '@opencomplai/sdk';
import fs from 'fs';
async function uploadDocument(filePath) {
const client = new OpenComplai({
apiKey: process.env.OPENCOMPLAI_API_KEY
});
// Read file
const fileContent = fs.readFileSync(filePath, 'utf-8');
const fileName = filePath.split('/').pop();
// Create document from file
const doc = await client.documents.create({
title: fileName,
content: fileContent,
metadata: {
source: 'file',
originalPath: filePath
}
});
console.log(`ā
Uploaded: ${doc.title}`);
console.log(` Status: ${doc.processing_status}`);
return doc;
}
// Usage
uploadDocument('./reports/q2-summary.txt');
Python: Polling for Results¶
Wait for Processing to Complete¶
import time
from opencomplai import Client
client = Client(api_key="sk_test_xyz...")
# Create document
doc = client.documents.create(
title="Analysis Document",
content="# Data to analyze\n\n..."
)
print(f"Created: {doc.id}")
print(f"Status: {doc.processing_status}")
# Poll until processing completes
max_wait = 300 # 5 minutes
poll_interval = 2 # 2 seconds
elapsed = 0
while elapsed < max_wait:
# Refresh document status
doc = client.documents.get(doc.id)
if doc.processing_status == 'completed':
print(f"ā
Processing complete!")
break
elif doc.processing_status == 'failed':
print(f"ā Processing failed: {doc.processing_error}")
break
else:
print(f"ā³ Still processing... ({elapsed}s)")
time.sleep(poll_interval)
elapsed += poll_interval
else:
print(f"ā Timeout waiting for processing")
Batch Operations¶
Process Multiple Documents (Python)¶
from opencomplai import Client
client = Client(api_key="sk_test_xyz...")
# Documents to process
documents = [
{"title": "Doc 1", "content": "Content 1"},
{"title": "Doc 2", "content": "Content 2"},
{"title": "Doc 3", "content": "Content 3"},
]
print(f"Creating {len(documents)} documents...")
created_docs = []
for doc_data in documents:
doc = client.documents.create(**doc_data)
created_docs.append(doc)
print(f" ā
Created: {doc.id}")
print(f"\nā
Created {len(created_docs)} documents")
# List all created documents
all_docs = client.documents.list(limit=100)
print(f"Total documents in account: {len(all_docs)}")
Related Documentation¶
- Installation - Setup guide
- First Project - Step-by-step tutorial
- API Reference - Complete API docs
- Error Handling Guide - Error codes and recovery