Register a watch-only or simulated wallet
package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://api.feitpay.com/v1/wallets"
payload := strings.NewReader("{ \"store_id\": \"example\", \"network_id\": \"example\", \"label\": \"example\", \"mode\": \"simulated\", \"xpub\": \"example\", \"gap_limit\": 20 }")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Gryphem-Environment", "test") req.Header.Add("Authorization", "Bearer <token>") req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}const url = 'https://api.feitpay.com/v1/wallets';const options = { method: 'POST', headers: { 'Gryphem-Environment': 'test', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"store_id":"example","network_id":"example","label":"example","mode":"simulated","xpub":"example","gap_limit":20}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.feitpay.com/v1/wallets \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Gryphem-Environment: test' \ --data '{ "store_id": "example", "network_id": "example", "label": "example", "mode": "simulated", "xpub": "example", "gap_limit": 20 }'Accepts an extended public key (xpub mode) — never a seed phrase or private key. Honors Idempotency-Key (replays return the original response for 24 h).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Active organization for dashboard sessions. Ignored for API keys (the key determines the organization).
test (default) or live for dashboard sessions. API keys determine the environment.
Unique key per logical create operation (max 255 chars). Replays return the original response; reuse with a different body returns idempotency_error.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Extended PUBLIC key: a BIP84 account key (xpub/zpub) for Bitcoin, or the account-level key for EVM (m/44’/60’/0’) and TRON (m/44’/195’/0’). Never send private keys.
Responses
Section titled “Responses”Registered (watch-only).
object
object
Example
{ "object": "wallet", "mode": "simulated", "address_type": "p2wpkh", "status": "active", "ownership": { "status": "unverified" }}Missing or invalid credentials.
object
object
Example
{ "error": { "type": "invalid_request_error" }}The feature is not available for your account: the account is not activated yet, the network or payment method is not enabled, or a required partner is not in place.
object
object
Example
{ "error": { "type": "invalid_request_error" }}State conflict.
object
object
Example
{ "error": { "type": "invalid_request_error" }}Validation failed.
object
object
Example
{ "error": { "type": "invalid_request_error" }}Too many requests. See Retry-After.
object
object
Example
{ "error": { "type": "invalid_request_error" }}