# Fungible Tokens

## Create

Create your own fungible tokens and mint/burn them on demand to manage their supply.

Use Cases:

* Use these tokens as a currency for your [NFT marketplace](https://docs.shyft.to/solana-apis/nft-marketplace)
* Reward your users for certain actions on your dApp
* You can also use these tokens to created gated experiences.

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

### <mark style="color:blue;">**POST**</mark> /sol/v1/token/create\_detach

#### **Body Params**

* **network:** Solana blockchain environment (testnet/devnet/mainnet-beta)
* **wallet**: Wallet address who will have the mint and freeze authority.
* **name**: token name
* **symbol:** token symbol
* **description**: token description
* **decimals**: (optional )token decimals, represents the smallest denomination for the token, default: 9.&#x20;
* Example for 9 decimals, 1000000000 = 1 token
* **file**: token logo
* **fee\_payer**: (optional) The account that pays the transaction gas fee.&#x20;
* **priority\_fee**: (optional) [Prioritization fee](https://docs.solana.com/terminology#prioritization-fee) of transaction in micro Lamports. A micro Lamport is 0.000001 Lamports.

#### Response

* `encoded_tranasction`: a base-64 encoded transaction string that has to be signed and sent to the blockchain.
* `signers`: a list of addresses that are supposed to sign this transaction.
* `mint`: token address, that will be created if this transaction is successful.

We have already deployed a dev tool to sign and send transactions for quick testing <https://shyft-insider.vercel.app/>

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

{% tabs %}
{% tab title="JS" %}
{% code overflow="wrap" %}

```javascript
var myHeaders = new Headers();
myHeaders.append("x-api-key", "-3iYNcRok7Gm4EMl");

var formdata = new FormData();
formdata.append("network", "devnet");
formdata.append("wallet", "6onZzXdurac4ykUCqLewQLDPwfmgHRU9Cu9k6A6anPtx");
formdata.append("name", "Shit");
formdata.append("symbol", "SHT");
formdata.append("description", "This is a shit coin");
formdata.append("decimals", "0");
formdata.append("file", fileInput.files[0], "geeko.jpeg");
formdata.append("fee_payer", "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s");

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: formdata,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/token/create_detach", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}
{% code overflow="wrap" %}

````javascript
```json
{
    "success": true,
    "message": "Token create request generated successfully",
    "result": {
        "encoded_transaction": "AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADt+Kg0xqc6PPuiP2+gVmNBpDDXhxjU7QC73BYbdob1mvvvXQqPDZ4mdu41zMZ3K27nxaWSUFLTEnDGhrXy0oMOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBBAiOUK2wQtYmX3uHnIO2htEANdTK9dP12UzWjFk+hpR4qLAlpVknZJsW4lNRtb0fd+0yWMVT3QVKuIQrPdfDR8ozVkatOy0xc16OkE2lG6ggsr8KgcOgA5GRLR20rL/ycNU5L5Fe+VawgsTrVzhECAAIhr6gJaYjHyNRVbjpUpgwCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUYGp9UXGSxcUSGMyUw9SvF/WNruCJuh/UTj29mKAAAAAAbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpEzED/fmt494El19WZg65kOL1NJCutDZI22HgRVQO+70DBAIAATQAAAAAYE0WAAAAAABSAAAAAAAAAAbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpBwIBBkMAAFZGrTstMXNejpBNpRuoILK/CoHDoAORkS0dtKy/8nDVAVZGrTstMXNejpBNpRuoILK/CoHDoAORkS0dtKy/8nDVBQYDAQIAAgSYARAEAAAAU2hpdAMAAABTSFRYAAAAaHR0cHM6Ly9uZnRzdG9yYWdlLmxpbmsvaXBmcy9iYWZrcmVpZmRsbnB0eWVjbGN3bHJtZGQycnljd3B3NnJ3ZHBreHIzcWhtNXZrZmg2Y3NzYmRnbTJ5ZQAAAQEAAABWRq07LTFzXo6QTaUbqCCyvwqBw6ADkZEtHbSsv/Jw1QFkAAAB",
        "mint": "Crc3qv3sTgi9dBoYy2LsNPAEineCEQ7wEimWP7VCXb1C",
        "signers": [
            "6onZzXdurac4ykUCqLewQLDPwfmgHRU9Cu9k6A6anPtx",
            "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s"
        ]
    }
}
```
````

{% endcode %}
{% endtab %}
{% endtabs %}

Just like that, you have created and launched your own fungible token.  :tada:

## Create Token from Metadata

This API allows you to create Fungible Token/Semi-Fungible Token from an already uploaded metadata URI. The metadata\_uri should open a JSON document complying with Metaplex Fungible/Fungible Asset Token Standard. If the JSON doesn't follow the Metaplex standard then the API returns an error.&#x20;

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

### <mark style="color:blue;">**POST**</mark> /sol/v1/token/create\_from\_metadata

**Body Params**

* **network**: Solana blockchain environment (testnet/devnet/mainnet-beta)
* **wallet\_address:** Wallet address who will have the mint and freeze authority.
* **metadata\_uri:** URI that contains metadata of the NFT (metaplex [fungible ](https://docs.metaplex.com/programs/token-metadata/token-standard#the-fungible-standard)/ [fungible-asset standard](https://docs.metaplex.com/programs/token-metadata/token-standard#the-fungible-asset-standard)) in JSON file format.
* **decimals**: (optional )token decimals, represents the smallest denomination for the token, default: 9. To create SFT send 0 as decimals.
* **fee\_payer**: (optional) The account that pays the transaction gas fee.
* **priority\_fee**: (optional) [Prioritization fee](https://docs.solana.com/terminology#prioritization-fee) of transaction in micro Lamports. A micro Lamport is 0.000001 Lamports.

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

{% tabs %}
{% tab title="JS" %}

```javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("x-api-key", "QEbMrBRQEP92ToRo");

var raw = JSON.stringify({
  "network": "devnet",
  "wallet_address": "2fmz8SuNVyxEP6QwKQs6LNaT2ATszySPEJdhUDesxktc",
  "metadata_uri": "https://bafkreide7tbqd5al2lqebx4hijg76mcffshlsgkzx5dkgvtqxf36qkxkjm.ipfs.nftstorage.link",
  "decimals": 0,
  "fee_payer": "5KW2twHzRsAaiLeEx4zYNV35CV2hRrZGw7NYbwMfL4a2"
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/token/create_from_metadata", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```

{% endtab %}

{% tab title="Response" %}

```json
{
    "success": true,
    "message": "Token create request generated successfully",
    "result": {
        "encoded_transaction": "AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRqu/ihzDuJUnybBlq2T2Z6O2bRPAVa8CIstq4n1PfUYNrUvsEu4sHlK5zOUhcpP3aqXPFajP5NS4U9oIQciQDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBBAhALAeVfwkorAqlrAeN8dOn8Jeu6H4u3ofHzGz4FntQP5TnLEcg96K9mVpXcuQPEJLWHE6G9rvVlzCrK9O14aRxGMqfUcVHHu2+lyU5gx9wU2rGxk2NoSXtodMSdev+DxWYs6OPOdeWWZ8xwUjH5pPEyS5mvVLGeclcJ2mZ+g58rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUYGp9UXGSxcUSGMyUw9SvF/WNruCJuh/UTj29mKAAAAAAbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpJku3xeO0oJwkl4wljlZqnrOqFQsRCHwFElEJdar6gp4DBAIAATQAAAAAYE0WAAAAAABSAAAAAAAAAAbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpBwIBBkMAABjKn1HFRx7tvpclOYMfcFNqxsZNjaEl7aHTEnXr/g8VARjKn1HFRx7tvpclOYMfcFNqxsZNjaEl7aHTEnXr/g8VBQYDAQIAAgSlASEQAAAATkZUIFRyYWRpbmcgQ2FyZAMAAABOVENYAAAAaHR0cHM6Ly9iYWZrcmVpZGU3dGJxZDVhbDJscWVieDRoaWpnNzZtY2Zmc2hsc2dreng1ZGtndnRxeGYzNnFreGtqbS5pcGZzLm5mdHN0b3JhZ2UubGluawAAAQEAAAAYyp9RxUce7b6XJTmDH3BTasbGTY2hJe2h0xJ16/4PFQFkAAABAA==",
        "mint": "B2FnoumGnrXpV253XCJzdi2Kpv2HsN2kgz2wdbXTdzDv",
        "signers": [
            "2fmz8SuNVyxEP6QwKQs6LNaT2ATszySPEJdhUDesxktc",
            "5KW2twHzRsAaiLeEx4zYNV35CV2hRrZGw7NYbwMfL4a2"
        ]
    }
}
```

{% endtab %}
{% endtabs %}

To mint the created Fungible Token/SFT use [Mint](#mint) API.

## Mint

This API lets you mint and create new units of your Fungible Token. This will increase the total supply of the token. In order to mint a token, you need to create it first.

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

### <mark style="color:blue;">**POST**</mark> /sol/v1/token/mint\_detach

**Body Params:**

* **network**: Solana blockchain environment (testnet/devnet/mainnet-beta),
* **mint\_authority**: Wallet address having the mint authority,&#x20;
* **token\_address**: Token address to be minted,
* **receiver:** Wallet address of the  receiver who will get the minted tokens.
* **amount**: How many token to mint, we internally convert according to the decimals.
* **message**: (optional) Add any arbitrary message as a memo to transaction.
* **fee\_payer**: (optional) The account that pays the transaction gas fee.&#x20;
* **priority\_fee**: (optional) [Prioritization fee](https://docs.solana.com/terminology#prioritization-fee) of transaction in micro Lamports. A micro Lamport is 0.000001 Lamports.

We internally convert the amount according to the decimals a token has. For example, if USDC has 6 decimals and you want to transfer 10 USDC, you need to specify 10, and internally we convert it to 10,000,000 USDC for you😃.

#### Response

* `encoded_tranasction`: a base-64 encoded transaction string that has to be signed and sent to the blockchain.
* `signers`: a list of addresses that are supposed to sign this transaction.
* `mint`: token address that gets minted

We have already deployed a dev tool to sign and send transactions for quick testing <https://shyft-insider.vercel.app/>

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

{% tabs %}
{% tab title="JS" %}
{% code overflow="wrap" %}

```javascript
var myHeaders = new Headers();
myHeaders.append("x-api-key", "-3iYNcRok7Gm4EMl");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "network": "devnet",
  "mint_authority": "BvzKvn6nUUAYtKu2pH3h5SbUkUNcRPQawg4bURBiojJx",
  "token_address": "7yPeRofJpfPkjLJ8CLB7czuk4sKG9toXWVq8CcHr4DcU",
  "receiver": "97a3giHcGsk8YoEgWv4rP1ooWwJBgS72fpckZM6mQiFH",
  "amount": 100,
  "message": "You have been awarded these tokens for being awesome!",
  "fee_payer": "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s"
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/token/mint_detach", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}
{% code overflow="wrap" %}

````json
```json
{
    "success": true,
    "message": "Token mint request generated successfully",
    "result": {
        "encoded_transaction": "AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACBo5QrbBC1iZfe4ecg7aG0QA11Mr10/XZTNaMWT6GlHiooml4osSZRwXqi2onReASLw930fViKFqc8clj9mwcrHlnmECCqlsIMcbFpqlapSWdgN1oYDA1x0VtmheYQvu7gadMRG1CelVS7VUjvLpPVzSeBZsomxfmfyVXObNxpDFoBUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI0G3fbh12Whk9nL4UbO63msHLSF7V9bN5E6jPWFfv8AqWedZLS1izpc4tnAxmqNZ3bvgMxXNyfSIo6slVJB8HlJAgUDAgMBCg4A6HZIFwAAAAkEAQE1WW91IGhhdmUgYmVlbiBhd2FyZGVkIHRoZXNlIHRva2VucyBmb3IgYmVpbmcgYXdlc29tZSE=",
        "mint": "7yPeRofJpfPkjLJ8CLB7czuk4sKG9toXWVq8CcHr4DcU",
        "signers": [
            "BvzKvn6nUUAYtKu2pH3h5SbUkUNcRPQawg4bURBiojJx",
            "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s"
        ]
    }
}
```
````

{% endcode %}
{% endtab %}
{% endtabs %}

You can use this feature to airdrop any created token *to* your community members.

***Idea***: You can use the *create and mint* APIs to create a *multi-token Airdrop* :tada:

## Burn

This API lets you burn or decrease the supply of your Fungible Tokens.

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

### <mark style="color:red;">**DEL**</mark> /sol/v1/token/burn\_detach

**Body Params:**

* **network**: Solana blockchain environment (testnet/devnet/mainnet-beta),
* **wallet**: Wallet address containing the tokens and the fee payer,&#x20;
* **token\_address**: Token address to be burned,
* **amount**: How many tokens to burn, we internally convert according to the decimals.
* **fee\_payer**: (optional) The account that pays the transaction gas fee.
* **priority\_fee**: (optional) [Prioritization fee](https://docs.solana.com/terminology#prioritization-fee) of transaction in micro Lamports. A micro Lamport is 0.000001 Lamports.

We internally convert the amount according to the decimals a token has. For example, if USDC has 6 decimals and you want to transfer 10 USDC, you need to specify 10, and internally we convert it to 10,000,000 USDC for you😃.

#### Response

* `encoded_tranasction`: a base-64 encoded transaction string that has to be signed and sent to the blockchain.
* `signers`: a list of addresses that are supposed to sign this transaction.

We have already deployed a dev tool to sign and send transactions for quick testing <https://shyft-insider.vercel.app/>

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

{% tabs %}
{% tab title="JS" %}
{% code overflow="wrap" %}

```javascript
var myHeaders = new Headers();
myHeaders.append("x-api-key", "-3iYNcRok7Gm4EMl");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "network": "devnet",
  "wallet": "2fmz8SuNVyxEP6QwKQs6LNaT2ATszySPEJdhUDesxktc",
  "token_address": "HBE5dEcFHiJtU8vmTyx7MhB43nFRMJt8ddC8Lupc3Jph",
  "amount": 10,
  "fee_payer": "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s"
});

var requestOptions = {
  method: 'DELETE',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/token/burn_detach", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}
{% code overflow="wrap" %}

```javascript
{
    "success": true,
    "message": "Token burned successfully",
    "result": {
        "encoded_transaction": "AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEBBY5QrbBC1iZfe4ecg7aG0QA11Mr10/XZTNaMWT6GlHioGMqfUcVHHu2+lyU5gx9wU2rGxk2NoSXtodMSdev+DxXwWZaVc4CvKP29R4SNppv/4BM59dJaHVzaYP9lrKaxkv4/C6295Ul246uHWJmrL1M961h9OtPFxmifE9g2whpMBt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk5hd8YqB2kGPa6ya+Wm2edcYTu3TUIfVUlfVlOmUOMQwEEAwMCAQoPCgAAAAAAAAAA",
        "signers": [
            "2fmz8SuNVyxEP6QwKQs6LNaT2ATszySPEJdhUDesxktc",
            "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s"
        ]
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Update

This API helps you to update token metadata.

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

### <mark style="color:blue;">**POST**</mark> /sol/v1/token/update

**Body Params:**

* **network**: Solana blockchain environment (testnet/devnet/mainnet-beta),
* **update\_authority\_address**: Update authority of the token,&#x20;
* **token\_address**: Token address to be burned,
* **name**: (optional) Token name (maximum 32 char)
* **symbol:**  (optional) Token symbol (maximum 10 char)
* metadata\_uri: (optional) URI that contains metadata of the NFT ([metaplex fungible-standard](https://docs.metaplex.com/programs/token-metadata/token-standard#the-fungible-standard)) in JSON file format.
* **fee\_payer**: (optional) The account that pays the transaction gas fee.

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

{% tabs %}
{% tab title="JS" %}

````javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("x-api-key", "YOUR_API_KEY");

var raw = JSON.stringify({
  "network": "devnet",
  "token_address": "1C3n35poNbm2di6W8YTKjG2BmhaFxmTtbScy1ox2xvY",
  "update_authority_address": "2fmz8SuNVyxEP6QwKQs6LNaT2ATszySPEJdhUDesxktc",
  "name": "Anexis Coin",
  "symbol": "ANEX",
  "metadata_uri": "https://bafkreiaqvxqy4s7j5usumsmcwbqcjwz7ahtaolnpkd6rp6vh5762na6eoq.ipfs.nftstorage.link",
  "fee_payer": "5KW2twHzRsAaiLeEx4zYNV35CV2hRrZGw7NYbwMfL4a2"
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/token/update", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));```postman_json
{
    "success": true,
    "message": "Update token transaction generated successfully",
    "result": {
        "encoded_transaction": "AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEBBEAsB5V/CSisCqWsB43x06fwl67ofi7eh8fMbPgWe1A/GMqfUcVHHu2+lyU5gx9wU2rGxk2NoSXtodMSdev+DxUssRK0a1M2z8zreRvQ0NZILqWkUDOxzraUfNDhge/o2QtwZbHj0XxFOJ1Sf2sEw81YuGxzGqD9tUm20bwD+ClGLxj6W9quIauK4hbXN6LqSyAqmk3oK/rD1uLXQV9Z1soBAwICAZ8BDwELAAAAQW5leGlzIENvaW4EAAAAQU5FWFgAAABodHRwczovL2JhZmtyZWlhcXZ4cXk0czdqNXVzdW1zbWN3YnFjand6N2FodGFvbG5wa2Q2cnA2dmg1NzYybmE2ZW9xLmlwZnMubmZ0c3RvcmFnZS5saW5rAAAAAAABGMqfUcVHHu2+lyU5gx9wU2rGxk2NoSXtodMSdev+DxUBAQEB",
        "signers": [
            "2fmz8SuNVyxEP6QwKQs6LNaT2ATszySPEJdhUDesxktc",
            "5KW2twHzRsAaiLeEx4zYNV35CV2hRrZGw7NYbwMfL4a2"
        ]
    }
}
```
````

{% endtab %}

{% tab title="Response" %}

```json
{
    "success": true,
    "message": "Update token transaction generated successfully",
    "result": {
        "encoded_transaction": "AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEBBEAsB5V/CSisCqWsB43x06fwl67ofi7eh8fMbPgWe1A/GMqfUcVHHu2+lyU5gx9wU2rGxk2NoSXtodMSdev+DxUssRK0a1M2z8zreRvQ0NZILqWkUDOxzraUfNDhge/o2QtwZbHj0XxFOJ1Sf2sEw81YuGxzGqD9tUm20bwD+ClGLxj6W9quIauK4hbXN6LqSyAqmk3oK/rD1uLXQV9Z1soBAwICAZ8BDwELAAAAQW5leGlzIENvaW4EAAAAQU5FWFgAAABodHRwczovL2JhZmtyZWlhcXZ4cXk0czdqNXVzdW1zbWN3YnFjand6N2FodGFvbG5wa2Q2cnA2dmg1NzYybmE2ZW9xLmlwZnMubmZ0c3RvcmFnZS5saW5rAAAAAAABGMqfUcVHHu2+lyU5gx9wU2rGxk2NoSXtodMSdev+DxUBAQEB",
        "signers": [
            "2fmz8SuNVyxEP6QwKQs6LNaT2ATszySPEJdhUDesxktc",
            "5KW2twHzRsAaiLeEx4zYNV35CV2hRrZGw7NYbwMfL4a2"
        ]
    }
}
```

{% endtab %}
{% endtabs %}

## Get Token Info

This API returns you the information about an already launched Token. (Supports Token 2022 token info 🆕)

### <mark style="color:green;">**GET**</mark> /sol/v1/token/get\_info

{% tabs %}
{% tab title="JS" %}
{% code overflow="wrap" %}

```javascript
var myHeaders = new Headers();
myHeaders.append("x-api-key", "YOUR_API_KEY");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/token/get_info?network=devnet&token_address=FLUXBmPhT3Fd1EDVFdg46YREqHBeNypn1h4EbnTzWERX", requestOptions)
  .then(response => response.json())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}

```javascript
{
    "success": true,
    "message": "Tokens info",
    "result": {
        "name": "Fluxbot",
        "symbol": "FLUXB",
        "metadata_uri": "",
        "image": "https://assets.coingecko.com/coins/images/33018/large/fluxbot.jpeg?1700193761",
        "decimals": 5,
        "address": "FLUXBmPhT3Fd1EDVFdg46YREqHBeNypn1h4EbnTzWERX",
        "freeze_authority": "",
        "current_supply": 499999173.66462,
        "extensions": [
            {
                "extension": "transferFeeConfig",
                "state": {
                    "newerTransferFee": {
                        "epoch": 530,
                        "maximumFee": 50000000000000,
                        "transferFeeBasisPoints": 300
                    },
                    "olderTransferFee": {
                        "epoch": 530,
                        "maximumFee": 50000000000000,
                        "transferFeeBasisPoints": 300
                    },
                    "transferFeeConfigAuthority": null,
                    "withdrawWithheldAuthority": "LPF354oHyPWL7BoMRySPQLwfvUyqPBWpwC4R7atptrD",
                    "withheldAmount": 1042303853
                }
            }
        ]
    }
}
```

{% endtab %}
{% endtabs %}

## Transfer

Transfer already minted tokens from one wallet to another wallet address. This does not change the total supply of the token.

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

### <mark style="color:blue;">**POST**</mark> /sol/v1/token/transfer\_detach

#### **Body (raw)**

* **network**: Solana blockchain environment (testnet/devnet/mainnet-beta),
* **from\_address**: Wallet address of the sender,
* **token\_address**: Address of the token to transfer,
* **to\_address**: Wallet address of the receiver,
* **amount**: How many tokens to transfer. We internally convert according to the token decimals.
* **fee\_payer**: (optional) The account that pays the transaction gas fee.
* **priority\_fee**: (optional) [Prioritization fee](https://docs.solana.com/terminology#prioritization-fee) of transaction in micro Lamports. A micro Lamport is 0.000001 Lamports.

We internally convert the amount according to the decimals a token has. For example, if USDC has 6 decimals and you want to transfer 10 USDC, you need to specify 10, and internally we convert it to 10,000,000 USDC for you😃.

#### Response

* `encoded_tranasction`: a base-64 encoded transaction string that has to be signed and sent to the blockchain.
* `signers`: a list of addresses that are supposed to sign this transaction.

We have already deployed a dev tool to sign and send transactions for quick testing <https://shyft-insider.vercel.app/>

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

{% tabs %}
{% tab title="JS" %}
{% code overflow="wrap" %}

```javascript
var myHeaders = new Headers();
myHeaders.append("x-api-key", "-3iYNcRok7Gm4EMl");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "network": "devnet",
  "from_address": "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s",
  "to_address": "Apeng15Pm8EjpAcaAXpNUxZjS2jMmGqikfs281Fz9hNj",
  "token_address": "qKi7RU529xuL1JhRp2We23NmNcLEoVJQmPgmdzHNbF9",
  "amount": 50,
  "fee_payer": "GE4kh5FsCDWeJfqLsKx7zC9ijkqKpCuYQxh8FYBiTJe"
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/token/transfer_detach", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}
{% code overflow="wrap" %}

```javascript
{
    "success": true,
    "message": "Transfer token request generated successfully",
    "result": {
        "encoded_transaction": "AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgECBgPmfAUcjQy99BvpbIdJcEjTYW5zehwJ6MlLcgIjez4PjlCtsELWJl97h5yDtobRADXUyvXT9dlM1oxZPoaUeKiuRoYg+/vqqPMRmWP19eJWeO0skDu0aKHBI+5rktg0Q/hCTQP5nkIEWx/HBn3RCpSjqzMvGDnigyPsSNURX1eiDGEIb2BVps786XIQNj3IRj1r/xOzoXsi3TeuPvnZEuQG3fbh12Whk9nL4UbO63msHLSF7V9bN5E6jPWFfv8AqQhsJ43yPRrpwqMP5MTD43RvgYzfc49fYp5myCkjIrRmAQUEAwQCAQoMAHQ7pAsAAAAJ",
        "signers": [
            "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s",
            "GE4kh5FsCDWeJfqLsKx7zC9ijkqKpCuYQxh8FYBiTJe"
        ]
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Airdrop&#x20;

Airdrop any SPL-20 token to the accounts of your choice, from 1 source account.&#x20;

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

### <mark style="color:blue;">**POST**</mark> /sol/v1/token/airdrop

Input parameters:

* `network : string`  - either of \[mainnet-beta, testnet, devnet]
* `token_address : string` - mint address of the SPL-20 that has to be airdropped
* `from_address : string` - source account address to be debited with SPL-20 tokens.
* `transfer_info : Object Array`- an array of information objects (maximum 100, minimum 1), containing the destination addresses and the token amount.&#x20;
* `priority_fee: number` (optional) [Prioritization fee](https://docs.solana.com/terminology#prioritization-fee) of transaction in micro Lamports. A micro Lamport is 0.000001 Lamports.

*Note: There is no limit on the number of destination addresses. 9 token transfer instructions are batched in 1 transaction. If there, are more than 9 addresses to airdrop the tokens, then multiple transactions will be returned.*&#x20;

```json
"transfer_info": [
    {
      "to_address": "97a3giHcGsk8YoEgWv4rP1ooWwJBgS72fpckZM6mQiFH",
      "amount": 2
    },
    {
      "to_address": "GE4kh5FsCDWeJfqLsKx7zC9ijkqKpCuYQxh8FYBiTJe",
      "amount": 5
    }
  ]
```

Response:

This endpoint returns multiple encoded transactions for transferring tokens to destination accounts. All the returned transactions have to be signed and submitted to the blockchain for them to be executed.

{% hint style="danger" %}
This API is deprecated, and we no longer support it.
{% endhint %}

{% tabs %}
{% tab title="JS" %}
{% code overflow="wrap" %}

```javascript
var myHeaders = new Headers();
myHeaders.append("x-api-key", "<YOUR_API_KEY>");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "network": "devnet",
  "token_address": "4TLk2jocJuEysZubcMFCqsEFFu5jVGzTp14kAANDaEFv",
  "from_address": "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s",
  "transfer_info": [
    {
      "to_address": "97a3giHcGsk8YoEgWv4rP1ooWwJBgS72fpckZM6mQiFH",
      "amount": 0.2
    },
    {
      "to_address": "GE4kh5FsCDWeJfqLsKx7zC9ijkqKpCuYQxh8FYBiTJe",
      "amount": 0.2
    },
    {
      "to_address": "EijtaNNHqqaPmWwAmUi8f1TC6gSPnqkoodQd2BLFpA8T",
      "amount": 0.2
    }
  ],
  "priority_fee": 1000
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/token/airdrop", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error)
```

{% endcode %}

{% endtab %}

{% tab title="Response" %}
{% code overflow="wrap" %}

```json
{
    "success": true,
    "message": "Airdrop tokens request generated successfully",
    "result": {
        "encoded_transaction": [
            "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIPjlCtsELWJl97h5yDtobRADXUyvXT9dlM1oxZPoaUeKg/dh9+VD4S2R+3q17KEqlHi/GR+DgdragDPFr+qvd52Ea6sBLL4z5mF7dZ/deiz96fjiMgCfGZEczn2Am+z9AtQ8ueGdnVJq+mbxlyZh43qrWb0nVwNad39QcibG1vQy9qwVfISvnJUlny6o8HbWGwc+8/x3aEM9QiFCvk3M9feYIR4VW/5pMSCihcEFbGcqnPwPUXZFaQBrNflgdkMiumgkLttCjLZYg3h1Iblk7/eoapIpJvHSVho59jNyaKZROC3QmBGYLu6yx9h6yRr9OlJBJ0z51M1cwLpaIugOb9V4o/XXMqfkwj+1I1XZ6nVj2Kjsdrna8pkMcJujNxRTPjyDGmfLg6xNhu9NDmNtXnhx0ZrxBqwdoCsUBaP+p1ChjQL3nfrMt1AYVzT4AwAl5g06l3zFrKTKFs2twILkEdlNmKfn8ji0NWQ/63YuSrES+TC2hsyo7zTuFIJ+wH8OXO6xJVGwfhWyMncZ+RaM842aArSJH7vjkf+fJIPrKRqxkzUnvqkKk9xgLz7ESDXWhSKunzibV+8TTasl6JupSX/Qbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCp4t5rMBYjKjVSUoW1cKJn/RhyIyjJ7jUlV7h3pDHHVesLDgQCDQsACgwAwusLAAAAAAkOBAINCAAKDADC6wsAAAAACQ4EAg0JAAoMAMLrCwAAAAAJDgQCDQwACgwAwusLAAAAAAkOBAINBwAKDADC6wsAAAAACQ4EAg0DAAoMAMLrCwAAAAAJDgQCDQoACgwAwusLAAAAAAkOBAINBgAKDADC6wsAAAAACQ4EAg0FAAoMAMLrCwAAAAAJDgQCDQQACgwAwusLAAAAAAkOBAINAQAKDADC6wsAAAAACQ==",
            "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIOjlCtsELWJl97h5yDtobRADXUyvXT9dlM1oxZPoaUeKgYM1YMNYQ+VC34odE2MyGap3cPSY690wRVtMEZjNQpQye0iBAFwG9J5kWXTLcGtfYV/z85WT5uoxNf32V5HSinO98Pf5aGtS2uIJorXaUPG9hGEUxNkhiiQBX6Hbb4nNxGurASy+M+Zhe3Wf3Xos/en44jIAnxmRHM59gJvs/QLUftD0nUCdjQ4a8NFUzzscIYLCKZAimKFYGj1shBlCaAAYO7AjNdoNUfuys1e0hCS64tkTKWbmhXvAMS3jy16/l1wT2dvqld1z8KhZcUMArQCgPFvobExhbBbOwSRfIndLCRCda8pvJRAv97+ZOWfwtx2SW+g8cE7vueU2FzuLqA5f4KhO+62Rch5+QVw9fcjMl9KgNAQHzU0FG1ecw65Tr/SGzgOl3eDRgDgDQvuT7dNqZkeMfLt1mooIVVGicWZw1zq/96Rxv/t+7HuE8dQ08JJw8FlzXTHH6a4dUmPLY0M1J76pCpPcYC8+xEg11oUirp84m1fvE02rJeibqUl/0G3fbh12Whk9nL4UbO63msHLSF7V9bN5E6jPWFfv8AqeLeazAWIyo1UlKFtXCiZ/0YciMoye41JVe4d6Qxx1XrCg0EBAwJAAoMAMLrCwAAAAAJDQQEDAgACgwAwusLAAAAAAkNBAQMCgAKDADC6wsAAAAACQ0EBAwFAAoMAMLrCwAAAAAJDQQEDAsACgwAwusLAAAAAAkNBAQMAgAKDADC6wsAAAAACQ0EBAwHAAoMAMLrCwAAAAAJDQQEDAMACgwAwusLAAAAAAkNBAQMBgAKDADC6wsAAAAACQ0EBAwBAAoMAMLrCwAAAAAJ"
        ],
        "signer": "AaYFExyZuMHbJHzjimKyQBAH1yfA9sKTxSzBc6Nr5X4s"
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}
