How It Works
You create a user
Call the Create User endpoint with an email address. Mufi creates the user record immediately.
Mufi provisions a wallet
A custodial Polkadot wallet is generated asynchronously. The secret is split using Shamir’s Secret Sharing and distributed across isolated custodians — no full secret is ever stored in one place.
You activate the user
Call the Activate User endpoint. Once active, the user can hold assets, receive products, and attend events.
Base URLs
| Environment | URL |
|---|---|
| Production | https://api.mufi.app |
| Staging | https://dev.api.mufi.app |
Authentication
All API endpoints require a Bearer token — your API key from the Mufi Dashboard.API Key Permissions
API keys have one of two permission levels:| Permission | Access |
|---|---|
| Write | Full access — create users, events, products, and modify resources |
| Read | Query-only — fetch users, list events, check balances |
403 Forbidden if called with a read-only key.
Conventions
Request Format
- All request bodies use JSON with
Content-Type: application/json - V1 endpoints use snake_case for field names
- Prices are decimal strings (e.g.,
"49.99") to avoid floating point issues - Timestamps are Unix seconds (integer)
- IDs are UUIDs (v4)
User Identification
Users can be identified by any of these fields (in priority order):| Priority | Field | Description |
|---|---|---|
| 1 | email | The user’s unique email address |
| 2 | referenceId | Your custom ID to link users to your own database |
| 3 | id | The Mufi-generated UUID |
Pagination
List endpoints acceptpage (1-indexed) and limit parameters. Maximum limits vary by endpoint.
Standard Errors
| Status | Error | Description |
|---|---|---|
400 | invalid_request | Missing or malformed parameter |
401 | unauthorized | Missing or invalid API key |
403 | forbidden | Insufficient permissions (e.g., read-only key on a write endpoint) |
404 | not_found | Resource does not exist |
422 | unprocessable_entity | Validation error (e.g., insufficient stock, user already activated) |
500 | internal_server_error | Something went wrong on our end |
Deep Dive
Authentication
API key management, permission levels, and security best practices.
Security Architecture
How Shamir’s Secret Sharing, VPC isolation, and multi-region custodians protect wallet secrets.
Custodians
How secret parts are distributed, encrypted, and stored across isolated services.
Bring Your Own Wallet
Attach self-managed non-custodial wallets to Mufi accounts.