SDKs

Fulkruma ships SDKs in three languages, with feature parity across all three. Pick the one for your stack:

Language Package Install
Node.js @forjio/fulkruma-node npm install @forjio/fulkruma-node
Python fulkruma pip install fulkruma
Go github.com/hachimi-cat/saas-fulkruma/sdk/go go get github.com/hachimi-cat/saas-fulkruma/sdk/go

All three:

  • Implement the same surface: every API resource is exposed as a typed method.
  • Handle HMAC signing automatically — you provide the key, they sign every request.
  • Provide a verifyWebhook helper for inbound events.
  • Support Pattern 2 partner billing — pass onBehalfOf to scope a platform-admin key to a merchant workspace.
  • Use only minimal dependencies (Node: stdlib + native fetch; Python: httpx; Go: stdlib).
  • Are open source: code is in the saas-fulkruma repo under sdk/<lang>/.

When to use which

If your existing stack is in Node, Python, or Go: use the matching SDK. There's no perf or feature reason to use one over another — pick your language.

If your stack is in another language (Ruby, PHP, Rust, Java, Elixir, etc.): use the raw API. HMAC signing is straightforward — we have customers integrating in all of those languages without an SDK.

Quick comparison

Same call in three languages — create a warehouse:

Node.js:

import { FulkrumaClient } from '@forjio/fulkruma-node';

const fulkruma = new FulkrumaClient({
  keyId: process.env.FULKRUMA_KEY_ID,
  secret: process.env.FULKRUMA_KEY_SECRET,
});

const { warehouse } = await fulkruma.warehouses.create({
  name: 'Main warehouse',
  city: 'Jakarta',
  postal: '12345',
});

Python:

from fulkruma import FulkrumaClient
import os

fulkruma = FulkrumaClient(
    key_id=os.environ["FULKRUMA_KEY_ID"],
    secret=os.environ["FULKRUMA_KEY_SECRET"],
)

warehouse = fulkruma.warehouses.create(
    name="Main warehouse",
    city="Jakarta",
    postal="12345",
)

Go:

import fulkruma "github.com/hachimi-cat/saas-fulkruma/sdk/go"

client, _ := fulkruma.NewClient(fulkruma.ClientOptions{
    KeyID:  os.Getenv("FULKRUMA_KEY_ID"),
    Secret: os.Getenv("FULKRUMA_KEY_SECRET"),
})

wh, _ := client.Warehouses.Create(ctx, fulkruma.WarehouseInput{
    Name:   "Main warehouse",
    City:   "Jakarta",
    Postal: "12345",
})

The differences are purely idiomatic: camelCase in Node, snake_case in Python, PascalCase in Go. The underlying API call is identical.

Pattern 2: scoping to a merchant

If you hold a platform-admin key (you're Storlaunch, Ripllo, or another Forjio partner), you can scope a single client to a specific merchant workspace using forMerchant:

const platformClient = new FulkrumaClient({
  keyId: process.env.FULKRUMA_PLATFORM_KEY_ID,
  secret: process.env.FULKRUMA_PLATFORM_KEY_SECRET,
});

// Scope to a specific merchant for a series of calls
const merchantClient = platformClient.forMerchant('acc_01H...');
const { shipment } = await merchantClient.shipments.create({ /* ... */ });

Every call from merchantClient automatically sends X-Fulkruma-On-Behalf-Of. The underlying HMAC key stays the platform's; audit log entries record both.

For a one-off, pass onBehalfOf per request:

await platformClient.shipments.create({ /* body */ }, { onBehalfOf: 'acc_01H...' });

Resource coverage

All three SDKs cover every API resource:

  • warehouses — CRUD on warehouses
  • products — products + variants
  • stock — levels, movements, reservations, adjustments
  • addresses — customer address book
  • shipments — create, get, list
  • shipping — rates, couriers, origin config
  • deliveries — digital fulfilment
  • licenses — issue, revoke, activate, deactivate, validate
  • apiKeys — manage workspace keys
  • webhooks — endpoints + events
  • auditLog — the audit trail
  • billing — merchant subscription to Fulkruma
  • integrations — status of Huudis, Biteship, Plugipay, Storlaunch
  • stats — dashboard counters and recents
  • admin — platform-admin operations (Pattern 2)

Versioning

All SDKs follow semantic versioning:

  • MAJOR bumps for breaking changes (rare; we'll batch them).
  • MINOR bumps for new features.
  • PATCH bumps for fixes.

Current versions (as of 2026-05-12):

  • Node: 0.2.x
  • Python: 0.1.x
  • Go: 0.1.x

Pre-1.0 means we may still make small breaking changes between minor versions. We document every break in the changelog.

Open-source

The SDKs live in the same repo as Fulkruma itself:

Issues at github.com/hachimi-cat/saas-fulkruma/issues.

Next