For the complete documentation index, see llms.txt. This page is also available as Markdown.

Etch

Validate rune name uniqueness & block-height availability

post
Body
runestringRequired

Rune name with or without spacers (•)

Example: MYRUNENAME
Responses
200

result: already_etched | height_not_reach | ok (HTTP 503 when rune availability cannot be verified — all providers unreachable)

application/json
codestringRequiredExample: 1
messagestringRequiredExample: common.success
dataobjectRequired
post/api/etch/validate/etch-rune
POST /api/etch/validate/etch-rune HTTP/1.1
Host: api.bound.exchange
Content-Type: application/json
Accept: */*
Content-Length: 21

{
  "rune": "MYRUNENAME"
}
200

result: already_etched | height_not_reach | ok (HTTP 503 when rune availability cannot be verified — all providers unreachable)

{
  "code": "1",
  "message": "common.success",
  "data": {},
  "metaData": {
    "totalItems": 1,
    "currentPage": 1,
    "pageSize": 1,
    "totalPages": 1
  }
}

Get etch address and fee

post
Body
runeNamestringRequiredExample: RUNE
inscriptionTypestringRequiredExample: text/plain
inscriptionContentstringRequiredExample: Some inscription content
Responses
200

Success

application/json
codestringRequiredExample: 1
messagestringRequiredExample: common.success
dataobjectRequired
post/api/etch/get-etch-address
POST /api/etch/get-etch-address HTTP/1.1
Host: api.bound.exchange
Content-Type: application/json
Accept: */*
Content-Length: 98

{
  "runeName": "RUNE",
  "inscriptionType": "text/plain",
  "inscriptionContent": "Some inscription content"
}
200

Success

{
  "code": "1",
  "message": "common.success",
  "data": {},
  "metaData": {
    "totalItems": 1,
    "currentPage": 1,
    "pageSize": 1,
    "totalPages": 1
  }
}

Get etch rune by id

get
Query parameters
selectstringOptional

Fields to select (comma separated). Use + prefix to include hidden fields. Example: name,status,+holders

populatestringOptional

Relations to populate (comma separated). Example: wallet,token

sortstringOptional

Sort field and order. Use - prefix for descending. Example: -createdAt

Responses
200

etch rune

application/json
codestringRequiredExample: 1
messagestringRequiredExample: common.success
dataobjectRequired
get/api/etch/runes/details
GET /api/etch/runes/details HTTP/1.1
Host: api.bound.exchange
Accept: */*
200

etch rune

{
  "code": "1",
  "message": "common.success",
  "data": {},
  "metaData": {
    "totalItems": 1,
    "currentPage": 1,
    "pageSize": 1,
    "totalPages": 1
  }
}

Get etched runes

get
Query parameters
pagenumberOptional

Page number (default: 1)

Example: 1
pageSizenumberOptional

Number of items per page (default: 10)

Example: 10
sortstringOptional

Sort field and order. Use - prefix for descending. Example: -createdAt, createdAt

Example: -createdAt
selectstringOptional

Fields to select (comma separated). Use + prefix to include hidden fields. Example: name,status,+holders

populatestringOptional

Relations to populate (comma separated). Example: wallet,token

Responses
200

etched runes

application/json
codestringRequiredExample: 1
messagestringRequiredExample: common.success
dataobject · EtchEntity[]Required
get/api/etch/runes
GET /api/etch/runes HTTP/1.1
Host: api.bound.exchange
Accept: */*
200

etched runes

{
  "code": "1",
  "message": "common.success",
  "data": [
    {}
  ],
  "metaData": {
    "totalItems": 1,
    "currentPage": 1,
    "pageSize": 1,
    "totalPages": 1
  }
}
post
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
runeNamestringRequiredExample: RUNE
inscriptionTypestringRequiredExample: text/plain
inscriptionContentstringRequiredExample: Some inscription content
userAddressstringRequired
feeTiernumber · min: 5000 · max: 100000Required

Fee tier for the pool (5000 = 0.5%, 10000 = 1%, 20000 = 2%, etc.)

Example: 10000
diamondHandRewardRatenumber · max: 1Optional

Diamond hands share of the available 66.67% (0-1, e.g., 0.5 = 50% of 66.67% = 33.33% total)

Example: 0.5
blockWithdrawalsbooleanOptional

Block withdrawals of this token from radFi (only internal transfers allowed)

Default: false
addLpSatsRatenumber · max: 1Optional

Percentage of raised funds to allocate to liquidity (0-1, e.g., 0.2 = 20% to LP, 80% to creator)

Example: 0.2
customFeeRatenumber · min: 1Optional

Customized fee rate for the etching transaction (>=1)

Example: 3.5
isReservebooleanOptional

Reserve to launch the token at a later date

Default: false
userPremineAmountstringOptional

Raw rune amount (base units) to transfer to the creator before public distribution. Must fit within the total premine supply.

Example: 100000
Responses
201Success

No content

post/api/etch/commit-tx
POST /api/etch/commit-tx HTTP/1.1
Host: api.bound.exchange
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 275

{
  "runeName": "RUNE",
  "inscriptionType": "text/plain",
  "inscriptionContent": "Some inscription content",
  "userAddress": "text",
  "feeTier": 10000,
  "diamondHandRewardRate": 0.5,
  "blockWithdrawals": false,
  "addLpSatsRate": 0.2,
  "customFeeRate": 3.5,
  "isReserve": false,
  "userPremineAmount": "100000"
}
201Success

No content

post
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
signedBase64PsbtstringRequiredExample: base64psbt
runeNamestringRequiredExample: UNCOMMON•GOODS
inscriptionTypestringRequiredExample: text/plain
inscriptionContentstringRequiredExample: Some inscription content
symbolstringRequiredExample: R
creatorstringRequiredExample: tb1qg5s9rdd9ddhacql3upd7ntzrexp3kn95v4hndm
descriptionstringRequiredExample: Some description
displayTickerstringOptionalExample: R
Responses
201Success

No content

post/api/etch/submit-etching
POST /api/etch/submit-etching HTTP/1.1
Host: api.bound.exchange
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 373

{
  "signedBase64Psbt": "base64psbt",
  "runeName": "UNCOMMON•GOODS",
  "inscriptionType": "text/plain",
  "inscriptionContent": "Some inscription content",
  "symbol": "R",
  "creator": "tb1qg5s9rdd9ddhacql3upd7ntzrexp3kn95v4hndm",
  "description": "Some description",
  "displayTicker": "R",
  "social": {
    "x": "https://x.com/runeCreator",
    "telegram": "https://t.me/runeCreator",
    "website": "https://rune.com"
  }
}
201Success

No content

get
Query parameters
runeId_eqstringOptional
balance_gtenumberOptional
pagenumberOptional
pageSizenumberOptional
Responses
200Success

No content

get/api/etch/top-holders
GET /api/etch/top-holders HTTP/1.1
Host: api.bound.exchange
Accept: */*
200Success

No content

post
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
runeIdstringRequired
userAddressstringRequired
Responses
201Success

No content

post/api/etch/build-get-reward-tx
POST /api/etch/build-get-reward-tx HTTP/1.1
Host: api.bound.exchange
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38

{
  "runeId": "text",
  "userAddress": "text"
}
201Success

No content

post
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
signedBase64TxstringRequired
userAddressstringRequired
Responses
201Success

No content

post/api/etch/sign-reward-tx
POST /api/etch/sign-reward-tx HTTP/1.1
Host: api.bound.exchange
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 46

{
  "signedBase64Tx": "text",
  "userAddress": "text"
}
201Success

No content

get
Query parameters
userAddressstringRequired
runeIdsstringRequired

separated by comma

Example: 123:123,354:543
Responses
200Success

No content

get/api/etch/rewards-amount
GET /api/etch/rewards-amount?userAddress=text&runeIds=123%3A123%2C354%3A543 HTTP/1.1
Host: api.bound.exchange
Accept: */*
200Success

No content

post
Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
runeIdstringRequired
userAddressstringOptionalExample: bc1p...
Responses
201Success

No content

post/api/etch/open-mint
POST /api/etch/open-mint HTTP/1.1
Host: api.bound.exchange
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 41

{
  "runeId": "text",
  "userAddress": "bc1p..."
}
201Success

No content

Last updated