SDKs
Ripllo ships SDKs in three languages, with feature parity across all three. Pick the one for your stack:
| Language | Package | Install |
|---|---|---|
| Node.js | @forjio/ripllo-node |
npm install @forjio/ripllo-node |
| Python | ripllo |
pip install ripllo |
| Go | github.com/hachimi-cat/saas-ripllo/sdk/go |
go get github.com/hachimi-cat/saas-ripllo/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
verifyWebhookhelper for inbound events. - Use only minimal dependencies (Node: zero runtime deps, uses the built-in fetch; Python:
httpx; Go: stdlib). - Are open source: code is in the saas-ripllo 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.
Quick comparison
Same call in three languages — create a discount code:
Node.js:
import { RiplloClient } from '@forjio/ripllo-node';
const ripllo = new RiplloClient({
keyId: process.env.RIPLLO_KEY_ID,
secret: process.env.RIPLLO_KEY_SECRET,
});
const code = await ripllo.discountCodes.create({
code: 'WELCOME10',
type: 'percent',
value: 10,
currency: 'IDR',
scope: 'all',
});
Python:
from ripllo import RiplloClient
import os
ripllo = RiplloClient(
key_id=os.environ["RIPLLO_KEY_ID"],
secret=os.environ["RIPLLO_KEY_SECRET"],
)
code = ripllo.discount_codes.create(
code="WELCOME10",
type="percent",
value=10,
currency="IDR",
scope="all",
)
Go:
import ripllo "github.com/hachimi-cat/saas-ripllo/sdk/go"
client, _ := ripllo.NewClient(ripllo.ClientOptions{
KeyID: os.Getenv("RIPLLO_KEY_ID"),
Secret: os.Getenv("RIPLLO_KEY_SECRET"),
})
code, _ := client.DiscountCodes.Create(ctx, ripllo.DiscountCodeInput{
Code: "WELCOME10",
Type: "percent",
Value: 10,
Currency: "IDR",
Scope: "all",
})
The differences are purely idiomatic: camelCase in Node, snake_case in Python, PascalCase in Go. The underlying API call is identical.
Partner-billing mode
If you're a platform admin (the canonical example is Storlaunch) acting on behalf of downstream merchants, all three SDKs accept an onBehalfOf option that adds the X-Ripllo-On-Behalf-Of header to every request:
const ripllo = new RiplloClient({
keyId: process.env.RIPLLO_PLATFORM_KEY_ID,
secret: process.env.RIPLLO_PLATFORM_KEY_SECRET,
onBehalfOf: 'acc_<storlaunchAccountId>',
});
The Node SDK also exposes client.forMerchant(accountId) which clones a fresh client scoped to that merchant — useful for per-request rescoping in a server handler:
app.use((req, res, next) => {
req.ripllo = baseRipllo.forMerchant(req.merchant.accountId);
next();
});
Only keys with the ripllo:platform:admin scope can use this. See API authentication for the full mechanics.
Resources covered
The Node SDK is the most readable reference for the full surface. The exposed resource groups:
discountCodes— CRUD + validate + redeem + applicablereferrals— program config, links, attribution lifecycle, rewardsabandonedCart— config, reminders, recovery, statspixels— merchant + publicfeeds— Google Merchant Center XMLblog— CRUD + public readmarketingCampaigns— campaigns + templates + send/testcontacts/contactLists/audienceSegments— audience surfacefunnels— multi-step automationschannels— provider connections (email, SMS, messaging)inbox— engagement threadscampaigns/programs/collaborations— creator marketplaceapiKeys/webhooks/auditLog— developer surfacebilling— subscription + invoicesadmin— partner workspace provisioning (admin-scoped keys only)
For now, see the Node SDK source for the exact method list. Per-language deep-dive pages (installation, errors, webhooks, full reference) are on the roadmap.
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 are pre-1.0 (0.x). We may make small breaking changes between minor versions and document every break in the changelog.
Open-source
The SDKs live in the same repo as Ripllo itself:
- Node: saas-ripllo/sdk/node
- Python: saas-ripllo/sdk/python
- Go: saas-ripllo/sdk/go
Contributions welcome. PRs go through the same review as the rest of the codebase. Issues at github.com/hachimi-cat/saas-ripllo/issues.
Next
- Installation — if you haven't installed an SDK yet.
- Concepts — the data model the SDKs expose.
- API reference — the underlying HTTP API.