# Staking API Reference

Here is the list of endpoint that exposed by Fanbase Staking API and their details.

### **Data endpoints**

## Get pool list

<mark style="color:blue;">`GET`</mark> `https://stakingapi.fanbase.io/v1/pools`

This endpoint returns the list of all existing pools and their detail metadata

#### Query Parameters

| Name                                             | Type        | Description                                |
| ------------------------------------------------ | ----------- | ------------------------------------------ |
| chainId<mark style="color:red;">\*</mark>        | Number      | Chain ID                                   |
| first<mark style="color:red;">\*</mark>          | Number      | Number of pools that will be fetched first |
| orderBy<mark style="color:red;">\*</mark>        | String      | Order category                             |
| orderDirection<mark style="color:red;">\*</mark> | asc \| desc | Direction to order list                    |
| skip<mark style="color:red;">\*</mark>           | Number      | Number of data to skip fetching            |

{% tabs %}
{% tab title="200: OK Returns pool list" %}

```json
{
  "data": {
    "pools": [
      {
        "id": "0x038c0c7d6f3daf15faa38e7265408b52f043fd07",
        "tvl": "0",
        "staked": "0",
        "stakedUSD": "0",
        "rewards": "0",
        "rewardsUSD": "0",
        "start": "0",
        "end": "0",
        "apr": "0",
        "rewardSharesPerToken": "1000000",
        "sharesPerSecond": "0",
        "state": "Unfunded",
        "poolType": "Fountain",
        "stakingToken": {
          "id": "0xa29bfacb10aceb7f27a4cb5522c432d3f7765134",
          "symbol": "FUSDT",
          "price": "0",
          "alias": "",
          "type": "Standard",
          "__typename": "Token"
        },
        "rewardToken": {
          "id": "0xa29bfacb10aceb7f27a4cb5522c432d3f7765134",
          "symbol": "FUSDT",
          "alias": "",
          "price": "0",
          "type": "Standard",
          "__typename": "Token"
        },
        "__typename": "Pool"
      },
      {
        "id": "0x108bfe2bba48da729397a8bfa7b06977c26c8982",
        "tvl": "0",
        "staked": "0",
        "stakedUSD": "0",
        "rewards": "0",
        "rewardsUSD": "0",
        "start": "0",
        "end": "0",
        "apr": "0",
        "rewardSharesPerToken": "1000000",
        "sharesPerSecond": "0",
        "state": "Unfunded",
        "poolType": "Aquarium",
        "stakingToken": {
          "id": "0x920eca63a9c9b2b8cfbe8c13309d5458e04f813e",
          "symbol": "CPA",
          "price": "1",
          "alias": "",
          "type": "ERC721",
          "__typename": "Token"
        },
        "rewardToken": {
          "id": "0xc883d4f7dad93d4b7325ed2b83ed56fd95e73c42",
          "symbol": "WFNB",
          "alias": "",
          "price": "1",
          "type": "Standard",
          "__typename": "Token"
        },
        "__typename": "Pool"
      }
    ],
    "platform": {
      "pools": "30",
      "__typename": "Platform"
    }
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"first\" must be a number",
  "validation": {
    "source": "query",
    "keys": ["first"]
  }
}
```

{% endtab %}
{% endtabs %}

## Get user's pool list

<mark style="color:blue;">`GET`</mark> `https://stakingapi.fanbase.io/v1/user-pool`

This endpoint returns the list of user's pool

#### Query Parameters

| Name                                      | Type   | Description           |
| ----------------------------------------- | ------ | --------------------- |
| chainId<mark style="color:red;">\*</mark> | Number | Chain ID              |
| address<mark style="color:red;">\*</mark> | String | Address of pool owner |

{% tabs %}
{% tab title="200: OK Returns pool list" %}

```json
{
  "data": {
    "user": {
      "id": "0x4facfda0547533120e39fe3fd45a212a6a20e061",
      "pools": [
        {
          "id": "0x2f8b759593fa52466c3d69594909f823dffa21d3",
          "tvl": "2",
          "start": "1697875752",
          "end": "1697962152",
          "apr": "0",
          "sharesPerSecond": "0",
          "rewardSharesPerToken": "1000000",
          "state": "Stale",
          "rewards": "0",
          "rewardsUSD": "0",
          "staked": "2",
          "stakedUSD": "2",
          "poolType": "Aquarium",
          "stakingToken": {
            "id": "0x7ec3f3ce817f5a5ca3e285022573df1b1b4def7d",
            "alias": "",
            "symbol": "FTNFT",
            "price": "1",
            "__typename": "Token"
          },
          "rewardToken": {
            "id": "0xa8de46d005919aa6a8851c85e60f09884869c50a",
            "alias": "",
            "symbol": "FTT",
            "price": "1",
            "__typename": "Token"
          },
          "__typename": "Pool"
        }
      ],
      "__typename": "User"
    }
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"address\" must be a string",
  "validation": {
    "source": "query",
    "keys": ["address"]
  }
}
```

{% endtab %}
{% endtabs %}

## Get pool metadata

<mark style="color:blue;">`GET`</mark> `https://stakingapi.fanbase.io/v1/pool-detail`

This endpoint returns detail metadata of selected pool

#### Query Parameters

| Name                                      | Type   | Description     |
| ----------------------------------------- | ------ | --------------- |
| chainId<mark style="color:red;">\*</mark> | Number | Chain ID        |
| id<mark style="color:red;">\*</mark>      | String | Address of pool |

{% tabs %}
{% tab title="200: OK Returns pool metadata" %}

```json
{
  "data": {
    "pool": {
      "id": "0x2f8b759593fa52466c3d69594909f823dffa21d3",
      "name": null,
      "description": null,
      "website": null,
      "stakedUSD": "2",
      "rewardsUSD": "0",
      "rewardSharesPerToken": "1000000",
      "poolType": "Aquarium",
      "stakingModuleType": "ERC721",
      "rewardModuleType": "ERC20Friendly",
      "staked": "2",
      "rewards": "0",
      "apr": "0",
      "stakingToken": {
        "id": "0x7ec3f3ce817f5a5ca3e285022573df1b1b4def7d",
        "symbol": "FTNFT",
        "alias": "",
        "__typename": "Token"
      },
      "rewardToken": {
        "id": "0xa8de46d005919aa6a8851c85e60f09884869c50a",
        "symbol": "FTT",
        "alias": "",
        "decimals": "18",
        "__typename": "Token"
      },
      "fundings": [
        {
          "id": "0x2f8b759593fa52466c3d69594909f823dffa21d3_1697875752",
          "start": "1697875752",
          "end": "1697962152",
          "sharesPerSecond": "11574.07407407407407407407407407407",
          "shares": "1000000000",
          "__typename": "Funding"
        }
      ],
      "__typename": "Pool"
    }
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"id\" must be a string",
  "validation": {
    "source": "query",
    "keys": ["id"]
  }
}
```

{% endtab %}
{% endtabs %}

## Get pool transactions

<mark style="color:blue;">`GET`</mark> `https://stakingapi.fanbase.io/v1/transactions`

This endpoint returns list of transactions that executed for selected pool

#### Query Parameters

| Name                                             | Type        | Description                                |
| ------------------------------------------------ | ----------- | ------------------------------------------ |
| chainId<mark style="color:red;">\*</mark>        | Number      | Chain ID                                   |
| id<mark style="color:red;">\*</mark>             | String      | Address of pool                            |
| first<mark style="color:red;">\*</mark>          | Number      | Number of pools that will be fetched first |
| skip<mark style="color:red;">\*</mark>           | Number      | Number of data to skip fetching            |
| orderBy<mark style="color:red;">\*</mark>        | String      | Order category                             |
| orderDirection<mark style="color:red;">\*</mark> | asc \| desc | Direction to order list                    |

{% tabs %}
{% tab title="200: OK Returns pool activities" %}

```json
{
  "data": {
    "transactions": [
      {
        "id": "0xd69363f60d5d1626125236f739e5ba8babcac8bdea8faba21b9abf2ed1dd7553",
        "type": "Stake",
        "timestamp": "1697979792",
        "user": {
          "id": "0x4facfda0547533120e39fe3fd45a212a6a20e061",
          "__typename": "User"
        },
        "amount": "1",
        "earnings": "0",
        "gysrSpent": "0",
        "__typename": "Transaction"
      },
      {
        "id": "0xbbb44202c86dc4fbfca3f24c3419287e02c07881b57e61cc350eab1dcce52f3f",
        "type": "Stake",
        "timestamp": "1698371820",
        "user": {
          "id": "0x4facfda0547533120e39fe3fd45a212a6a20e061",
          "__typename": "User"
        },
        "amount": "1",
        "earnings": "0",
        "gysrSpent": "0",
        "__typename": "Transaction"
      }
    ]
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"id\" must be a string",
  "validation": {
    "source": "query",
    "keys": ["id"]
  }
}
```

{% endtab %}
{% endtabs %}

## Get pool state

<mark style="color:blue;">`GET`</mark> `https://stakingapi.fanbase.io/v1/pool-state`

This endpoint returns list of transactions that executed for selected pool

#### Query Parameters

| Name                                       | Type   | Description     |
| ------------------------------------------ | ------ | --------------- |
| chainId<mark style="color:red;">\*</mark>  | Number | Chain ID        |
| id<mark style="color:red;">\*</mark>       | String | Address of pool |
| position<mark style="color:red;">\*</mark> | String | Position ID     |

{% tabs %}
{% tab title="200: OK Returns pool state" %}

```json
{
  "data": {
    "pools": [
      {
        "id": "0x2f8b759593fa52466c3d69594909f823dffa21d3",
        "name": null,
        "description": null,
        "website": null,
        "staked": "2",
        "funded": "1000",
        "rewards": "0",
        "distributed": "0",
        "apr": "0",
        "tvl": "2",
        "stakingSharesPerToken": "1000000000000000000",
        "rewardSharesPerToken": "1000000",
        "start": "1697875752",
        "end": "1697962152",
        "operations": "2",
        "createdTimestamp": "1697875668",
        "state": "Stale",
        "volume": "2",
        "poolType": "Aquarium",
        "stakingModuleType": "ERC721",
        "rewardModuleType": "ERC20Friendly",
        "fundings": [
          {
            "id": "0x2f8b759593fa52466c3d69594909f823dffa21d3_1697875752",
            "start": "1697875752",
            "end": "1697962152",
            "sharesPerSecond": "11574.07407407407407407407407407407",
            "__typename": "Funding"
          }
        ],
        "stakingToken": {
          "id": "0x7ec3f3ce817f5a5ca3e285022573df1b1b4def7d",
          "symbol": "FTNFT",
          "alias": "",
          "decimals": "0",
          "type": "ERC721",
          "__typename": "Token"
        },
        "rewardToken": {
          "id": "0xa8de46d005919aa6a8851c85e60f09884869c50a",
          "symbol": "FTT",
          "alias": "",
          "decimals": "18",
          "type": "Standard",
          "__typename": "Token"
        },
        "__typename": "Pool"
      }
    ],
    "position": {
      "id": "0x2f8b759593fa52466c3d69594909f823dffa21d3_0x4facfda0547533120e39fe3fd45a212a6a20e061",
      "stakes": [
        {
          "id": "0x2f8b759593fa52466c3d69594909f823dffa21d3_0x4facfda0547533120e39fe3fd45a212a6a20e061_0xd69363f60d5d1626125236f739e5ba8babcac8bdea8faba21b9abf2ed1dd7553",
          "timestamp": "1697979792",
          "__typename": "Stake"
        }
      ],
      "__typename": "Position"
    }
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"id\" must be a string",
  "validation": {
    "source": "query",
    "keys": ["id"]
  }
}
```

{% endtab %}
{% endtabs %}

## Get user's stake data

<mark style="color:blue;">`GET`</mark> `https://stakingapi.fanbase.io/v1/user-stake`

This endpoint returns list staking data that staked by user

#### Query Parameters

| Name                                      | Type   | Description  |
| ----------------------------------------- | ------ | ------------ |
| chainId<mark style="color:red;">\*</mark> | Number | Chain ID     |
| address<mark style="color:red;">\*</mark> | String | User account |

{% tabs %}
{% tab title="200: OK Returns user stakes" %}

```json
{
  "data": {
    "user": {
      "id": "0x4facfda0547533120e39fe3fd45a212a6a20e061",
      "positions": [
        {
          "id": "0x2f8b759593fa52466c3d69594909f823dffa21d3_0x4facfda0547533120e39fe3fd45a212a6a20e061",
          "shares": "2000000000000000000",
          "stakes": [
            {
              "shares": "1000000000000000000",
              "timestamp": "1698371820",
              "__typename": "Stake"
            },
            {
              "shares": "1000000000000000000",
              "timestamp": "1697979792",
              "__typename": "Stake"
            }
          ],
          "pool": {
            "id": "0x2f8b759593fa52466c3d69594909f823dffa21d3",
            "apr": "0",
            "stakingSharesPerToken": "1000000000000000000",
            "rewardSharesPerToken": "1000000",
            "sharesPerSecond": "0",
            "rewards": "0",
            "state": "Stale",
            "poolType": "Aquarium",
            "stakedUSD": "2",
            "rewardsUSD": "0",
            "stakingToken": {
              "id": "0x7ec3f3ce817f5a5ca3e285022573df1b1b4def7d",
              "symbol": "FTNFT",
              "alias": "",
              "price": "1",
              "type": "ERC721",
              "__typename": "Token"
            },
            "rewardToken": {
              "id": "0xa8de46d005919aa6a8851c85e60f09884869c50a",
              "symbol": "FTT",
              "alias": "",
              "price": "1",
              "decimals": "18",
              "type": "Standard",
              "__typename": "Token"
            },
            "__typename": "Pool"
          },
          "__typename": "Position"
        }
      ],
      "__typename": "User"
    }
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"address\" must be a string",
  "validation": {
    "source": "query",
    "keys": ["id"]
  }
}
```

{% endtab %}
{% endtabs %}

### Staking endpoints

## Create competitive pool

<mark style="color:green;">`POST`</mark> `https://stakingapi.fanbase.io/v1/create-competitive-pool`

This endpoint returns transaction data to create competitive reward pool

#### Request Body

| Name                                                  | Type   | Description                       |
| ----------------------------------------------------- | ------ | --------------------------------- |
| chainId<mark style="color:red;">\*</mark>             | Number | Chain ID                          |
| stakingTokenAddress<mark style="color:red;">\*</mark> | String | Staking token address             |
| rewardTokenAddress<mark style="color:red;">\*</mark>  | String | Reward token address              |
| minBonus<mark style="color:red;">\*</mark>            | Number | Start value of reward bonus range |
| maxBonus<mark style="color:red;">\*</mark>            | Number | Top value of reward bonus range   |
| period<mark style="color:red;">\*</mark>              | Number | Staking period                    |

{% tabs %}
{% tab title="200: OK Returns transaction data" %}

```json
{
  "data": {
    "to": "0xDBdFC85440Ea59939cfCEE8d649aEe087572319c",
    "data": "0xbf14752a00000000000000000000000085b1fa2e504a3c44045b0fee3af1663a4e78637f0000000000000000000000009ad38251cd6b157b32c4d913b03165781bd2d019000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a8de46d005919aa6a8851c85e60f09884869c50a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e4d010c0748aafd4d89bfed88a25b0706003d6a20000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000000000000000000d2f00"
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"chainId\" must be a number",
  "validation": {
    "source": "query",
    "keys": ["chainId"]
  }
}
```

{% endtab %}
{% endtabs %}

## Create friendly pool

<mark style="color:green;">`POST`</mark> `https://stakingapi.fanbase.io/v1/create-friendly-pool`

This endpoint returns transaction data to create friendly reward pool

#### Request Body

| Name                                                  | Type   | Description           |
| ----------------------------------------------------- | ------ | --------------------- |
| chainId<mark style="color:red;">\*</mark>             | Number | Chain ID              |
| stakingTokenAddress<mark style="color:red;">\*</mark> | String | Staking token address |
| rewardTokenAddress<mark style="color:red;">\*</mark>  | String | Reward token address  |
| bonus<mark style="color:red;">\*</mark>               | Number | Reward bonus percent  |
| period<mark style="color:red;">\*</mark>              | Number | Staking period        |

{% tabs %}
{% tab title="200: OK Returns transaction data" %}

```json
{
  "data": {
    "to": "0xDBdFC85440Ea59939cfCEE8d649aEe087572319c",
    "data": "0xbf14752a00000000000000000000000085b1fa2e504a3c44045b0fee3af1663a4e78637f0000000000000000000000009ad38251cd6b157b32c4d913b03165781bd2d019000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a8de46d005919aa6a8851c85e60f09884869c50a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e4d010c0748aafd4d89bfed88a25b0706003d6a20000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000000000000000000d2f00"
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"chainId\" must be a number",
  "validation": {
    "source": "query",
    "keys": ["chainId"]
  }
}
```

{% endtab %}
{% endtabs %}

## Create arquarium pool

<mark style="color:green;">`POST`</mark> `https://stakingapi.fanbase.io/v1/create-arquarium-pool`

This endpoint returns transaction data to create arquarium reward pool

#### Request Body

| Name                                                  | Type   | Description           |
| ----------------------------------------------------- | ------ | --------------------- |
| chainId<mark style="color:red;">\*</mark>             | Number | Chain ID              |
| stakingTokenAddress<mark style="color:red;">\*</mark> | String | Staking token address |
| rewardTokenAddress<mark style="color:red;">\*</mark>  | String | Reward token address  |
| bonus<mark style="color:red;">\*</mark>               | Number | Reward bonus percent  |
| period<mark style="color:red;">\*</mark>              | Number | Staking period        |

{% tabs %}
{% tab title="200: OK Returns transaction data" %}

```json
{
  "data": {
    "to": "0xDBdFC85440Ea59939cfCEE8d649aEe087572319c",
    "data": "0xbf14752a00000000000000000000000085b1fa2e504a3c44045b0fee3af1663a4e78637f0000000000000000000000009ad38251cd6b157b32c4d913b03165781bd2d019000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a8de46d005919aa6a8851c85e60f09884869c50a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e4d010c0748aafd4d89bfed88a25b0706003d6a20000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000000000000000000d2f00"
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"chainId\" must be a number",
  "validation": {
    "source": "query",
    "keys": ["chainId"]
  }
}
```

{% endtab %}
{% endtabs %}

## Create ERC1155 NFT pool

<mark style="color:green;">`POST`</mark> `https://stakingapi.fanbase.io/v1/create-sft-pool`

This endpoint returns transaction data to create ERC1155 stake pool

#### Request Body

| Name                                                  | Type   | Description           |
| ----------------------------------------------------- | ------ | --------------------- |
| chainId<mark style="color:red;">\*</mark>             | Number | Chain ID              |
| stakingTokenAddress<mark style="color:red;">\*</mark> | String | Staking token address |
| rewardTokenAddress<mark style="color:red;">\*</mark>  | String | Reward token address  |
| bonus<mark style="color:red;">\*</mark>               | Number | Reward bonus percent  |
| period<mark style="color:red;">\*</mark>              | Number | Staking period        |

{% tabs %}
{% tab title="200: OK Returns transaction data" %}

```json
{
  "data": {
    "to": "0xDBdFC85440Ea59939cfCEE8d649aEe087572319c",
    "data": "0xbf14752a00000000000000000000000085b1fa2e504a3c44045b0fee3af1663a4e78637f0000000000000000000000009ad38251cd6b157b32c4d913b03165781bd2d019000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a8de46d005919aa6a8851c85e60f09884869c50a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e4d010c0748aafd4d89bfed88a25b0706003d6a20000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000000000000000000d2f00"
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"chainId\" must be a number",
  "validation": {
    "source": "query",
    "keys": ["chainId"]
  }
}
```

{% endtab %}
{% endtabs %}

## Create ERC1155 NFT pool

<mark style="color:green;">`POST`</mark> `https://stakingapi.fanbase.io/v1/create-sft-pool`

This endpoint returns transaction data to create ERC1155 stake pool

#### Request Body

| Name                                                  | Type   | Description           |
| ----------------------------------------------------- | ------ | --------------------- |
| chainId<mark style="color:red;">\*</mark>             | Number | Chain ID              |
| stakingTokenAddress<mark style="color:red;">\*</mark> | String | Staking token address |
| rewardTokenAddress<mark style="color:red;">\*</mark>  | String | Reward token address  |
| bonus<mark style="color:red;">\*</mark>               | Number | Reward bonus percent  |
| period<mark style="color:red;">\*</mark>              | Number | Staking period        |

{% tabs %}
{% tab title="200: OK Returns transaction data" %}

```json
{
  "data": {
    "to": "0xDBdFC85440Ea59939cfCEE8d649aEe087572319c",
    "data": "0xbf14752a00000000000000000000000085b1fa2e504a3c44045b0fee3af1663a4e78637f0000000000000000000000009ad38251cd6b157b32c4d913b03165781bd2d019000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a8de46d005919aa6a8851c85e60f09884869c50a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e4d010c0748aafd4d89bfed88a25b0706003d6a20000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000000000000000000d2f00"
  },
  "success": true
}
```

{% endtab %}

{% tab title="400: Bad Request Returns error exception message" %}

```json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "\"chainId\" must be a number",
  "validation": {
    "source": "query",
    "keys": ["chainId"]
  }
}
```

{% endtab %}
{% endtabs %}
