π Register an account xpub
Code samples
POST /api/v1/eth/xpub
curl -X POST 'https://settla.net/api/v1/eth/xpub' \
-H 'X-API-Key: $SETTLA_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"xpub": "xpub6BemYiVNp19a2Hdfe9LeU9GQDZXWvynzDMyocgAKwtZESXBLAtLPKN31heufNF6FVPcgkb7wzvPZLF5CHrEHmomdYRskJmC12d1Haqc5kQC",
"label": "shop-1"
}'
Only an extended PUBLIC key (xpub) is accepted. The service neither accepts nor stores private keys or mnemonics: xprv/zprv are rejected with 422. Signing stays on the client side; the signed transaction is broadcast through /api/v1/eth/transactions/send-raw.
Addresses are derived as 0/{index} below the supplied account key, i.e. the same addresses a wallet shows for m/44'/60'/0'/0/{index}.
Body parameter
{
"xpub": "xpub6BemYiVNp19a2Hdfe9LeU9GQDZXWvynzDMyocgAKwtZESXBLAtLPKN31heufNF6FVPcgkb7wzvPZLF5CHrEHmomdYRskJmC12d1Haqc5kQC",
"label": "shop-1"
}
π οΈ Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | true | none |
| Β» xpub | body | string | true | Account-level extended public key, base58check. |
| Β» label | body | string | false | none |
Example responses
201 Response
{
"id": 1,
"chain": "ETH",
"fingerprint": "1a2b3c4d",
"label": "shop-1",
"xpub_preview": "xpub6Bemβ¦5kQC",
"next_index": 3,
"issued_count": 3,
"created_at": "2025-07-23T15:16:00Z"
}
π Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 201 | Created | Key registered (repeat calls with the same key return the same record) | Inline |
| 422 | Unprocessable Entity | Key could not be parsed, is a private key, or does not fit the chain | None |
π Response Schema
Status Code 201
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| Β» id | integer | false | none | none |
| Β» chain | string | false | none | none |
| Β» fingerprint | string | false | none | First 4 bytes of hash160(pubkey), hex β lets the client tell its keys apart. |
| » label | string¦null | false | none | none |
| Β» xpub_preview | string | false | none | Masked key; the full value is never returned, it would reveal the whole address history. |
| Β» next_index | integer | false | none | none |
| Β» issued_count | integer | false | none | none |
| Β» created_at | string(date-time) | false | none | none |