Sign up
Create a console account and get testnet access right away.Integrate
Build the full deposit and withdrawal flow on testnet.Contract and review
Sign the contract and agree the Travel Rule setup with us.Go live
Switch the host and token. Your code stays the same.Wallet types
Three wallet types cover custody, deposits and withdrawals.
How they work together: Platform
Custody wallet
Holds your funds and keys. Every withdrawal starts here.
Child addresses
Each customer gets an address under the main wallet. Gather funds into main whenever you want.
Withdrawal wallet
Sends funds out. Every request waits for approval before signing.
NFT contracts
Deploy and mint NFT contracts with the same API.
Deposit and withdrawal flows
Deposits reach you through a webhook. Withdrawals leave after approval.
Withdrawal states: Platform
POST create child address→give it to the customerPOST gathering (child → main)POST withdrawal request→state: pending approvalGET tx history to reconcileAuthentication
Every call needs a Bearer token from a registered IP.
API token
Issued in the console and sent as a Bearer header. Reissue any time.
API IP registration
Register every server that calls the API. Others are refused.
Console IP limits
Limit console sign-in to your office or VPN.
Withdrawal approval
Set it per wallet. Requests wait until an approver confirms.
Webhooks
Register your URL in the console. The same event can arrive twice, so check the event id first.
Event list and payload fields: API reference
// Example. Exact fields are in the reference. // POST https://your-app.example/octet/webhook { "event": "deposit | withdrawal", "walletIdx": "…", "txHash": "0x…" } // Respond 200, then process.
Testnet and mainnet
Only the host and token change on mainnet. Get test funds from each network's faucet.
| Testnet | Mainnet | |
|---|---|---|
| Access | Self sign-up, no approval | After a review with Octet |
| Cost | Free | Your plan. See pricing |
| Host | api.testnet.octet.im | Provided at go-live |
| API token | Testnet token | Separate mainnet token |
| IP registration | Recommended | Required |
| Withdrawal approval | Optional, test it here | Set before go-live |
| Networks | Supported testnets | 23 mainnets |
| Test funds | Public faucets | Your assets |
| Travel Rule | Test flow | Set per project |
| Rate limits | See reference | See reference |
- 4xx: check auth, IP registration and parameters before retrying.
- 5xx and timeouts: retry with backoff. Check transaction history before sending a withdrawal again.
- A withdrawal in pending approval is not an error.
- For support, include the request id, wallet index and timestamp.
AI tools
Connect your coding assistant to the Octet docs through MCP. A text index is at /llms.txt.
Try asking
- Which call creates a child address?
- What states does a withdrawal pass through?
- How do I register a webhook URL?
- Which networks need a contract address for tokens?
Go-live checklist
Confirm these before your first mainnet withdrawal.
- Register the IPs that call the API.
- Set approvals on every wallet.
- Turn on alerts.
- Keep the API token in a secrets manager, not in code.
- Confirm Travel Rule settings during review.
- 01Unregistered IPCalls are refused. Register staging and production servers separately.
- 02No approver setWithdrawals stay pending. Assign an approver before the first request.
- 03Duplicate webhookDedupe on the event id and respond 200 first.
- 04Token committed to a repoReissue it and move it to a secrets manager.
- 05Travel Rule left to the endAgree the setup during review, not at go-live.