> For the complete documentation index, see [llms.txt](https://docs.ordinalsbot.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ordinalsbot.com/runes/airdrop.md).

# Airdrop

The airdrop consists of two steps:&#x20;

1. PSBT construction
2. Order creation & broadcast

## 1. PSBT Construction

<mark style="color:green;">`POST`</mark> `https://api.ordinalsbot.com/runes/airdrop`

Receives the airdrop data and returns the PSBT to be signed

**Headers**

**Body**

| Name                                                | Type                              | Description                                                                      |
| --------------------------------------------------- | --------------------------------- | -------------------------------------------------------------------------------- |
| runeName<mark style="color:red;">\*</mark>          | String                            | Rune name with spacers                                                           |
| perAddressAmount<mark style="color:red;">\*</mark>  | Number                            | Amount to distribute to each address                                             |
| runeSenderAddress<mark style="color:red;">\*</mark> | String                            | Bitcoin address containing the necessary rune amount                             |
| runeSenderPublicKey                                 | String                            | Public key corresponding to the runeSenderAddress (needed for taproot)           |
| btcSenderAddress<mark style="color:red;">\*</mark>  | String                            | Bitcoin address containing the necessary btc amount for network fees and postage |
| btcSenderPublicKey                                  | String                            | Public key corresponding to the btcSenderAddress (needed for taproot)            |
| receiverAddresses<mark style="color:red;">\*</mark> | Array                             | Array of addresses to receive the airdrop (max 2000 addresses)                   |
| feeRate<mark style="color:red;">\*</mark>           | Number                            | Fee rate in sats/vB                                                              |
| excludeUTXOs                                        | Array of outpoints \["txid:vout"] | Array containing UTXOs not to spend                                              |
| simulateFee                                         | Boolean                           | If true, only return fee estimation (Default = false)                            |

**Response**

{% tabs %}
{% tab title="200: OK" %}

```json
{
    "psbt":"cHNidP8BAHECAAAAAfPQ0OTWpSxwRJK...",
    "chainFee": 1000,
    "serviceFee": 100
}
```

{% endtab %}

{% tab title="500: Internal Server Error" %}

```json
{
    "status": "error",
    "error": "error reason"
}
```

{% endtab %}

{% tab title="400: Bad Request" %}

{% endtab %}
{% endtabs %}

## 2. Order creation & broadcast

<mark style="color:green;">`POST`</mark> `https://api.ordinalsbot.com/runes/airdrop-psbt`

Receives the signed PSBTs, creates an order and broadcasts the transaction

**Body**

| Name     | Type   | Description                                  |
| -------- | ------ | -------------------------------------------- |
| `psbt`   | String | Signed PSBTs in base64 to broadcast          |
| runeName | String | Valid rune name corresponding to the airdrop |

**Response**

{% tabs %}
{% tab title="200: OK" %}

<pre class="language-json"><code class="lang-json">{
<strong>    "runeName": "RuneName",
</strong>    "psbts": [
        "cHNidP8BAHECAAAAAfPQ0OTWpSxwRJK..."
    ],
    "orderType": "rune-airdrop",
    "id": "76d1a25b-1e56-4476-8a98-d248f1ab5f95",
    "status": "ok",
    "state": "queued",
    "createdAt": {
        ".sv": "timestamp"
    }
}
</code></pre>

{% endtab %}

{% tab title="500: Internal Server Error" %}

```json
{
    "status": "error",
    "error": "error reason"
}
```

{% endtab %}

{% tab title="400: Bad Request" %}

```json
{
  "error": "Invalid request"
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ordinalsbot.com/runes/airdrop.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
