Skip to main content

API Authentication

The Nimbus API uses API keys for authentication and license management. All requests to the API must include a valid API key.
Python SDK Users: The Python SDK (nimbus-bci) does not require authentication or API keys. It runs entirely locally on your machine. This authentication guide is for Julia SDK users only.For Python SDK installation, see Python SDK Installation.

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
Example: nbci_live_a1b2c3d4e5f678901234567890abcdef12345678901234567890

License Tiers

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:
  1. Validates your API key with the Nimbus API
  2. Downloads the proprietary NimbusSDKCore package
  3. Caches your credentials locally for offline use
  4. 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:
Response (Success):
Response (Invalid Key):
Response (Quota Exceeded):
cURL Example:

POST /v1/auth/refresh

Refresh API key credentials and get updated quota information. Request:
Response:

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.
Request:
Request Fields:
  • api_key (required): The API key to revoke
  • reason (optional): Reason for revocation (logged for audit purposes)
Response:
Error Response:

SDK Installation

GET /v1/installer/github-token

Get a GitHub access token for installing the proprietary NimbusSDKCore package. This endpoint is used by the install_core() function in NimbusSDK.jl. Authentication: Required (API key) Request Methods: GET or POST Recommended Authentication (GET):
Request Body (POST):
Compatibility Option (GET query parameter):
Avoid query-string keys in production when possible because URLs are often captured in logs, browser history, proxies, and referrer headers. Response (Success):
Response Fields:
  • success (boolean): Whether the request was successful
  • github_token (string): Temporary GitHub Personal Access Token for package installation
  • expires_at (string|null): Token expiration time (null for non-expiring tokens)
  • message (string): Success message
Error Responses:
Usage in Julia SDK: This endpoint is called automatically by 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

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
API keys should only be used in secure server environments or local development machines.

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 .gitignore and .env files
❌ Don’t:
  • 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

The authenticate() function returns an AuthSession object:

Julia Example with Environment Variables

.env file:
Julia code:

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
If you exceed the rate limit, you’ll receive a 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:

Upgrading Your License

To upgrade your license tier, contact hello@nimbusbci.com with:
  • Current license tier
  • Desired tier
  • Use case details
  • Expected monthly volume

Authentication FAQ

No. The Python SDK runs locally and does not require API authentication. Cloud API authentication is primarily for Julia SDK installation, licensing, and model registry workflows.
NimbusSDK.install_core() is typically a one-time setup per machine. After the core is installed and credentials are cached, normal SDK usage does not require repeated setup.
Common causes are invalid key format, expired or revoked keys, quota/rate limits, and missing environment-variable configuration in deployment environments.

Cloud API Reference

Endpoint overview, base URL, and service scope.

Cloud API Endpoints

Model registry and analytics endpoint details.

Julia SDK Quickstart

End-to-end install and first-inference setup path.

Python SDK Quickstart

Local-only Python workflow without API authentication.

Troubleshooting

”Invalid API key” Error

Causes:
  • API key is incorrectly formatted
  • API key has been revoked
  • API key has expired
Solution: Verify the API key is correct and contact support if needed.

”Quota exceeded” Error

Causes:
  • Monthly usage limit reached
  • Burst usage exceeded threshold
Solution: Wait for quota reset or contact support to upgrade your tier.

”Rate limit exceeded” Error

Causes:
  • Too many requests in short time period
Solution: Implement exponential backoff and retry logic.

Next Read

Julia SDK

Complete SDK reference

Quickstart

Get started with NimbusSDK (Julia)

Model Registry

Browse available models

Examples

Working code examples

Support

For authentication issues or license inquiries: