Onboard an Organization

Create your org, generate API keys, and enable chains
View as Markdown

This guide walks you through setting up a new Clossir organization from scratch — creating the org, generating API keys, enabling chains, and optionally registering as an issuer.

Prerequisites

1. Install the SDK

Install
$npm install @signum-tech/sdk

2. Initialize the client

client.ts
1import { SignumClient } from "@signum-tech/sdk";
2
3const signum = new SignumClient({
4 apiKey: process.env.SIGNUM_API_KEY,
5});

3. Create the organization

Create your org with a name, email, and type. The org_type field accepts: organization, institution, fund, bank, broker_dealer, sub_organization, or spv.

create-org.ts
1const org = await signum.orgs.create({
2 name: "Acme Capital",
3 email: "ops@acmecapital.com",
4 org_type: "fund",
5});
6
7console.log(org.id); // Your new organization ID

The API returns 200 with the full org object, including the id you will use for all subsequent calls.

4. Set network mode

New organizations default to testnet. When you are ready for production, switch to mainnet:

set-network-mode.ts
1await signum.orgs.setNetworkMode(org.id, {
2 network_mode: "mainnet",
3});

Switching to mainnet enables real on-chain transactions. Keep your org on testnet until you have validated your integration end-to-end.

5. Create an API key

Generate an API key with the scopes your integration needs. The key value is returned only once — store it securely.

create-api-key.ts
1const key = await signum.orgs.apiKeys.create(org.id, {
2 name: "backend-service",
3 permissions: [
4 "orgs:read",
5 "assets:read",
6 "assets:write",
7 "attestations:read",
8 "attestations:write",
9 "chains:read",
10 "chains:write",
11 ],
12});
13
14console.log(key.prefix); // "sk_live_..."
15console.log(key.key); // Full API key — store securely, shown only once

See Authentication for the full list of 16 permission scopes and recommended scope sets.

6. Enable chains

Enable the blockchains your org will operate on. Each chain has a chain_registry_id that you can look up from the chain registry. This is distinct from the LayerZero Endpoint ID (EID).

enable-chains.ts
1// Look up the chain registry to find the ID for your target chain,
2// then enable it for your org
3const chains = await signum.chains.list();
4const ethereum = chains.find((c) => c.name === "Ethereum");
5
6await signum.orgs.chains.enable(org.id, {
7 chain_registry_id: ethereum.id,
8});

The chain_registry_id is the identifier from the Clossir chain registry, not the LayerZero EID. Use the chain registry list endpoint to look up IDs for your target chains.

7. Register as issuer (optional)

If your org will create and deploy tokenized assets, register as an issuer. This is required before creating assets.

register-issuer.ts
1await signum.orgs.issuer.register(org.id, {
2 name: "Acme Capital Issuer",
3});

8. Provision server wallets (optional)

Server wallets enable automated signing for on-chain operations like attestation settlement and asset deployment.

provision-wallet.ts
1const wallet = await signum.orgs.serverWallet.create(org.id);
2
3console.log(wallet); // Server wallet details

9. Invite a team member (optional)

Add colleagues to your org with specific roles. Available roles: admin, operator, compliance_officer, investor, client (default).

invite-member.ts
1await signum.orgs.members.invite(org.id, {
2 email: "alice@acmecapital.com",
3 role: "admin",
4 display_name: "Alice Chen",
5});

The invited user receives an email with a link to accept the invitation.

What you built

You now have a fully configured Clossir organization with API keys, enabled chains, and optionally an issuer registration and server wallets. Your org is ready to attest users, define compliance policies, and deploy gated assets.

Reference

Next steps

  • Attest a User — verify identity and issue on-chain attestations
  • Concepts — understand the full data model