Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.lumina-org.com/llms.txt

Use this file to discover all available pages before exploring further.

Construction

import { LuminaClient } from '@lumina-org/sdk'

const lumina = new LuminaClient({
  apiKey: process.env.LUMINA_API_KEY!,
  baseUrl: 'https://lumina-api-production-ac85.up.railway.app',
})
Construction is synchronous and never makes a network call. Call .health() to verify the API is reachable.

Sub-resources

PropertyClassEndpoints
lumina.productsProductsAPIGET /products, GET /products/:id, GET /products/:id/quote
lumina.policiesPoliciesAPIGET/POST /api/v1/policies, GET /policies/:prod/:id
lumina.bondsBondsAPIGET /api/v1/bonds
lumina.marketplaceMarketplaceAPIGET /api/v1/marketplace/listings
lumina.agentAgentAPIPOST /api/v1/agent/onboard, GET/DELETE /api/v1/agent/keys
lumina.webhooksWebhooksAPIPOST/GET/DELETE /api/v1/webhooks
lumina.sandboxSandboxAPIGET /sandbox/info, POST /sandbox/try

Errors

Every non-2xx response throws LuminaError:
import { LuminaError } from '@lumina-org/sdk'

try {
  await lumina.policies.purchase({ … })
} catch (err) {
  if (err instanceof LuminaError) {
    err.status   // HTTP status code (number)
    err.code     // API error code (string), e.g. 'invalid_api_key'
    err.message  // human-readable message
  }
}
Network-level errors (connection refused, timeout) are also wrapped as LuminaError with status === 0 and code === 'network_error'.

Custom fetch (advanced)

Both Node 18+ and modern browsers ship globalThis.fetch, which is what the SDK uses. There’s no override hook on the client itself; if you need to intercept requests (for instrumentation, mock-in-test, etc.) overwrite globalThis.fetch before constructing the client.