Documentation
A minimum path from zero to a live deposit account, fee preview, webhook endpoint, and settlement status lookup.
Install
shellbash
pnpm add @projectsilo/sdkCreate 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.
| Chain | Assets | Minimum | Notes |
|---|---|---|---|
| Ethereum Mainnet#1 | USDC | $2.00 | Cross-chain settlement route floor. |
| Base#8453 | USDC | $0.05 | Low-cost L2 route floor. |
| Polygon#137 | USDC, USDC.e | $0.01 | Same-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:noneUsage 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.