Skip to content

API Reference

Complete API Documentation for Altus 4

Altus 4 provides a RESTful API for managing database connections, executing searches, and accessing analytics. All endpoints follow REST conventions and return JSON responses.

Authentication

All API endpoints require API key authentication for B2B service integration.

Authentication Flow

  1. Register a new user account
  2. Create your first API key using the management endpoint
  3. Include API key in Authorization header for all subsequent requests
bash
# Include API key in all requests
Authorization: Bearer <your-api-key>

API Key Format: altus4_sk_live_abc123def456... (live) or altus4_sk_test_xyz789abc123... (test)

Authentication Endpoints

MethodEndpointDescriptionAuth Required
POST/api/v1/auth/registerRegister new userNo
POST/api/v1/auth/loginUser loginNo
POST/api/v1/management/setupCreate first API keyJWT Token
POST/api/v1/keysCreate new API keyAPI Key
GET/api/v1/keysList API keysAPI Key
PUT/api/v1/keys/:idUpdate API keyAPI Key
DELETE/api/v1/keys/:idRevoke API keyAPI Key
GET/api/v1/keys/:id/usageGet API key usage statsAPI Key
POST/api/v1/keys/:id/regenerateRegenerate API keyAPI Key

→ Complete API Key Authentication Guide

Database Management

Manage MySQL database connections for searching.

Database Endpoints

MethodEndpointDescriptionAuth Required
GET/api/v1/databasesList user databasesAPI Key
POST/api/v1/databasesAdd database connectionAPI Key
GET/api/v1/databases/:idGet database detailsAPI Key
PUT/api/v1/databases/:idUpdate database connectionAPI Key
DELETE/api/v1/databases/:idRemove database connectionAPI Key
POST/api/v1/databases/:id/testTest database connectionAPI Key
GET/api/v1/databases/:id/schemaGet database schemaAPI Key
GET/api/v1/databases/:id/statusGet connection statusAPI Key

Complete Database Documentation

Search Operations

Execute searches across connected databases with AI enhancements.

Search Endpoints

MethodEndpointDescriptionAuth Required
POST/api/v1/searchExecute searchAPI Key
GET/api/v1/search/suggestionsGet search suggestionsAPI Key
POST/api/v1/search/analyzeAnalyze query performanceAPI Key
GET/api/v1/search/historyGet search historyAPI Key
GET/api/v1/search/trendsGet user search trendsAPI Key

Complete Search Documentation

Analytics & Insights

Access search analytics, performance metrics, and trend data.

Analytics Endpoints

MethodEndpointDescriptionAuth Required
GET/api/v1/analytics/dashboardGet dashboard dataAPI Key
GET/api/v1/analytics/trendsGet search trendsAPI Key
GET/api/v1/analytics/performanceGet performance metricsAPI Key
GET/api/v1/analytics/popular-queriesGet popular queriesAPI Key
GET/api/v1/analytics/insightsGet AI-generated insightsAPI Key
GET/api/v1/analytics/overviewGet system overviewAPI Key
GET/api/v1/analytics/user-activityGet user activity metricsAPI Key

Complete Analytics Documentation

System Endpoints

Health checks and system information.

MethodEndpointDescriptionAuth Required
GET/healthSystem health checkNo
GET/health/dbDatabase health checkNo
GET/health/redisRedis health checkNo
GET/versionAPI version infoNo

Request/Response Format

Standard Response Format

All API responses follow this structure:

typescript
interface ApiResponse<T> {
  success: boolean;
  data?: T;
  error?: {
    code: string;
    message: string;
    details?: any;
  };
  meta?: {
    timestamp: Date;
    requestId: string;
    version: string;
    executionTime?: number;
  };
}

Success Response Example

json
{
  "success": true,
  "data": {
    "results": [...],
    "totalCount": 42,
    "executionTime": 123
  },
  "meta": {
    "timestamp": "2024-01-15T10:30:00.000Z",
    "requestId": "req_abc123",
    "version": "0.1.0",
    "executionTime": 123
  }
}

Error Response Example

json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request parameters",
    "details": {
      "field": "query",
      "reason": "Query cannot be empty"
    }
  },
  "meta": {
    "timestamp": "2024-01-15T10:30:00.000Z",
    "requestId": "req_abc123",
    "version": "0.1.0"
  }
}

Error Handling

HTTP Status Codes

StatusCodeDescriptionCommon Causes
200OKRequest successful-
201CreatedResource createdRegistration, database connection
400Bad RequestInvalid requestMissing/invalid parameters
401UnauthorizedAuthentication requiredMissing/invalid API key
403ForbiddenInsufficient permissionsAPI key lacks required permissions
404Not FoundResource not foundInvalid database/search ID
429Too Many RequestsRate limit exceededToo many API calls
500Internal Server ErrorServer errorDatabase/Redis connectivity issues

Error Codes

Error CodeHTTP StatusDescription
INVALID_API_KEY401Missing or invalid API key
INSUFFICIENT_PERMISSIONS403API key lacks required permissions
NOT_FOUND404Resource not found
VALIDATION_ERROR400Invalid request data
RATE_LIMIT_EXCEEDED429Too many requests (tiered by API key)
DATABASE_ERROR500Database connectivity/query error
CACHE_ERROR500Redis connectivity error
AI_SERVICE_ERROR500OpenAI API error
INTERNAL_ERROR500Unexpected server error

Complete Error Documentation

Rate Limiting

API requests are rate-limited based on your API key tier for fair usage and system stability.

Rate Limit Tiers

TierRequests/HourUse CaseBlock Duration
Free1,000Development, testing5 minutes
Pro10,000Small-medium prod5 minutes
Enterprise100,000Large scale prod1 minute

Rate Limiting for Authentication

  • Registration/Login: 10 requests per minute (IP-based)
  • API key management: Based on your API key tier

Rate Limit Headers

http
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 2024-01-15T12:00:00Z
X-RateLimit-Tier: Free

Rate Limit Exceeded Response

json
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Try again in 45 seconds.",
    "details": {
      "limit": 1000,
      "remaining": 0,
      "resetTime": "2024-01-15T10:31:00.000Z",
      "tier": "Free",
      "upgradeMessage": "Upgrade to Pro or Enterprise for higher rate limits"
    }
  }
}

Request Examples

cURL Examples

bash
# Register new user
curl -X POST http://localhost:3000/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "email": "user@example.com",
    "password": "secure_password",
    "name": "Test User"
  }'

# Login and get JWT token (for initial setup only)
curl -X POST http://localhost:3000/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "user@example.com",
    "password": "secure_password"
  }'

# Create your first API key
curl -X POST http://localhost:3000/api/v1/management/setup \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

# Execute search with API key (use for all subsequent requests)
curl -X POST http://localhost:3000/api/v1/search \
  -H "Authorization: Bearer altus4_sk_test_abc123def456..." \
  -H "Content-Type: application/json" \
  -d '{
    "query": "mysql performance optimization",
    "databases": ["db-uuid-1", "db-uuid-2"],
    "searchMode": "semantic",
    "limit": 20
  }'

JavaScript/Node.js Examples

javascript
// Using fetch API
const response = await fetch('http://localhost:3000/api/v1/search', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`, // altus4_sk_live_abc123...
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    query: 'database optimization',
    databases: ['db-uuid-1'],
    searchMode: 'natural',
    limit: 10,
  }),
});

const result = await response.json();
console.log(result.data.results);

Python Examples

python
import requests

# Search request
response = requests.post(
    'http://localhost:3000/api/v1/search',
    headers={
        'Authorization': f'Bearer {api_key}',  # altus4_sk_live_abc123...
        'Content-Type': 'application/json'
    },
    json={
        'query': 'performance tuning',
        'databases': ['db-uuid-1'],
        'searchMode': 'boolean',
        'limit': 15
    }
)

data = response.json()
print(data['data']['results'])

API Testing

Testing Tools

Testing Checklist

  • [ ] Authentication flow (register, login, API key creation)
  • [ ] API key management (create, list, update, revoke keys)
  • [ ] Database management (add, test, remove connections)
  • [ ] Search operations (natural, boolean, semantic modes)
  • [ ] Error handling (invalid requests, authentication failures)
  • [ ] Rate limiting (exceeding request limits by tier)
  • [ ] Analytics access (trends, performance metrics)

Need help? Check out the examples section for practical implementations or report issues if you find any problems.