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

# Upload

{% embed url="<https://share.synthesia.io/dc3378e7-ab2a-4f03-ab58-1694000e9a32>" %}

Every transaction on the blockchain is a data bundle. Instead of integrating locking and unlocking scripts to the UTXO, one can also upload arbitrary data.&#x20;

A common use case for uploads is to store NFT images or videos in [B://cat](https://bcat.bico.media/) protocol format directly on-chain instead of on a server, to ensure the long term availability of the media file.&#x20;

Our media /upload endpoint is currently available via API to seamlessly upload files.&#x20;

{% hint style="info" %}
We currently support uploads up to 20MB on the production server and keep extending the limits. In our prototypes we recently successfully uploaded >1GB files.&#x20;
{% endhint %}

{% hint style="warning" %}
Same [pruning considerations](/utility/post.md) shall apply to the /upload endpoint.
{% endhint %}

{% embed url="<https://api.relysia.com/docs/static/index.html>" %}

## Blockchain File Upload.

<mark style="color:green;">`POST`</mark> `https://api.relysia.com/upload`

The /upload endpoint broadcasts a media file (supplied as URL) to the blockchain (in B:// protocol format).

#### Headers

| Name     | Type   | Description |
| -------- | ------ | ----------- |
| walletID | string |             |

#### Request Body

| Name                                       | Type   | Description |
| ------------------------------------------ | ------ | ----------- |
| fileUrl<mark style="color:red;">\*</mark>  | string |             |
| fileName<mark style="color:red;">\*</mark> | string |             |

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

```javascript
{
  "statusCode": 200,
  "data": {
    "status": "success",
    "msg": "Data uploaded Successfully",
    "uploadObj": {
      "fileName": "Relysia Test nft image size 1 kb.",
      "fileType": "image",
      "fileSize": 1121,
      "timeStamp": "2022-09-19T09:24:10.808Z",
      "txid": "f6c830f25f84ba14ef9cdef76dcf16934a9693b9acadd6573d759e8104fa38d8",
      "address": "1BuEAp4mjJdeDGcpw6XdvtA9fWmHNF2mMX",
      "addressPath": "m/44'/0'/0'/0/0",
      "url": "B://f6c830f25f84ba14ef9cdef76dcf16934a9693b9acadd6573d759e8104fa38d8"
    }
  }
}
```

{% endtab %}
{% endtabs %}

```javascript
var parameters = { 
    serviceId: 'optional',
    walletID: 'optional',
    body: {
          type: "media",
          fileUrl: "https://firebasestorage.googleapis.com/v0/b/musicartdev/o/nftAssets%2F0bb0267f-d5e4-4266-9499-987e2c910451_250x250?alt=media",
          fileName: "nft relysia",
          notes: "max notes text length allowed 100K"
    }
}
const response = await relysia.upload(parameters);
```
