Skip to content

API Reference

The Nexus Suite API is a RESTful HTTP service hosted at api.nexus-suite.dev. It handles authentication, billing, entitlements, encrypted sync, the Skills Hub, and MCP hosting.

Base URL

https://api.nexus-suite.dev/v1

All endpoints are versioned under /v1.

Authentication

Most endpoints require a JWT bearer token in the Authorization header:

http
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...

JWTs are issued by the Authentication API and signed with RS256. Clients validate tokens using the public key from the JWKS endpoint.

See Authentication for details on obtaining tokens.

Sections

SectionDescription
AuthenticationRegistration, login, OAuth, device code flow, sessions, SSO
EntitlementsFeature gating, tier management, trial management
BillingSubscription management, Stripe checkout, webhooks
SyncEncrypted settings and data sync (Pro+)
Skills HubSkill publishing, search, and installation (Pro+)
MCP HostingPrivate MCP server provisioning (Studio)

Common Response Format

Success

json
{
  "data": {
    "id": "usr_abc123",
    "email": "user@example.com"
  }
}

Error

json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Password must be at least 12 characters",
    "details": {
      "field": "password",
      "min_length": 12
    }
  }
}

Error Codes

CodeHTTP StatusDescription
VALIDATION_ERROR400Invalid input data
UNAUTHORIZED401Missing or invalid authentication
FORBIDDEN403Insufficient permissions or tier
EMAIL_UNVERIFIED403Account requires email verification
TIER_REQUIRED403Feature requires a higher subscription tier
NOT_FOUND404Resource not found
CONFLICT409Duplicate resource (e.g., email already registered)
ACCOUNT_LOCKED423Account temporarily locked due to failed login attempts
QUOTA_EXCEEDED413Storage or publishing quota exceeded
RATE_LIMITED429Rate limit exceeded
WEBHOOK_INVALID400Invalid Stripe webhook signature
INTERNAL_ERROR500Unexpected server error

Rate Limiting

API requests are rate-limited per authenticated user based on subscription tier:

TierLimit
Core60 requests/minute
Pro300 requests/minute
Studio1,000 requests/minute

Unauthenticated endpoints (registration, login) are limited to 20 requests/minute per IP.

When the limit is exceeded, the API returns 429 Too Many Requests with a Retry-After header indicating when you can retry.

Stripe webhook endpoints are exempt from per-user rate limits but require signature verification.

System Endpoints

These endpoints do not require authentication:

MethodPathDescription
GET/healthLiveness check
GET/readyReadiness check (verifies DB + Redis connectivity)
GET/statusModule status for the public status page
GET/metricsPrometheus-compatible metrics (internal)

Retry Strategy

For client implementations:

  • 5xx errors: Retry with exponential backoff and jitter. Maximum 3 retries.
  • 401 errors: Attempt a token refresh. If refresh fails, prompt re-authentication.
  • 429 errors: Wait for the duration specified in the Retry-After header.

Released under the MIT License.