Documentation

A minimum path from zero to a live deposit account, fee preview, webhook endpoint, and settlement status lookup.

Install

shellbash
pnpm add @projectsilo/sdk

Create a deposit account

example.tsts
import { createClient } from "@projectsilo/sdk";

const silo = createClient({ apiKey: process.env.PROJECT_SILO_API_KEY! });

const account = await silo.depositAccounts.create({
  externalUserId: "user_123",
  destination: {
    chainId: 137,
    address: "0x1111111111111111111111111111111111111111",
    tokenAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
  },
});
console.log(account.depositAddresses);

Minimum transfer amounts

Production accepts smaller ERC-20 transfers where the token allows it, but amounts below these floors are dust and may be uneconomic to route or support.

ChainAssetsMinimumNotes
Ethereum Mainnet#1USDC$2.00Cross-chain settlement route floor.
Base#8453USDC$0.05Low-cost L2 route floor.
Polygon#137USDC, USDC.e$0.01Same-chain deposits; practical dust floor.

Preview fees

fees.tsts
const quote = await silo.fees.preview({
  sourceChainId: 8453,
  sourceAsset: "USDC",
  amount: "100.00",
  destinationChainId: 137,
  destinationAsset: "USDC.e",
  routeCostUsd: 0.03,
});
console.log(quote.netCreditUsd, quote.billingMode);

Configure webhooks

webhooks.tsts
const { endpoint, secret } = await silo.webhooks.createEndpoint({
  name: "Production",
  url: "https://example.com/project-silo/webhook",
  eventTypes: ["deposit.credited", "deposit.failed"],
});

// Store the one-time secret in your secrets manager.
console.log(endpoint.id, secret);

Status and inventory

status.tsts
const status = await silo.status.get();
const inventory = await silo.inventoryPolicy.get();

console.log(status.ok, inventory.controls.preCreditingPaused);

API keys and scopes

New keys use the project_silo_live_* or project_silo_test_*prefix and are shown once. Store the full token in your secrets manager; Project Silo stores only a scrypt hash, prefix, scopes, limits, and audit metadata.

scopes.txttxt
deposit_accounts:read
deposit_accounts:write
deposits:read
webhooks:read
webhooks:write
usage:read
admin:none

Usage and request logs

usage.tsts
const usage = await silo.usage.get({
  start: "2026-04-01T00:00:00.000Z",
  end: "2026-04-23T00:00:00.000Z",
});

console.log(usage.usage.requestCount, usage.usage.errorRate);

Status & alerts

Real-time incidents and maintenance windows.

Security posture

SOC2 Type I in progress. See our controls roadmap.