Ferros
Developer-First Platform

Build with Ferros

Clean REST APIs, comprehensive webhooks, and dual authentication. Create wallets, move assets, and automate treasury operations. Ship in hours, not weeks.

Base URL https://api.ferros.xyz/v1

Quick Start

Go from zero to your first API call in under five minutes.

1

Create your account

Sign up and create your organization. Your first API key is generated automatically.

curl https://api.ferros.xyz/v1/auth/signup \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Jane Smith",
    "email": "jane@acme.com",
    "password": "...",
    "organizationName": "Acme Corp"
  }'
2

Grab your API key

Copy the cv_live_... key from the response. Store it securely -- it is only shown once.

// Response
{
  "apiKey": "cv_live_sk_a1b2c3...",
  "user": {
    "id": "usr_...",
    "email": "jane@acme.com"
  }
}
3

Make your first call

Create a multi-chain wallet with a single request. Addresses are generated for each chain automatically.

curl https://api.ferros.xyz/v1/wallets \
  -H "X-API-Key: cv_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Treasury",
    "type": "hot",
    "custodyMode": "custodial",
    "chains": ["ethereum", "polygon"]
  }'

API Resources

Comprehensive endpoints for every aspect of digital asset management. All resources follow consistent REST conventions.

Wallets

Create and manage multi-chain wallets. Supports custodial and self-custody modes with HOT, WARM, and COLD storage types.

GET /v1/wallets
POST /v1/wallets

Transactions

Send, receive, and monitor blockchain transactions. Built-in approval flows, multi-sig signing, and on-chain confirmation tracking.

POST /v1/transactions
POST /v1/transactions/:id/execute

Vaults

Customer-facing accounts with dedicated deposit addresses across multiple chains. Gas sponsorship and automated workflows included.

POST /v1/vaults
GET /v1/vaults/:id/wallets

Workflows

Trigger-based automations for forwarding funds, splitting payments, sending notifications, and executing custom logic on events.

POST /v1/workflows
POST /v1/workflows/:id/run

Webhooks

Real-time event notifications delivered to your endpoints. HMAC-signed payloads for secure verification. Test fire from the dashboard.

POST /v1/webhooks
POST /v1/webhooks/:id/test

Signing Requests

Self-custody signing flow for hardware wallets and the Ferros Signer mobile app. Push notifications and deep linking built in.

GET /v1/signing-requests
POST /v1/signing-requests/:id/signature

Create a Wallet

One API call creates a multi-chain wallet with addresses on every chain you specify. Choose your language.

curl -X POST https://api.ferros.xyz/v1/wallets \
  -H "X-API-Key: cv_live_sk_a1b2c3..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Treasury Primary",
    "type": "hot",
    "custodyMode": "custodial",
    "chains": ["ethereum", "polygon", "base"]
  }'
200 OK — Wallet created with 3 chain addresses

Authentication

Two authentication methods to fit every use case. Use API keys for server-to-server, JWT Bearer tokens for user sessions.

API Key

Pass your key in the X-API-Key header. Keys are prefixed with cv_ and stored as SHA-256 hashes. Create, rotate, and revoke keys from the dashboard or API.

X-API-Key: cv_live_sk_a1b2c3d4e5f6...
Server-to-server Rotatable SHA-256 hashed

JWT Bearer Token

Use Authorization: Bearer header with a JWT. Tokens embed userId, orgId, and role. Ideal for user-facing sessions and the dashboard.

Authorization: Bearer eyJhbGciOi...
User sessions Stateless Role embedded

Webhook Events

Subscribe to real-time events and react instantly. All payloads are HMAC-signed with your webhook secret for verification.

Event Description
transaction.created A new transaction has been initiated
transaction.status_changed Transaction status updated (confirming, confirmed, etc.)
transaction.completed Transaction fully confirmed on-chain
transaction.failed Transaction failed or was reverted
wallet.created A new wallet has been created
address.generated A new deposit address was derived
policy.triggered A compliance policy rule was matched
vault.created A new customer vault was created
vault.deposit Funds deposited into a vault address
vault.withdrawal Funds withdrawn from a vault
workflow.triggered A workflow automation was triggered
workflow.completed Workflow run completed successfully
workflow.failed Workflow run failed during execution
gas_tank.low Gas tank balance dropped below threshold
Coming Soon

Official SDKs

Native client libraries to make integration even faster. Type-safe, well-documented, and idiomatic for each language.

JavaScript
Python
Go

In the meantime, our REST API works with any HTTP client in any language.

Start building today

Create your free account, grab an API key, and deploy your first wallet in under five minutes.