APIs Overview¶
Comprehensive API documentation for integrating with Nova Suite services.
Introduction¶
Nova Suite provides a rich set of APIs that enable developers to integrate our privacy-focused productivity tools into their applications. All APIs are built on modern REST principles with JSON responses, comprehensive error handling, and extensive documentation.
Available APIs¶
Nova AI API¶
Our flagship AI platform, providing access to ModelA 9-Series language models.
Base URL: https://aiservices.novasuite.one/api/v1/
Key Features: - Chat completions with streaming support - Text embeddings for semantic search - Function calling for tool integration - Content moderation and safety
Nova ID API¶
Authentication and identity management for Nova Suite accounts.
Base URL: https://id.novasuite.one/v1
Key Features: - OAuth 2.0 and OpenID Connect support - Multi-factor authentication (MFA) - NUVE (Nova Unified Verification Engine) integration - Session management
Getting Started¶
1. Create an Account¶
Sign up for a Nova Suite developer account:
curl -X POST https://api.novasuite.one/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "developer@example.com",
"password": "SecureP@ssw0rd",
"plan": "developer"
}'
2. Generate API Keys¶
Access your dashboard to create API keys:
- Visit dashboard.novasuite.one
- Navigate to API Keys section
- Click Generate New Key
- Select appropriate scopes and permissions
- Save your key securely (it will only be shown once)
3. Make Your First Request¶
import requests
response = requests.get(
"https://api.novasuite.one/v1/user/profile",
headers={
"Authorization": "Bearer nvai_sk_YOUR_API_KEY",
"Content-Type": "application/json"
}
)
print(response.json())
Authentication¶
All API requests require authentication using API keys passed in the Authorization header:
API Key Formats¶
| Service | Prefix | Example |
|---|---|---|
| Nova AI | nvai_sk_ | nvai_sk_1a2b3c4d5e6f... |
| Nova ID | nvid_sk_ | nvid_sk_7g8h9i0j1k2l... |
| Search | nvsr_sk_ | nvsr_sk_3m4n5o6p7q8r... |
Security Best Practices
- Never commit API keys to version control
- Rotate keys regularly (every 90 days minimum)
- Use environment variables to store keys
- Implement proper key management in production
Rate Limiting¶
All APIs implement rate limiting to ensure fair usage and system stability.
Default Limits¶
| Tier | Requests/minute | Requests/hour | Requests/day |
|---|---|---|---|
| Free | 60 | 1,000 | 10,000 |
| Pro | 600 | 10,000 | 100,000 |
| Enterprise | Custom | Custom | Custom |
Rate Limit Headers¶
Every API response includes rate limit information:
Handling Rate Limits¶
When you exceed rate limits, you'll receive a 429 Too Many Requests response:
{
"error": {
"message": "Rate limit exceeded",
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"retry_after": 42
}
}
Recommended retry logic:
async function apiRequestWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After') || 60;
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
continue;
}
return response;
}
throw new Error('Max retries exceeded');
}
Response Format¶
All APIs follow a consistent response format:
Success Response¶
{
"data": {
"id": "usr_abc123",
"name": "Jane Doe",
"email": "jane@example.com"
},
"meta": {
"request_id": "req_xyz789",
"timestamp": "2025-11-18T12:00:00Z"
}
}
Error Response¶
{
"error": {
"message": "Resource not found",
"type": "not_found_error",
"code": "resource_not_found",
"param": "user_id",
"request_id": "req_xyz789"
}
}
Common HTTP Status Codes¶
| Code | Meaning | Description |
|---|---|---|
200 | OK | Request succeeded |
201 | Created | Resource created successfully |
400 | Bad Request | Invalid request parameters |
401 | Unauthorized | Invalid or missing API key |
403 | Forbidden | Insufficient permissions |
404 | Not Found | Resource doesn't exist |
429 | Too Many Requests | Rate limit exceeded |
500 | Internal Server Error | Server-side error |
503 | Service Unavailable | Temporary service outage |
Pagination¶
List endpoints support pagination using cursor-based navigation:
Request Parameters¶
| Parameter | Type | Description |
|---|---|---|
limit | integer | Number of results (1-100, default: 20) |
after | string | Cursor for next page |
before | string | Cursor for previous page |
Response Format¶
{
"data": [
{"id": "usr_001", "name": "Alice"},
{"id": "usr_002", "name": "Bob"}
],
"has_more": true,
"next_cursor": "usr_002"
}
Example: Fetching All Pages¶
def fetch_all_users(api_key):
users = []
cursor = None
while True:
url = f"https://api.novasuite.one/v1/users?limit=100"
if cursor:
url += f"&after={cursor}"
response = requests.get(url, headers={
"Authorization": f"Bearer {api_key}"
})
data = response.json()
users.extend(data['data'])
if not data.get('has_more'):
break
cursor = data['next_cursor']
return users
Webhooks¶
Subscribe to real-time events using webhooks:
Available Events¶
user.created- New user registeredai.completion.completed- AI task finishedsearch.query.executed- Search performedauth.login.succeeded- User logged inauth.login.failed- Failed login attempt
Setting Up Webhooks¶
curl -X POST https://api.novasuite.one/v1/webhooks \
-H "Authorization: Bearer nvai_sk_YOUR_KEY" \
-d '{
"url": "https://your-app.com/webhooks/nova",
"events": ["ai.completion.completed"],
"secret": "whsec_your_webhook_secret"
}'
Verifying Webhook Signatures¶
const crypto = require('crypto');
function verifyWebhook(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret);
const digest = hmac.update(payload).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(digest)
);
}
SDKs & Client Libraries¶
Official SDKs for popular languages:
JavaScript/TypeScript¶
import { NovaClient } from '@novasuite/sdk';
const client = new NovaClient({
apiKey: process.env.NOVA_API_KEY
});
const user = await client.users.get('usr_123');
Python¶
from novasuite import NovaClient
client = NovaClient(api_key=os.getenv('NOVA_API_KEY'))
user = client.users.get('usr_123')
Go¶
import "github.com/novasuite/novasuite-go"
client := novasuite.NewClient(os.Getenv("NOVA_API_KEY"))
user, err := client.Users.Get("usr_123")
Ruby¶
require 'novasuite'
client = NovaSuite::Client.new(api_key: ENV['NOVA_API_KEY'])
user = client.users.get('usr_123')
API Versioning¶
Nova Suite APIs use URL-based versioning:
Version Support Policy¶
- Each API version is supported for minimum 18 months after release
- Deprecation notices are sent 12 months before version retirement
- Security updates are backported to all supported versions
Current Versions¶
| API | Current Version | Status | Support Until |
|---|---|---|---|
| Nova AI | v1 | Stable | Ongoing |
| Nova ID | v1 | Stable | Ongoing |
| Search | v1 | Stable | Ongoing |
OpenAPI Specification¶
Download OpenAPI (Swagger) specifications for all APIs:
- Nova AI: openapi-ai.json
- Nova ID: openapi-id.json
- Search: openapi-search.json
Use with tools like Postman, Insomnia, or code generators.
Testing & Development¶
Sandbox Environment¶
Use our sandbox environment for development and testing:
Sandbox features: - Isolated from production data - No rate limits - Test API keys with test_ prefix - Simulated responses for testing edge cases
Example Test API Key¶
API Status & Support¶
- Status Page: status.novasuite.one
- API Changelog: changelog.novasuite.one
- Community Forum: community.novasuite.one
- Email Support: api-support@novasuite.one
- Discord: Join our developer community
Next Steps¶
-
Nova AI API
Build AI-powered features with ModelA
-
Nova ID
Implement authentication and SSO
-
Search API
Add powerful search to your app
-
Code Examples
Browse example implementations
Build amazing things with Nova Suite APIs.