# Dashboard API

The dashboard API can be used by developers to access information on tokens, wallets and more.

## Tokenomics History

Hourly summaries for charting staking and circulating supply over the past 30 days.

{% embed url="<https://api.andromedaprotocol.io/v1/tokenomics/history?limit=1>" %}

#### Curl

```bash
curl -X GET "https://api.andromedaprotocol.io/v1/tokenomics/history?limit=1"
```

#### Example&#x20;

Get the circluating supply for ANDR token.

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

```javascript
import fetch from 'node-fetch';

// Define the API endpoint
const url = "https://api.andromedaprotocol.io/v1/tokenomics/history?limit=1";

// Fetch data from the API
fetch(url)
  .then(response => {
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    return response.json();
  })
  .then(data => {
    // Check if the result array exists and has at least one element
    if (data.result && data.result.length > 0) {
      const circulatingSupply = data.result[0].circulating_supply;
      console.log(circulatingSupply);
    } else {
      console.log('No result data found');
    }
  })
  .catch(error => {
    console.error('Error fetching data:', error);
  });
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

# Define the API endpoint
url = "https://api.andromedaprotocol.io/v1/tokenomics/history?limit=1"

# Fetch data from the API
response = requests.get(url)

# Check if the request was successful
if response.status_code == 200:
    data = response.json()
    # Check if the result array exists and has at least one element
    if 'result' in data and len(data['result']) > 0:
        circulating_supply = data['result'][0]['circulating_supply']
        print(circulating_supply)
    else:
        print('No result data found')
else:
    print(f"Failed to retrieve data: {response.status_code}")
```

{% endtab %}
{% endtabs %}

## Wallets

&#x20;Track known wallets for big activity & enhance security through community monitoring.

{% embed url="<https://api.andromedaprotocol.io/v1/tokenomics/wallets>" %}

#### Curl

```bash
curl -X GET "https://api.andromedaprotocol.io/v1/tokenomics/wallets"
```

### Example

Get the top 5 wallets with most ANDR tokens.

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

```javascript
import fetch from 'node-fetch';

// Define the API endpoint
const url = "https://api.andromedaprotocol.io/v1/tokenomics/wallets";

// Fetch data from the API
fetch(url)
  .then(response => {
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    return response.json();
  })
  .then(data => {
    // Check if the result array exists and has at least one element
    if (data.result && data.result.length > 0) {
      // Sort wallets by balance in descending order and get the top 5
      const topHolders = data.result.sort((a, b) => b.balance - a.balance).slice(0, 5);
      topHolders.forEach((holder, index) => {
        console.log(`${index + 1}. Address: ${holder.address}, Balance: ${holder.balance}`);
      });
    } else {
      console.log('No wallets data found');
    }
  })
  .catch(error => {
    console.error('Error fetching data:', error);
  });
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

# Define the API endpoint
url = "https://api.andromedaprotocol.io/v1/tokenomics/wallets"

# Fetch data from the API
response = requests.get(url)

# Check if the request was successful
if response.status_code == 200:
    data = response.json()
    # Check if the result array exists and has at least one element
    if 'result' in data and len(data['result']) > 0:
        top_holders = sorted(data['result'], key=lambda x: x['balance'], reverse=True)[:5]
        for i, holder in enumerate(top_holders, 1):
            print(f"{i}. Address: {holder['address']}, Balance: {holder['balance']}")
    else:
        print('No wallets data found')
else:
    print(f"Failed to retrieve data: {response.status_code}")
```

{% endtab %}
{% endtabs %}

## Vesting Emissions

Get real-time vesting emission rates & project token releases for the next 2 years.

{% hint style="warning" %}
You can define the timestamp to get the emission rate for at the end of the URL as seen below.
{% endhint %}

{% embed url="<https://api.andromedaprotocol.io/v1/tokenomics/vesting-emission?timestamp=1721055818196>" %}

#### Curl

```bash
curl -X GET "https://api.andromedaprotocol.io/v1/tokenomics/vesting-emission?timestamp=1721055818196"
```

#### Example

Get vesting emission per second for the timestamp 1731055818196.

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

```javascript
import fetch from 'node-fetch';

// Define the API endpoint with the timestamp
const url = "https://api.andromedaprotocol.io/v1/tokenomics/vesting-emission?timestamp=1731055818196";

// Fetch data from the API
fetch(url)
  .then(response => {
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    return response.json();
  })
  .then(data => {
    // Check if 'vesting_emission_per_second' key exists in the data
    if (data.vesting_emission_per_second) {
      const vestingEmissionPerSecond = data.vesting_emission_per_second;
      console.log(`Vesting Emission Per Second: ${vestingEmissionPerSecond}`);
    } else {
      console.log('No vesting emission per second data found');
    }
  })
  .catch(error => {
    console.error('Error fetching data:', error);
  });
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

# Define the API endpoint with the timestamp
url = "https://api.andromedaprotocol.io/v1/tokenomics/vesting-emission?timestamp=1731055818196"

# Fetch data from the API
response = requests.get(url)

# Check if the request was successful
if response.status_code == 200:
    data = response.json()
    # Check if 'vesting_emission_per_second' key exists in the data
    if 'vesting_emission_per_second' in data:
        vesting_emission_per_second = data['vesting_emission_per_second']
        print(f"Vesting Emission Per Second: {vesting_emission_per_second}")
    else:
        print('No vesting emission per second data found')
else:
    print(f"Failed to retrieve data: {response.status_code}")
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: 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.andromedaprotocol.io/andromeda/andromeda-dashboard/dashboard-api.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.
