API Endpoints
The Nimbus API provides backend services for model management and analytics. Note: Inference is performed locally by NimbusSDK.jl, not via API calls.Base URL
Model Registry
GET /v1/models/list
List available pre-trained models based on your license tier. Authentication: Required (API key) Query Parameters:| Parameter | Type | Description |
|---|---|---|
api_key | string | Your Nimbus API key (required) |
paradigm | string | Filter by BCI paradigm: motor_imagery, p300, ssvep (optional) |
type | string | Filter by model type: RxLDA, RxGMM, RxPolya (optional) |
name(string): Unique model identifierversion(string): Model versiontype(string): Model type (RxLDAorRxGMM)paradigm(string): BCI paradigm (motor_imagery,p300,ssvep, etc.)n_features(number): Expected number of input featuresn_classes(number): Number of output classessize_mb(number): Model file size in megabytesdownload_url(string): Direct download URL for model filechecksum(string): SHA-256 checksum for verificationrequires_license(string): Minimum license tier requiredmetadata(object): Additional model information
Using in Julia SDK
The SDK automatically uses this endpoint when loading pre-trained models:Analytics & Logging
POST /v1/analytics/log
Log inference events and usage metrics (optional, for analytics tracking). Authentication: Required (API key) Request:| Field | Type | Required | Description |
|---|---|---|---|
api_key | string | Yes | Your API key |
event_type | string | Yes | Event type: inference, model_load, error |
model_name | string | No | Model identifier |
inference_type | string | No | batch or streaming |
duration_ms | number | No | Duration in milliseconds |
success | boolean | No | Whether operation succeeded |
error_message | string | No | Error description if failed |
metadata | object | No | Additional event data |
Analytics logging is optional. The SDK works without sending analytics data. Use this endpoint if you want to track usage patterns and performance metrics.
Health Check
GET /api/health
Check API status and availability. Authentication: Not required Request:status(string): API status -"healthy"or"unhealthy"timestamp(string): Current server timestamp (ISO 8601)version(string): API versiondatabase(string): Database connection status -"connected"or"disconnected"
Error Responses
All endpoints return consistent error responses:| Code | HTTP Status | Description |
|---|---|---|
MISSING_KEY | 400 | API key not provided |
INVALID_FORMAT | 400 | API key format invalid |
MISSING_EVENT_TYPE | 400 | Event type not provided (analytics endpoint) |
INVALID_KEY | 401 | API key is invalid or inactive |
KEY_EXPIRED | 401 | API key has expired |
KEY_NOT_FOUND | 404 | API key not found (revoke endpoint) |
METHOD_NOT_ALLOWED | 405 | HTTP method not allowed |
QUOTA_EXCEEDED | 429 | Monthly quota limit reached |
RATE_LIMIT_EXCEEDED | 429 | Too many requests |
SERVER_ERROR | 500 | Internal server error |
NOT_CONFIGURED | 503 | Server configuration issue |
Rate Limits
All API endpoints implement rate limiting to ensure fair usage and system stability.| Endpoint | Requests per Minute |
|---|---|
/v1/auth/validate | 100 |
/v1/auth/refresh | 10 |
/v1/auth/revoke | 10 |
/v1/installer/github-token | 20 |
/v1/models/list | 60 |
/v1/analytics/log | 1000 |
/api/health | Unlimited |
X-RateLimit-Limit: Maximum requests allowed per minuteX-RateLimit-Remaining: Requests remaining in current windowX-RateLimit-Reset: Unix timestamp when the limit resets
429 Too Many Requests response with a Retry-After header indicating when you can retry.
Usage Examples
Complete Workflow in Julia
List All Available Models
Check Model Availability
License Requirements
Different models require different license tiers:| Model | License Required | Description |
|---|---|---|
motor_imagery_4class_v1 | Free | Basic 4-class motor imagery |
motor_imagery_2class_v1 | Free | Binary motor imagery |
p300_binary_v1 | Research | P300 target detection |
ssvep_multiclass_v1 | Research | SSVEP multi-frequency |
| Custom models | Commercial+ | Customer-specific trained models |
Your API key’s license tier determines which models you can access. Attempting to load a model above your tier will return a
403 Forbidden error.Important Notes
Inference is Local
The Nimbus API does NOT perform inference. Inference happens locally via NimbusSDK.jl using RxInfer.jl. This approach provides: ✅ Privacy: Your EEG data never leaves your machine✅ Speed: No network latency
✅ Reliability: Works offline after initial setup
✅ Scalability: No API server bottlenecks The API only provides:
- Authentication and licensing
- Pre-trained model distribution
- Optional analytics collection
Model Caching
Models are downloaded once and cached locally:~/.nimbus/models/
Next Steps
Authentication
API key setup and management
Julia SDK
Complete SDK reference
Training Models
Train custom models
Code Examples
Working examples
Support
For API questions or model requests:- Email: [email protected]
- API Status: https://api.nimbusbci.com/api/health
- Documentation: https://docs.nimbusbci.com