API Authentication
The Nimbus API uses API keys for authentication and license management. All requests to the API must include a valid API key.Getting Your API Key
Request API Access
Contact hello@nimbusbci.com to request your API key and discuss your BCI use case.
API keys are currently issued with a license tier based on your use case. Please include details about your intended application, expected volume, and timeline.
API Key Format
- Production keys:
nbci_live_+ 48 hexadecimal characters - Test keys:
nbci_test_+ 48 hexadecimal characters
nbci_live_a1b2c3d4e5f678901234567890abcdef12345678901234567890
License Tiers
| Tier | Monthly Quota | Features | Use Case |
|---|---|---|---|
| Free | 10,000 inferences | Basic models, batch inference | Personal projects, evaluation |
| Research | 50,000 inferences | All models, streaming, training | Academic research |
| Commercial | 500,000 inferences | Priority support, custom models | Production applications |
| Enterprise | Unlimited | Dedicated support, on-premise | Large-scale deployments |
Authentication in Julia SDK
The NimbusSDK.jl package uses a two-step approach:One-Time Setup
Install the proprietary core with your API key (one-time setup):What happens during install_core:
- Validates your API key with the Nimbus API
- Downloads the proprietary NimbusSDKCore package
- Caches your credentials locally for offline use
- You only need to do this once per machine
Environment Variables
For security, store your API key in an environment variable:After Installation
Once the core is installed, you can use the SDK in any project without re-authenticating:API Endpoints
POST /v1/auth/validate
Validate an API key and return user permissions, quota, and license information. Base URL:https://api.nimbusbci.com
Endpoint: /v1/auth/validate
Request:
POST /v1/auth/refresh
Refresh API key credentials and get updated quota information. Request:POST /v1/auth/revoke
Revoke an API key, making it permanently inactive.This action is irreversible. Once revoked, the API key cannot be reactivated. Contact support to generate a new key.
api_key(required): The API key to revokereason(optional): Reason for revocation (logged for audit purposes)
SDK Installation
GET /v1/installer/github-token
Get a GitHub access token for installing the proprietary NimbusSDKCore package. This endpoint is used by theinstall_core() function in NimbusSDK.jl.
Authentication: Required (API key)
Request Methods: GET or POST
Query Parameters (GET):
success(boolean): Whether the request was successfulgithub_token(string): Temporary GitHub Personal Access Token for package installationexpires_at(string|null): Token expiration time (null for non-expiring tokens)message(string): Success message
NimbusSDK.install_core():
Security: The GitHub token is temporary and scoped only to read access for the private NimbusSDKCore repository. It cannot be used to access other repositories or perform write operations.
Do not share or store the GitHub token. It is provided temporarily for installation purposes only. The token may be rotated or revoked at any time.
Error Codes
| Code | HTTP Status | Description |
|---|---|---|
MISSING_KEY | 400 | API key not provided |
INVALID_FORMAT | 400 | API key format is 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 for this endpoint |
QUOTA_EXCEEDED | 429 | Monthly usage quota exceeded |
RATE_LIMIT_EXCEEDED | 429 | Too many requests in short time |
SERVER_ERROR | 500 | Internal server error |
NOT_CONFIGURED | 503 | Server configuration issue |
Security Best Practices
Protect Your API Key
Never expose your API key in:
- Client-side code (browsers, mobile apps)
- Public repositories (GitHub, GitLab)
- Logs or error messages
- Shared environments
Best Practices
✅ Do:- Store API keys in environment variables
- Use separate keys for development/production
- Rotate keys regularly (every 90 days recommended)
- Monitor API usage for anomalies
- Use offline mode after initial validation for security
- Keep keys in
.gitignoreand.envfiles
- Hardcode keys in source code
- Share keys via email or messaging apps
- Use the same key across multiple projects
- Commit keys to version control
- Log API keys in application logs
AuthSession Structure
Theauthenticate() function returns an AuthSession object:
Julia Example with Environment Variables
.env file:Rate Limiting
The Nimbus API implements rate limiting to prevent abuse:- Validate endpoint: 100 requests per minute
- Refresh endpoint: 10 requests per minute
- Other endpoints: 1000 requests per minute
429 response with a Retry-After header.
Monitoring Usage
Track your API usage through the SDK:License Features
Different license tiers unlock different SDK features:| Feature | Free | Research | Commercial | Enterprise |
|---|---|---|---|---|
| Batch Inference | ✅ | ✅ | ✅ | ✅ |
| Streaming Inference | ❌ | ✅ | ✅ | ✅ |
| Model Training | ❌ | ✅ | ✅ | ✅ |
| Model Calibration | ❌ | ✅ | ✅ | ✅ |
| Pre-trained Models | Basic | All | All | All + Custom |
| Priority Support | ❌ | ❌ | ✅ | ✅ |
| On-premise Deployment | ❌ | ❌ | ❌ | ✅ |
| Custom Models | ❌ | ❌ | ✅ | ✅ |
Upgrading Your License
To upgrade your license tier, contact hello@nimbusbci.com with:- Current license tier
- Desired tier
- Use case details
- Expected monthly volume
Troubleshooting
”Invalid API key” Error
Causes:- API key is incorrectly formatted
- API key has been revoked
- API key has expired
”Quota exceeded” Error
Causes:- Monthly usage limit reached
- Burst usage exceeded threshold
”Rate limit exceeded” Error
Causes:- Too many requests in short time period
Next Steps
Julia SDK
Complete SDK reference
Quickstart
Get started with NimbusSDK
Model Registry
Browse available models
Examples
Working code examples
Support
For authentication issues or license inquiries:- Email: hello@nimbusbci.com
- Website: https://nimbusbci.com
- API Status: https://api.nimbusbci.com/api/health