# Score API

The Yup Score provides a reputation metric for every EVM/Ethereum address by aggregating their on-chain actions and ranking them between 1-100. The weight of each action is determined by its social value.\
\
**Base URL:** [**`https://api.yup.io`**](https://api.yup.io)

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

| Method | Endpoint                              | Description                                                                                                                                      |
| ------ | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `GET`  | `/score?address={ENS or ETH address}` | <p>Returns a reputation score from 0-100 for an EVM address or ENS name<br><strong>Query params:</strong> {address} - any EVM address or ENS</p> |
| `GET`  | `/score/weights`                      | Returns a json object with the current weights, names, and values                                                                                |

**Rate limits:** *50* requests per minute, per IP

**Scores TTL:** currently scores are refreshed after **1 day**
{% endtab %}

{% tab title="Score Response Example" %}

```javascript
{
   "data":{
      "id":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
      "yup_score":86,
      "expiration":"2022-06-02T03:14:55.836652Z",
      "last_updated":"2022-06-01T03:14:55.836652Z",
      "score_data":{
         "score":86.37999570482314,
         "ens":{
            "score":53.8,
            "primary":"vitalik.eth",
            "domains":[
               {
                  "name":"vbuterin.eth",
                  "owner":{
                     "id":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"
                  }
               },
               ...
            ],
            "count":19
         },
         "eth_balance": {
            "score": 100,
            "balance": 4092.474632847039,
            "chain_id": "1"
         },
         "eth_nfts":{
            "score":100,
            "foundation":0,
            "bayc":0,
            "superrare":0,
            "ens":3
         },
         "gnosis_nfts":{
            "score":25,
            "poap":47,
            "kudos":0
         },
         "polygon_nfts":{
            "score":100,
            "ud":0,
            "git":0
         },
         "polygon_balance":{
            "score":78.51598768715968,
            "balance":39.25799384357984,
            "chain_id":"137"
         },
         "eth_activity":{
            "score":100,
            "activity":692.3058773187234
         },
         "eth_age":{
            "score":100,
            "age":638.1378441765851
         },
         "eth_txn_count":{
            "score":90.5,
            "count":805
         },
         "recent_polygon_transfers":{
            "score":0,
            "start_period":27779705,
            "end_period":29017311,
            "related_addresses":[],
            "chain":"137"
         },
         "recent_eth_transfers":{
            "score":100,
            "start_period":14689484,
            "end_period":14882507,
            "related_addresses":[
               "vitalik.eth",
               "dingaling.eth",
               "ʕ◕ᴥ◕ʔ.eth",
               "0x5ea9681c3ab9b5739810f8b91ae65ec47de62119",
               "tim.eth"
            ],
            "chain":"1"
         },
         "eth_erc20_tokens":{
            "score":100,
            "tokens_held":11
         },
         "snapshot_votes":{
            "score":0,
            "votes":null,
            "count":0
         },
         "poh":{
            "registered":false
         },
         "partial":false
      },
      "score_weights":{
         "ens":0.14,
         "eth_balance":0.15,
         "polygon_balance":0.15,
         "polygon_nfts":0.16,
         "gnosis_nfts":0.064,
         "eth_nfts":0.096,
         "eth_activity":0.08,
         "recent_polygon_transfers":0.04,
         "recent_eth_transfers":0.04,
         "snapshot_votes":0.04,
         "eth_erc20_tokens":0.04
      }
   }
}
```

{% endtab %}

{% tab title="Adapters Structure" %}

```
 Score               *float64               `json:"yup_score"`
 Ens                 *EnsResult             `json:"ens"`
 EthBalance          *NativeBalanceResult   `json:"eth_balance"`
 EthNfts             *NFTEthResult          `json:"eth_nfts"`
 GnosisNFts          *NFTGnosisResult       `json:"gnosis_nfts"`
 PolygonNfts         *NFTPolyResult         `json:"polygon_nfts"`
 PolygonBalance      *NativeBalanceResult   `json:"polygon_balance"`
 EthActivity         *EthActivityResult     `json:"eth_activity"`
 RecentPolyTransfers *RecentTransfersResult `json:"recent_polygon_transfers"`
 RecentEthTransfers  *RecentTransfersResult `json:"recent_eth_transfers"`
 EthERC20Tokens      *ETHERC20Result        `json:"eth_erc20_tokens"`
 Snapshot            *SnapshotResult        `json:"snapshot_votes"`
 PoH                 *PoHResult             `json:"poh"`
 Partial             bool                   `json:"partial"`
```

{% endtab %}
{% endtabs %}

## Adapters

### Description

Each adapter calculates a score based on an accounts onchain activity. Adapter scores are weighted and summed to generate the final Yup score.

{% tabs %}
{% tab title="Adapters Description" %}

| Adapter                   | Description                                                        |
| ------------------------- | ------------------------------------------------------------------ |
| ENS                       | retrieves ENS domains held                                         |
| Ethereum Balance          | retrieves Ethereum balance                                         |
| Polygon Balance           | retrieves Polygon balance                                          |
| Ethereum NFTs             | retrieves Ethereum NFTs held                                       |
| Gnosis NFTs               | retrieves Gnosis (xDai) NFTs held                                  |
| Polygon NFTs              | retrieves Polygon NFTs held                                        |
| Ethereum Activity         | retrieves Ethereum tx count and account age                        |
| Recent Polygon Transfers  | retrieves recent transfers on Polygon and finds related addresses  |
| Recent Ethereum Transfers | retrieves recent transfers on Ethereum and finds related addresses |
| Ethereum ERC20 Tokens     | retrieves ERC20 tokens held                                        |
| Snapshot                  | retrieves snapshot vote count                                      |
| Proof of Humanity (PoH)   | retrieves PoH status                                               |
| {% endtab %}              |                                                                    |

{% tab title="Adapters Impact" %}

| Adapter Name              | Description                             |
| ------------------------- | --------------------------------------- |
| ENS                       | by weight                               |
| Ethereum Balance          | by weight                               |
| Polygon Balance           | by weight                               |
| Ethereum NFTs             | by weight                               |
| Gnosis NFTs               | by weight                               |
| Polygon NFTs              | by weight                               |
| Ethereum Activity         | by weight                               |
| Recent Polygon Transfers  | by weight                               |
| Recent Ethereum Transfers | by weight                               |
| Ethereum ERC20 Tokens     | by weight                               |
| Snapshot                  | by weight                               |
| Proof of Humanity         | boosts total score by 10% if registered |
| {% 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.yup.io/protocol/yup-score/score-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.
