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.Start Here
Cloud API Authentication
Set up API keys, license checks, and secure access patterns.
Cloud API Reference
Review API scope, base URL, and service architecture.
Julia SDK Quickstart
Run authenticated setup and load your first pre-trained model.
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: NimbusLDA, NimbusQDA, NimbusProbit (optional) |
The model registry is used by the Julia SDK and currently includes
NimbusLDA, NimbusQDA, and NimbusProbit.NimbusSTS / Bayesian STS is Python SDK only and does not appear in the model registry.name(string): Unique model identifierversion(string): Model versiontype(string): Model type (NimbusLDA,NimbusQDA, orNimbusProbit)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/
Endpoints FAQ
Does this API run BCI inference directly?
Does this API run BCI inference directly?
No. Inference runs locally in NimbusSDK.jl. The API is used for authentication, model registry access, installation flows, and optional analytics logging.
Which endpoint is required first?
Which endpoint is required first?
Start with authentication (
/v1/auth/validate via SDK setup), then use /v1/models/list to discover available models for your license tier.Why can model loading be fast after first use?
Why can model loading be fast after first use?
Models are cached locally after the first download, so subsequent
load_model(...) calls typically avoid network fetches and complete much faster.Next Read
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: hello@nimbusbci.com
- API Status: https://api.nimbusbci.com/api/health
- Documentation: https://docs.nimbusbci.com