NAV

Introduction

Welcome to the Chisel API! You can use this API to submit individual or bulk inscriptions, and monitor their status.

Inscriptions

Create Inscription

const data = new FormData();
data.append('fee_rate', 80);
data.append('ordinal_receive_address', 'bc1qdr06k926axngldcpz48fe7vg72085muzxcsfzgp3eajnptnjlk5s5yz38y');
data.append('return_address', 'bc1qguzk63exy7h5uygg8m2tcenca094a8t464jfyvrmr0s6wkt74wls3zr5m3');

// add plaintext file
const blob = new Blob(['Hello World'], {type: 'text/plain'});
data.append('inscriptions', blob, `inscription_0.txt`);

// submit inscription
await fetch('https://chisel.xyz/api/inscribe', {
    method: 'POST',
    body: data
});

The above command returns JSON structured like this:

{
    "id": "b6a430e3-fa9b-48b6-81c4-28dfede1a5f0",
    "destination": "bc1qdr06k926axngldcpz48fe7vg72085muzxcsfzgp3eajnptnjlk5s5yz38y",
    "fee_rate": 80,
    "status": "awaiting-funding",
    "address": "bc1pfrf029j2wcgf3uq9sa9p79knveeq23gasruwa34rku6mzsuaxgzsyv5jx4",
    "service_fee": 11669,
    "amount": 66350,
    "size": 720,
    "expiration": 1703542167784
}

Create one or multiple new inscriptions.

HTTP Request

POST https://chisel.xyz/api/inscribe

Form Encoding

multipart/form-data

Request Body Parameters

Parameter Type Necessity Description
inscriptions File[] Required Files to be inscribed.
ordinal_receive_address String Required Address to send the inscriptions to.
fee_rate Integer Required Fee rate in satoshis per virtual byte.
fee_rate_decimals Integer Optional Number of decimals to interpret the fee_rate parameter. For example, if fee_rate is 128 and fee_rate_decimals is 1, the fee rate is interpreted as 12.8, and if fee_rate_decimals was 2, it would be interpreted as 1.28.
split_revelations Boolean Optional Should each inscription have a separate revelation transaction?
inscribe_provided_own_ordinal Boolean Optional Set to true to enable bringing own satoshi.
parent_inscription_ids[] String[] Optional Array of inscription ID strings that the new inscriptions will become children of.
skip_mime_check Boolean Optional Allow any mime type, including those not yet supported by ord.
postage Integer Optional Value of each inscription's revelation output. Default: 10000.
compress brotli | gzip (String) Optional Compress data using either Brotli (brotli) or Gzip (gzip).
locktime Integer Optional Add a locktime to the revelation transactions. May not be used in conjunction with grind_ambifix.
grind_ambifix String Optional Grind a 1-to-4-character-ambifix for the revelation transactions, making them either start or end with the ambifix. Must be hexadecimal. May not be used in conjunction with locktime.
return_address String Optional Address whereto refunds would be sent. If used in conjunction with parent inscription IDs, all parent inscriptions will be sent here.
delegates String[] Optional Array of inscription IDs to use as delegates. Cannot be used in conjunction with the inscriptions field. When used, no content or (by default) mime type* gets inscribed.
mime_types String[] Optional Array of MIME types to use with delegate inscriptions only. Length must match delegates.
metaprotocols String[] Optional Array of strings to use as the metaprotocol for each file. Length must match inscriptions.
metadata File[] Optional Array of JSON files to mark as metadata corresponding to each inscription. Length must match inscriptions. null indicates no metadata for the inscription at the given index.
destination_address_overrides String[] Optional Array of destination address overrides. Length must match inscriptions. Empty string indicates no destination override for the inscription at the given index.
unbounds Integer[] Optional Array of inscription indices that should be marked as unbound.
allow_nonstandard Boolean Optional Allow the revelation transactions to be non-standard, i.e. change their weight limit to 3.9MB. You will not be able to broadcast your non-standard transaction using the standard relay network!
rune[operation] String Optional Either etch or mint, depending on the intended rune operation.

Rune Parameters

All Rune parameters are sent within a rune field. So name would correspond to rune[name], etc. When doing rune operations, the inscriptions field is no longer required.

Etching

To etch a rune in conjunction with an inscription, simply keep the inscriptions or delegates field from the submission parameters.

Parameter Type Necessity Description
name String Required Ticker symbol of the rune to be etched. Use periods for spacers. Example: HELLO.WORLD.
symbol Character Optional Single character point string.
divisibility Integer Optional Number of decimals to format rune tokens with. Cannot exceed 38.
premine Integer Optional Number of atomic rune tokens to premine.
cap Integer Optional Maximum number of rune minting operations. *Must be used with amount.
amount Integer Optional Number of rune tokens to issue per each mint operation. *Must be used with cap.
height_start Integer Optional Absolute block height at which the rune should first become mintable.
height_end Integer Optional Absolute block height at which the rune should stop being mintable.
offset_start Integer Optional Relative block offset from the rune's etching at which the rune should stop being mintable.
offset_end Integer Optional Relative block offset from the rune's etching at which the rune should stop being mintable.

Minting

When minting runes, no inscriptions may be specified in the submission parameters.

Parameter Type Necessity Description
id String Required ID of the rune to be minted. Must be in the form <block>:<tx>.
count Integer Required Numer of rune tokens to mint.

Get Inscription Status

curl "https://chisel.xyz/api/inscription/b6a430e3-fa9b-48b6-81c4-28dfede1a5f0/status"

This endpoint returns JSON structured like this:

{
    "id": "b6a430e3-fa9b-48b6-81c4-28dfede1a5f0",
    "destination": "tb1pufcu7ap75f333lxk8juv3e8ad2cmxxwckvg66fd3vkkn50pspgpsphqn5q",
    "fee_rate": 80,
    "status": "awaiting-funding",
    "funding_address": "tb1pc8ug6pv4s9he0me75zhu0w6m7hrx6lcca5wyypc6t9j523fsfxaqk0gssk",
    "service_fee": 11669,
    "amount": 66350,
    "size": 720,
    "expiration": 1703542167784
}

Obtain a specific inscription's status.

HTTP Request

GET https://chisel.xyz/api/inscription/<ID>/status

URL Parameters

Parameter Description
ID The ID of the inscription whose status is to be retrieved.

Response Body Values

Parameter Type Description
id String ID of the inscription. It can be accessed via https://chisel.xyz/order/<id>
destination String Bitcoin address where the inscription(s) and, if applicable, parent(s) will be sent.
fee_rate Integer The fee rate the Chisel-generated transactions will have.
status Enum One of awaiting-funding, awaiting-ordinal, broadcasting, awaiting-confirmation, and confirmed.
size Integer The aggregate byte size of all the inscriptions.
funding_address String Funding address where bitcoin (amount satoshis) must be sent to fund the inscription.
amount Integer Amount on satoshis of the necessary total fee to be sent to the funding address (address)
parent_receptacle_address String Applicable with parent/child. Address where the parent(s) must be sent. Only shown after the inscription is funded.
ordinal_receptacle_address String Applicable with BYO. Address where the user's ordinal must be sent. Only shown after the inscription is funded and, if applicable, after all parents are received.
parent_inscription_id String The id of the parent inscription that is currently expected to be sent next to ordinal_receptacle_address. When Chisel is expecting a BYO ordinal, this field will be absent.
parent_inscription_ids String[] The id of all the parent inscriptions the children will have.
received_ordinal_count Integer The total number of BYO ordinals and parents that have been registered as received so far. The parents fill up first, and the BYO ordinal comes last.
expiration Integer Unix timestamp in milliseconds by which the funding must be received. Otherwise, the order will expire.

Boost Inscription Fee Rate

const data = new URLSearchParams();
data.append('fee_rate', 80);
data.append('commit', false);

// submit inscription
await fetch('https://chisel.xyz/api/inscription/b6a430e3-fa9b-48b6-81c4-28dfede1a5f0/boost', {
    method: 'POST',
    body: data
});

This endpoint returns JSON structured like this:

{
    "id": "b6a430e3-fa9b-48b6-81c4-28dfede1a5f0",
    "destination": "tb1pufcu7ap75f333lxk8juv3e8ad2cmxxwckvg66fd3vkkn50pspgpsphqn5q",
    "fee_rate": 80,
    "status": "awaiting-funding",
    "funding_address": "tb1pc8ug6pv4s9he0me75zhu0w6m7hrx6lcca5wyypc6t9j523fsfxaqk0gssk",
    "service_fee": 11669,
    "amount": 66350,
    "size": 720,
    "expiration": 1703542167784
}

Boost a specific inscription. This will return a new order with its own funding address and funding amount.

HTTP Request

POST https://chisel.xyz/api/inscription/<ID>/boost

URL Parameters

Parameter Description
ID The ID of the inscription whose status is to be retrieved.

Request Body Parameters

Parameter Type Description
fee_rate Integer The fee rate to which the inscription(s) should be boosted.
commit Boolean Should the request be submitted, or should only a price estimate be calculated?