API Keys
Creating and securing your API credentials
API keys are the credential used to authenticate all requests to the Madhouse Wallet off-ramp API.
Key Format
mw_live_<keyId>_<secret>keyId— 8-character identifier visible in the dashboardsecret— 32-character hex string (128-bit entropy)
The full key is shown once at creation. It is stored as a SHA-256 hash server-side and cannot be retrieved again. If lost, revoke the key and create a new one.
Creating a Key
Sign in at business.madhousewallet.com
Go to Developers → API Keys
Click Create Key
Optionally name the key (e.g.
production,staging)Copy the full key — it will not be shown again
Up to 5 keys per account. Each key has independent rate limits and last-used tracking.
Using a Key
Include the key in the Authorization header on every request:
IP Restriction
Lock a key to a specific IPv4 address to prevent use from any other origin.
In the dashboard go to Developers → Settings
Enter your server's public IPv4 address
Save — restriction takes effect immediately
Requests from any other IP will receive 403 Forbidden.
To update the allowed IP, replace it in settings. An admin can also force-enable IP restriction on your account — in that case you cannot disable it, only change which IP is allowed.
Rate Limits
Limits are per key (not per account). A second key gets a second set of quotas.
Account requirements
60 req/min
Quote
20 req/min
Transfer (create)
5 req/min
Transfer (cancel, status)
20–30 req/min
Recipients
30 req/min
Rate limit headers on every response:
Revoking a Key
Go to Developers → API Keys, find the key, and click Revoke. Revocation is immediate — any in-flight request using that key will fail with 401. Create a new key to replace it.
Security Best Practices
Store keys in environment variables or a secrets manager — never in source code
Use one key per environment (
prod,staging,dev)Enable IP restriction on production keys
Rotate keys periodically; revoke any key that may have been exposed
Monitor
lastUsedAtin the dashboard for unexpected activity
Last updated
Was this helpful?