> For the complete documentation index, see [llms.txt](https://docs.bloq.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bloq.com/bloq-services/bloqstake/avalanche/api-routes.md).

# API Routes

Jump to:

* [DELETE /staking/avalanche/{chain}/validators/{id}](#delete-staking-avalanche-chain-validators-id)
* [GET /staking/avalanche/{chain}/validators](#get-staking-avalanche-chain-validators)
* [GET /staking/avalanche/{chain}/validators/{id}](#get-staking-avalanche-chain-validators-id)
* [GET /staking/avalanche/billing/report](#get-staking-avalanche-billing-report)
* [GET /staking/avalanche/chains](#get-staking-avalanche-chains)
* [POST /staking/avalanche/{chain}/validators](#post-staking-avalanche-chain-validators)
* [Error responses](#error-responses)

## GET /staking/avalanche/chains

Retrieves all the chains that are enabled for the protocol

### Parameters

| Name          | In     | Type   | Required | Description               |
| ------------- | ------ | ------ | -------- | ------------------------- |
| Authorization | header | string | yes      | The authentication token. |

```shell
curl -X GET https://api.bloq.com/staking/avalanche/chains \
  -H 'Authorization: Bearer <auth-token>'
```

### Response

| Status | Description                         |
| ------ | ----------------------------------- |
| 200    | The list was retrieved.             |
| 401    | No authentication header found.     |
| 403    | The authorization token is invalid. |

| Property | Type   | Description            |
| -------- | ------ | ---------------------- |
| (root)   | array  | The response.          |
| \[]      | string | The name of the chain. |

#### Sample response

```json
["fuji", "mainnet"]
```

## GET /staking/avalanche/{chain}/validators

List all of the user's Avalanche validators.

### Parameters

| Name          | In     | Type   | Required | Description                                 |
| ------------- | ------ | ------ | -------- | ------------------------------------------- |
| chain         | path   | string | yes      | The validator's chain: "mainnet" or "fuji". |
| Authorization | header | string | yes      | The authentication token.                   |

#### Sample request

```shell
curl -X GET https://api.bloq.com/staking/avalanche/fuji/validators \
  -H 'Authorization: Bearer <auth-token>'
```

### Response

| Status | Description                         |
| ------ | ----------------------------------- |
| 200    | The list was retrieved.             |
| 403    | The authorization token is invalid. |

| Property                              | Type      | Description                                                                   |
| ------------------------------------- | --------- | ----------------------------------------------------------------------------- |
| (root)                                | array     | The validator data.                                                           |
| \[].avalancheNodeId                   | string    | The Avalanche Node ID.                                                        |
| \[].chain                             | string    | The validator chain                                                           |
| \[].createdAt                         | string    | The validator creation date.                                                  |
| \[].id                                | string    | The BloqStake id of the validator.                                            |
| \[].region                            | string    | The validator region.                                                         |
| \[].rewardingStakePercentage          | string    | Percent of stake which thinks this validator is above the uptime requirement. |
| \[].stake                             | string    | The current amount staked during this period.                                 |
| \[].stakingPeriods                    | array     | Array of staking periods of the validator                                     |
| \[].stakingPeriods\[].depositTxId     | string    | Transaction Id of the deposit operation for staking.                          |
| \[].stakingPeriods\[].end             | string    | End date of the staking.                                                      |
| \[].stakingPeriods\[].rewardAddresses | string\[] | Array of reward addresses.                                                    |
| \[].stakingPeriods\[].rewards         | string    | (Optional). Rewards in nAvax.                                                 |
| \[].stakingPeriods\[].stake           | string    | The amount staked in nAvax during this period.                                |
| \[].stakingPeriods\[].start           | string    | Start date of the staking.                                                    |
| \[].updatedAt                         | string    | The validator update date.                                                    |
| \[].user                              | string    | The user Id.                                                                  |
| \[].weightedAveragePercentage         | string    | Stake-weighted average of all observed uptimes for this validator.            |

#### Sample response

```json
[
  {
    "avalancheNodeId": "NodeID-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "chain": "mainnet",
    "createdAt": "2022-08-23T20:21:17.725Z",
    "id": "node-0000000-0000-0000-0000-000000000000",
    "region": "us-east-2",
    "rewardingStakePercentage": "45.1234",
    "stake": "0",
    "stakingPeriods": [
      {
        "depositTxId": "aMQx5eMng21SxwXozxikRcMymmts3cRACJhrAEJeruLJpRzgZ",
        "end": "2022-09-30T20:29:13.000Z",
        "rewardAddresses": ["P-fuji1vy5ttya00gkq5h7hlvt6lkpsee8vur0qkjmgkc"],
        "rewards": "10000000",
        "stake": "3000000000",
        "start": "2022-09-05T20:19:44.000Z"
      }
    ],
    "updatedAt": "2022-08-24T10:04:16.142Z",
    "user": "user-00000000-0000-0000-0000-000000000000",
    "weightedAveragePercentage": "45.1234"
  }
]
```

## POST /staking/avalanche/{chain}/validators

Create a new Avalanche validator.

### Request

| Name          | In     | Type   | Required | Description                                                                                                |
| ------------- | ------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------- |
| Authorization | header | string | yes      | The authentication token.                                                                                  |
| chain         | path   | path   | yes      | The validator chain: "mainnet" or "fuji".                                                                  |
| region        | body   | string | no       | The region where it will be created. "us-east-2" for EC2, or "k8s" for Kubernetes. Defaults to "us-east-2" |

#### Sample request

```shell
curl -X POST https://api.bloq.com/staking/avalanche/mainnet/validators \
  -H 'Authorization: Bearer <auth-token>'
  --data { "region": "us-east-2" }
```

### Response

| Status | Description                         |
| ------ | ----------------------------------- |
| 200    | The validator was created.          |
| 403    | The authorization token is invalid. |

| Property   | Type   | Description                        |
| ---------- | ------ | ---------------------------------- |
| (root)     | object | The validator data.                |
| .chain     | string | The validator chain                |
| .createdAt | string | The validator creation date.       |
| .id        | string | The BloqStake Id of the validator. |
| .user      | string | The user Id.                       |
| .region    | string | The validator region.              |

#### Sample responses

Successful response:

```json
{
  "chain": "mainnet",
  "createdAt": "2022-08-23T20:21:17.725Z",
  "id": "node-00000000-0000-0000-0000-000000000000",
  "user": "user-00000000-0000-0000-0000-000000000000",
  "region": "us-east-2"
}
```

## GET /staking/avalanche/{chain}/validators/{id}

Returns one Avalanche validator by its BloqStake Id.

### Parameters

| Name          | In     | Type   | Required | Description                                 |
| ------------- | ------ | ------ | -------- | ------------------------------------------- |
| chain         | path   | string | yes      | The validator's chain: "mainnet" or "fuji". |
| id            | path   | string | yes      | The validator's Id.                         |
| Authorization | header | string | yes      | The authentication token.                   |

#### Sample request

```shell
curl -X GET https://api.bloq.com/staking/avalanche/fuji/validators/node-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  -H 'Authorization: Bearer <auth-token>'
```

### Response

| Status | Description                         |
| ------ | ----------------------------------- |
| 200    | The validator was retrieved.        |
| 403    | The authorization token is invalid. |
| 404    | The validator was not found.        |

| Property                           | Type      | Description                                                                   |
| ---------------------------------- | --------- | ----------------------------------------------------------------------------- |
| (root)                             | object    | The validator data.                                                           |
| .avalancheNodeId                   | string    | The Avalanche Node ID.                                                        |
| .chain                             | string    | The validator chain                                                           |
| .createdAt                         | string    | The validator creation date.                                                  |
| .id                                | string    | The BloqStake Id of the validator.                                            |
| .region                            | string    | The validator region.                                                         |
| .rewardingStakePercentage          | string    | Percent of stake which thinks this validator is above the uptime requirement. |
| .stake                             | string    | The current amount staked during this period.                                 |
| .stakingPeriods                    | array     | Array of staking periods of the validator                                     |
| .stakingPeriods\[].depositTxId     | string    | Transaction Id of the deposit operation for staking.                          |
| .stakingPeriods\[].end             | string    | End date of the staking.                                                      |
| .stakingPeriods\[].rewardAddresses | string\[] | Array of reward addresses.                                                    |
| .stakingPeriods\[].rewards         | string    | (Optional). Rewards in nAvax.                                                 |
| .stakingPeriods\[].stake           | string    | The amount staked during this period in nAvax.                                |
| .stakingPeriods\[].start           | string    | Start date of the staking.                                                    |
| .updatedAt                         | string    | The validator update date.                                                    |
| .user                              | string    | The user Id.                                                                  |
| .weightedAveragePercentage         | string    | Stake-weighted average of all observed uptimes for this validator.            |

#### Sample response

```json
{
  "avalancheNodeId": "NodeID-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "chain": "mainnet",
  "createdAt": "2022-08-23T20:21:17.725Z",
  "id": "node-0000000-0000-0000-0000-000000000000",
  "region": "us-east-2",
  "rewardingStakePercentage": "45.1234",
  "stake": "0",
  "stakingPeriods": [
    {
      "depositTxId": "aMQx5eMng21SxwXozxikRcMymmts3cRACJhrAEJeruLJpRzgZ",
      "end": "2022-09-30T20:29:13.000Z",
      "rewardAddresses": ["P-fuji1vy5ttya00gkq5h7hlvt6lkpsee8vur0qkjmgkc"],
      "rewards": "10000000",
      "stake": "3000000000",
      "start": "2022-09-05T20:19:44.000Z"
    }
  ],
  "updatedAt": "2022-08-24T10:04:16.142Z",
  "user": "user-00000000-0000-0000-0000-000000000000",
  "weightedAveragePercentage": "45.1234"
}
```

## GET /staking/avalanche/billing/report

Returns a billing report of the organization's validators for the period specified, grouped by user. Requires the role `auditor` or `billing`.

### Parameters

| Name         | In           | Type   | Required | Description                                                                |
| ------------ | ------------ | ------ | -------- | -------------------------------------------------------------------------- |
| accept       | header       | string | no       | The format of the report. Accepts "application/json" (default), "text/csv" |
| fromDate     | query string | string | no       | Report's starting date                                                     |
| organization | query string | string | no       | Organization to filter the validators. Only valid for `billing` users      |
| toDate       | query string | string | no       | Report's end date                                                          |

#### Sample request

```shell
curl -X GET https://api.bloq.com/staking/avalanche/billing/report/user?fromDate=2023-01-15&toDate=2023-02-25 \
  -H 'Authorization: Bearer <auth-token>'
```

### Response

| Status | Description                                                         |
| ------ | ------------------------------------------------------------------- |
| 200    | The report was retrieved.                                           |
| 403    | The authorization token is invalid or the user has no auditor role. |

#### If the `accept` header is `application/json`

| Property                                                        | Type           | Description                                                                                                    |
| --------------------------------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------------------- |
| (root)                                                          | object         | The report data.                                                                                               |
| \[].organization                                                | string         | The organization Id where the user belongs to.                                                                 |
| \[].organizationName                                            | string         | The organization name the validator belongs to.                                                                |
| \[].reportFrom                                                  | string         | Report's starting date.                                                                                        |
| \[].reportTo                                                    | string         | Report's end date.                                                                                             |
| \[].user                                                        | string         | User Id.                                                                                                       |
| \[].userEmail                                                   | string         | The user email.                                                                                                |
| \[].userName                                                    | string         | The user name.                                                                                                 |
| \[].validatorsPerChain                                          | object\[]      | Validators grouped by chain.                                                                                   |
| \[].validatorsPerChain\[].chain                                 | string         | The chain, i.e. "mainnet" or "fuji".                                                                           |
| \[].validatorsPerChain\[].fees                                  | string         | Amount of fees to deduce for the user.                                                                         |
| \[].validatorsPerChain\[].rewards                               | string         | Amount of rewards in nAvax earned by the user during the period of the report.                                 |
| \[].validatorsPerChain\[].rewardsAfterFees                      | string         | Rewards minus fees for the user.                                                                               |
| \[].validatorsPerChain\[].staked                                | string         | Amount that is being staked in nAvax at the end of the report for all validators.                              |
| \[].validatorsPerChain\[].totalActiveValidators                 | number         | Amount of validators that staked during the report period.                                                     |
| \[].validatorsPerChain\[].totalCurrentValidators                | number         | Amount of validators that are currently staking.                                                               |
| \[].validatorsPerChain\[].totalInactiveValidators               | number         | Amount of validators that did not stake during the report period.                                              |
| \[].validatorsPerChain\[].totalWeightedValidators               | string         | Sum of every day that the validator was staking during the period divided by the number of days of the period. |
| \[].validatorsPerChain\[].validatorsActive                      | object\[]      | Array of validators that staked during the report's period.                                                    |
| \[].validatorsPerChain\[].validatorsActive\[].activeDays        | number         | Number of days the validator has been staking during the period.                                               |
| \[].validatorsPerChain\[].validatorsActive\[].avalancheNodeId   | string         | Avalanche Id from the network of validators.                                                                   |
| \[].validatorsPerChain\[].validatorsActive\[].createdAt         | string         | Validator's creation date.                                                                                     |
| \[].validatorsPerChain\[].validatorsActive\[].fees              | string         | Amount of fees to deduce for the validator.                                                                    |
| \[].validatorsPerChain\[].validatorsActive\[].rewards           | string         | Amount of rewards earned by the validator during the period of the report.                                     |
| \[].validatorsPerChain\[].validatorsActive\[].rewardsAfterFees  | string         | Validator's rewards minus fees.                                                                                |
| \[].validatorsPerChain\[].validatorsActive\[].runningDays       | string         | Number of days the validator's been running since its creation until the present day or its deletion.          |
| \[].validatorsPerChain\[].validatorsActive\[].staked            | string         | Amount that is being staked in nAvax at the end of the report.                                                 |
| \[].validatorsPerChain\[].validatorsInactive                    | object \[]     | Array of validators that did not stake during the report's period.                                             |
| \[].validatorsPerChain\[].validatorsInactive\[].avalancheNodeId | string         | Avalanche Id from the network of validators.                                                                   |
| \[].validatorsPerChain\[].validatorsInactive\[].createdAt       | string         | Validator's creation date.                                                                                     |
| \[].validatorsPerChain\[].validatorsInactive\[].deletedAt       | string \| null | Validator's deletion date.                                                                                     |
| \[].validatorsPerChain\[].validatorsInactive\[].runningDays     | string         | Number of days the validator's been running since its creation until the present day or its deletion.          |

#### Sample response

```json
[
  {
    "organization": "org-00000000-0000-5000-b000-000000000000",
    "organizationName": "Org test",
    "reportFrom": "2023-01-27",
    "reportTo": "2023-02-25",
    "user": "user-00000000-0000-4000-00000000000000000",
    "userEmail": "test@bloq.com",
    "userName": "Test user",
    "validatorsPerChain": [
      {
        "chain": "mainnet",
        "fees": "28703148",
        "rewards": "717578700",
        "rewardsAfterFees": "688875552",
        "staked": "2000000000",
        "totalActiveValidators": 1,
        "totalCurrentValidators": 0,
        "totalInactiveValidators": 0,
        "totalWeightedValidators": 0.6,
        "validatorsActive": [
          {
            "activeDays": 15,
            "avalancheNodeId": "NodeID-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "createdAt": "2022-12-29T18:07:27.364Z",
            "fees": "28703148",
            "rewards": "717578700",
            "rewardsAfterFees": "688875552",
            "runningDays": 60,
            "staked": "2000000000"
          }
        ],
        "validatorsInactive": []
      },
      {
        "chain": "fuji",
        "fees": "0",
        "rewards": "23331848",
        "rewardsAfterFees": "23331848",
        "staked": "2500000000",
        "totalActiveValidators": 1,
        "totalCurrentValidators": 1,
        "totalInactiveValidators": 1,
        "totalWeightedValidators": 0.5,
        "validatorsActive": [
          {
            "activeDays": 14,
            "avalancheNodeId": "NodeID-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
            "createdAt": "2023-01-04T20:59:35.909Z",
            "fees": "0",
            "rewards": "23331848",
            "rewardsAfterFees": "23331848",
            "runningDays": 54,
            "staked": "2500000000"
          }
        ],
        "validatorsInactive": [
          {
            "avalancheNodeId": "NodeID-zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz",
            "createdAt": "2023-01-04T20:59:35.909Z",
            "runningDays": 54
          }
        ]
      }
    ]
  }
]
```

#### If the `accept` header is `text/csv`

| Property         | Type           | Description                                                                                           |
| ---------------- | -------------- | ----------------------------------------------------------------------------------------------------- |
| activeDays       | number         | Number of days the validator has been staking during the period.                                      |
| avalancheNodeId  | string         | Avalanche Id from the network of validators.                                                          |
| chain            | string         | The chain, i.e. "mainnet" or "fuji".                                                                  |
| createdAt        | string         | Validator's creation date.                                                                            |
| deletedAt        | string \| null | Validator's deletion date.                                                                            |
| fees             | string         | Amount of fees to deduce for the validator.                                                           |
| organization     | string         | The organization Id where the user belongs to.                                                        |
| organizationName | string         | The organization name the validator belongs to.                                                       |
| reportFrom       | string         | Report's starting date.                                                                               |
| reportTo         | string         | Report's end date.                                                                                    |
| rewards          | string         | Amount of rewards earned by the validator during the period of the report.                            |
| rewardsAfterFees | string         | Validator's rewards minus fees.                                                                       |
| runningDays      | string         | Number of days the validator's been running since its creation until the present day or its deletion. |
| staked           | string         | Amount that is being staked in nAvax at the end of the report.                                        |
| user             | string         | User Id.                                                                                              |
| userEmail        | string         | The user email.                                                                                       |
| userName         | string         | The user name.                                                                                        |

#### Sample response

```
activeDays,avalancheNodeId,chain,createdAt,deletedAt,fees,organization,organizationName,reportFrom,reportTo,rewards,rewardsAfterFees,runningDays,staked,user,userEmail,userName
15,NodeID-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,mainnet,2022-12-29T18:07:27.364Z,,28703148,org-00000000-0000-5000-b000-000000000000,Org test,2023-01-27,2023-02-25,717578700,688875552,60,2000000000,user-00000000-0000-4000-00000000000000000,test@bloq.com,Test user
14,NodeID-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy,fuji,2023-01-04T20:59:35.909Z,,0,org-00000000-0000-5000-b000-000000000000,Org test,2023-01-27,2023-02-25,23331848,23331848,54,2500000000,user-00000000-0000-4000-00000000000000000,test@bloq.com,Test user
,NodeID-zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz,fuji,2023-01-04T20:59:35.909Z,,0,org-00000000-0000-5000-b000-000000000000,Org test,2023-01-27,2023-02-25,,,54,,user-00000000-0000-4000-00000000000000000,test@bloq.com,Test user
```

## DELETE /staking/avalanche/{chain}/validators/{id}

Terminates a validator.

### Parameters

| Name          | In     | Type   | Required | Description                                 |
| ------------- | ------ | ------ | -------- | ------------------------------------------- |
| chain         | path   | string | yes      | The validator's chain: "mainnet" or "fuji". |
| id            | path   | string | yes      | The validator's Id.                         |
| Authorization | header | string | yes      | The authentication token.                   |

#### Sample request

```shell
curl -X DELETE https://api.bloq.com/staking/avalanche/fuji/validators/node-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  -H 'Authorization: Bearer <auth-token>'
```

### Response

| Status | Description                                               |
| ------ | --------------------------------------------------------- |
| 204    | The validator was deleted.                                |
| 403    | The authorization token is invalid.                       |
| 404    | The validator was not found.                              |
| 409    | The validator is actively staking, and cannot be deleted. |

## Error responses

All error responses are JSON objects that loosely follow the [RFC 7807](https://datatracker.ietf.org/doc/html/rfc7807) specification.

```json
{
  "status": 403,
  "title": "Forbidden",
  "detail": "The authorization token is expired."
}
```


---

# 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, and the optional `goal` query parameter:

```
GET https://docs.bloq.com/bloq-services/bloqstake/avalanche/api-routes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
