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('split_revelations', true);
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.
fee_rate Integer Required Fee rate in satoshis per virtual byte.
ordinal_receive_address String Required Address to send the inscriptions to.
split_revelations Boolean Optional Should each inscription have a separate revelation transaction? Strongly recommended to set to true!
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.

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?