//Node.js / TypeScript SDK

Node.js / TypeScript SDK

Overview

The official Node.js SDK for ButtrBase. Fully typed, fetch-based client covering every API surface — auth, organizations, billing, RBAC, teams, credentials, search, AI gateway, webhooks, zero-trust, and more.

Installation

npm install @buttrbase/sdk

Quick Start

import { ButtrbaseClient } from '@buttrbase/sdk';

const client = new ButtrbaseClient({ apiKey: 'bb_live_...' });

// Login const resp = await client.login('user@example.com', 'password', 'acme'); console.log(resp.access_token);

// Get profile const profile = await client.getProfile();

Authentication

Register

const resp = await client.register('user@example.com', 'password', 'acme', {
  firstName: 'Jane', lastName: 'Doe'
});

Login Options

const options = await client.getLoginOptions('org-uuid');

Magic Link

await client.magicLinkSendV2('user@example.com', { redirectUrl: 'https://app.example.com' });
const resp = await client.magicLinkVerifyV2('token-from-email');

OTP (Passwordless Phone)

await client.otpSend('+15551234567');
const resp = await client.otpVerify('+15551234567', '123456');

SSO (OIDC / SAML)

const oidcUrl = await client.oidcAuthorizeUrl('connection-uuid');
const samlUrl = await client.samlAuthorizeUrl('connection-uuid');

MFA / TOTP

const status = await client.mfaStatus();
const enrollment = await client.mfaEnroll();
await client.mfaActivate('123456');
await client.mfaVerify('123456');
await client.mfaChallenge();
const codes = await client.mfaGenerateRecoveryCodes();
await client.mfaRedeemRecoveryCode('recovery-code');
await client.mfaDisable();

Step-Up Auth

const resp = await client.authStepUp('totp-code');
// apiKey is auto-replaced with the elevated token

Organization Security

const settings = await client.getSecuritySettings('org-uuid');
await client.updateSecuritySettings('org-uuid', { mfa_required: true });

const connections = await client.listSsoConnections('org-uuid'); await client.createSsoConnection('org-uuid', { provider: 'okta', name: 'Okta SSO' });

const events = await client.listAuditEvents('org-uuid');

Sessions & Devices

const sessions = await client.orgSessionInventory('org-uuid');
await client.orgRevokeAllSessions('org-uuid');

const accounts = await client.listDeviceAccounts('device-uuid'); await client.addDeviceAccount('device-uuid', { email: 'user@example.com' }); await client.switchDeviceActiveAccount('device-uuid', 'account-uuid');

API Keys v2

const keys = await client.listApiKeysV2('org-uuid');
const newKey = await client.createApiKeyV2('org-uuid', 'my-api-key');
await client.deleteApiKeyV2('org-uuid', 'key-uuid');

Entitlements

const check = await client.entitlementsCheck({ feature: 'advanced-analytics', org_uuid: '...' });
const batch = await client.entitlementsCheckBatch({ checks: [...] });
const effective = await client.entitlementsEffective();

Pricing

const preview = await client.pricingPreview({ plan: 'pro' });
const quote = await client.pricingQuote({ plan: 'pro', seats: 10 });
const session = await client.pricingCheckoutSession({ plan: 'pro' });

Coupons & Gift Cards

// Admin
const coupons = await client.adminListProductCoupons('product-id');
await client.adminCreateProductCoupon('product-id', { code: 'SAVE20', discount_type: 'percent' });

// Public const result = await client.validateCoupon('SAVE20'); const gc = await client.validateGiftCard('GC-123');

Teams

const team = await client.createTeam({ name: 'Engineering', org_uuid: '...' });
const teams = await client.listOrgTeams('org-uuid');
const members = await client.listTeamMembers('team-uuid');
await client.addTeamMember('team-uuid', 'user-uuid');
await client.removeTeamMember('team-uuid', 'user-uuid');

const observers = await client.listTeamObservers('team-uuid'); await client.addTeamObserver('team-uuid', 'user-uuid');

Admin: Signing Keys

const keys = await client.listSigningKeys('org-uuid');
await client.rotateSigningKeys('org-uuid');
const audit = await client.listSigningAudit('org-uuid');

Admin: mTLS CA

const ca = await client.getCa('org-uuid');
await client.initCa('org-uuid', { common_name: 'My CA' });
const certs = await client.listCertificates('org-uuid');
const cert = await client.issueCertificate('org-uuid', { csr: '...' });
await client.revokeCertificate('org-uuid', 'serial');

Admin: Secrets Vault

const secrets = await client.listSecrets('org-uuid');
await client.putSecret('org-uuid', 'DB_URL', 'postgres://...');
const secret = await client.getSecret('org-uuid', 'DB_URL');
await client.deleteSecret('org-uuid', 'DB_URL');

Admin: Domains & Webhooks

const domains = await client.listDomains('org-uuid');
const domain = await client.createDomain('org-uuid', 'example.com');
await client.verifyDomain('org-uuid', 1);

const endpoints = await client.listWebhookEndpoints('org-uuid'); await client.createWebhookEndpoint('org-uuid', 'https://hook.example.com', ['user.created']);

Payments

const session = await client.createPaymentCheckout({ amount: 5000, currency: 'usd' });
const invoice = await client.sendInvoice({ amount: 5000, customer_email: 'buyer@example.com' });

AI Gateway

const resp = await client.aiChatCompletions('org-uuid', 'openai', {
  model: 'gpt-4',
  messages: [{ role: 'user', content: 'Hello!' }]
});

SMS & Email

await client.sendSms('+15551234567', 'Hello from ButtrBase!');
await client.verifyEmailIdentity('user@example.com');