---
title: API
---



# API

## Introduction

Omnid aggregates multiple on/off-chain ***sources of reputation*** into an overall social graph where each source counts towards some points in building the overall TrustScore for any Ethereum Address. This score is continuously evolving. As more platforms get integrated, the weights and the score will update too.

## Current Integrations and Score Weightage

| # | Integration | Key | Factors and Score |
| - |---------------------	|----	| --- |
| 1 | [Aave](https://aave.com)  | `aave` | - totalCollateralETH <br/> - totalDebtETH <br/> - availableBorrowsETH <br/> - currentLiquidationThreshold<br/> - ltv<br/> - healthFactor <br/> Across: Main Market, AMM Market, Polygon Market, Avalanche Market	|
| 2 | Age  | `age` | Age of Ethereum Address in days on, <br/>- Ethereum Mainnet <br/>- Polygon Mainnet |
| 3 | [ArcX](http://arcx.money/) | `arcx` | - Points for each indexed ArcX Score |
| 4 | [Async Art](https://async.art/) |  `asyncart` | - NFTs Sold <br/>- Average Sale Value |
| 5 | [Boardroom](https://boardroom.info/) |  `boardroom` |- Number of Votes given <br/>- DAOs participated In <br/>- Voting History  |
| 6 | [BrightId](https://www.brightid.org/) | `brightid` | 37 Points for Verification |
| 7 | [Celo Verified Attestations](https://docs.celo.org/validator-guide/attestation-service#:~:text=What%20is%20an%20Attestation%20Service,Celo%20account%2C%20securely%20and%20privately.) | `celo` | 1 Point for each valid Attestation |
| 8 | [Coinvise](http://coinvise.co/) |  `coinvise` |- Tokens Created(a) : (a)^0.5 Points <br/>- NFTs Created(b) : (b)^0.5 Points  <br/>- Total NFTs Sold(c): c Points <br/>- Airdrops Sent(d): d Points <br/>- Multisends(e): e Points <br/>- Liquidity Pools Created(f): f Points 	|
| 9 | [Context](http://context.app/)  | `context` |- Followers <br/>- Folowing	|
| 10 | [Coordinape](http://coordinape.com/) |  `coordinape` | Number of teammates. |
| 11 | [CryptoScamDB](https://cryptoscamdb.org/) |  `cryptoscamdb` | -20 Points for being flagged |
| 12 | [Cyberconnect](https://cyberconnect.me/)  |  `cyberconnect` | - Followers <br/>- Following  <br/>- Social  <br/>- Display Name 	|
| 13 | [Dapplist](https://thedapplist.com/)  | `dapplist` |- Dapps Hunted <br/>- XP 	|
| 14 | [DeBank](https://debank.com/ranking)  | `debank` | - base_score <br/>- rank <br/>- social_coefficient <br/>- social_score <br/>- total_score |
| 15 | [DeepDAO](https://deepdao.io/) | `deepdao` | - score <br/>- rank <br/>- relativeScore <br/>- daos <br/>- proposals <br/>- votes |
| 16 | [ENS](https://ens.domains/) | `ens` |10 Points for Reverse Resolution to your Address. |
| 17 | [Etherscan](http://etherscan.io/) | `etherscan` |Flagged Labels like Akropolis Hacker |
| 18 | [Forta](forta.network) | `forta` |- Number of 'HIGH', 'MEDIUM', 'CRITICAL' Alerts  |
| 19 | [Foundation](https://foundation.app/) | `foundation` | - NFTs Sold <br/>- Average Sale Value <br/>- Followers <br/>- Following |
| 20 | [Gitcoin](https://gitcoin.co/) | `gitcoin` | 10 Points for funding a Grant. |
| 21 | [Hive.one](https://hive.one/) | `hiveone` | Points for, <br/>- Attention Score <br/>-Insider Score |
| 22 | [Idena](https://www.idena.io/) | `idena` | 1 Point for Verification |
| 23 | [Karma Protocol](https://showkarma.xyz/) | `karma` |- Karma Score |
| 24 | [Known Origin](https://knownorigin.io/) | `knownorigin` |- NFTs Sold <br/>- Average Sale Value |
| 25 | [Lens Protocol](https://lens.dev/) | `lens` |- Lens Profile |
| 26 | [Metagame](https://wiki.metagame.wtf/) | `metagame` |Season XP ** 0.5 |
| 27 | [MyEtherWallet](https://github.com/MyEtherWallet/ethereum-lists/blob/master/src/addresses/addresses-darklist.json) | `mew` | -20 on being Blacklisted |
| 28 | [Mirror](https://mirror.xyz/) | `mirror` |10 Points for being a writer on Mirror |
| 29 | [POAP](https://poap.xyz/) | `poap` |1 Point for Each POAP Received |
| 30 | [Proof of Humanity](https://proofofhumanity.id/) | `poh` |8 Points for Verification |
| 31 | [Proof of Personhood](https://proofofpersonhood.com/) | `pop` | - Price of Forgery <br/>- Personhood Score |
| 32 | [Polygon Ecosystem](https://analytics.polygon.technology/score/docs) | `polygon` |Relative Score out of 100 based on, <br/>- Number of Transactions <br/>- Net Volume Transacted <br/> - Retention |
| 33 | [Project Galaxy](https://galaxy.eco/) | `projectgalaxy` |1 Point for each Eligible Credential |
| 34 | [RabbitHole](https://rabbithole.gg/) | `rabbithole` |- Points equal to the Levels you cross on RabbitHole.  <br/>- TaskIDs of the tasks Completed  |
| 35 | [Rarible](https://rarible.com/) | `rarible` |- Total NFTs Sold <br/>- Total NFTs Created <br/>- Total NFTs Owned <br/>- Average Sale Value <br/>- Followers <br/>- Following	|
| 36 | [RSS3](https://rss3.io/)  | `rss3` | - Profile <br/>- Backlinks  <br/>- Accounts  <br/>- Links 	|
| 37 | [Showtime](https://showtime.io) |`showtime` | - Followers <br/>- Following 	|
| 38 | [SuperRare](https://superrare.com/)     |`superrare` | - NFTs Sold <br/>- Average Sale Value<br/>- Followers<br/>- Following |
| 39 | [Unipass](https://unipass.id/) | `unipass` | Points for Level |
| 40 | [Uniswap Sybil](https://sybil.org/) | `uniswap` |10 Points for Verification |
| 41 | [Unstoppable Domains](https://unstoppabledomains.com/) 	| `unstoppable` |10 Points for Reverse Reslution to your Address. |
| 42 | [Yup](https://yup.io/) | `yup` | - Yup Score  |
| 43 | [Zapper](https://zapper.fi/) | `zapper` |- Following <br/> - Followers <br/> - xp <br/>- zp
| 44 | [Zora](https://zora.co/) | `zora` |- Number of NFTs Sold <br/>- Average Sale Value |

Upcoming, Toucan's Carbon Offsets.

## Integration

<Callout emoji="ℹ️">
	You can add a `noCache=true` query paramter to manually rebuild and cache the Social Graph anytime. Otherwise our indexers update your score every 8 hours.
</Callout>

### Querying TrustScore

API Request format,
```html
https://theconvo.space/api/identity?address=<ethereum-address-or-ens>&apikey=<apikey>
```


Example 1,
```html
https://theconvo.space/api/identity?address=vitalik.eth&apikey=<apikey>
```

<details>
<summary>View Response</summary>

```json
{
   "_id":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
   "_mod":1637202971089432300,
   "asyncart":{
      "totalCountSold":0,
      "totalAmountSold":0
   },
   "brightId":false,
   "celo":{
      "attestations":0
   },
   "coinvise":{
      "tokensCreated":0,
      "nftsCreated":0,
      "totalCountSold":0,
      "totalAmountSold":0,
      "totalPoolTvl":0,
      "totalPoolCount":0,
      "multisendCount":0,
      "airdropCount":0
   },
   "coordinape":{},
   "cryptoScamDb":false,
   "cyberconnect":{
      "displayName":"",
      "address":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
      "followingCount":0,
      "followerCount":610,
      "social":{
         "twitter":""
      }
   },
   "deepdao":0,
   "ens":"vitalik.eth",
   "foundation":{
      "totalCountSold":0,
      "totalAmountSold":0,
      "followerCount":0,
      "followingCount":0
   },
   "gitcoin":{
      "funder":true
   },
   "idena":false,
   "knownorigin":{
      "totalCountSold":0,
      "totalAmountSold":0
   },
   "mirror":false,
   "poap":46,
   "poh":false,
   "polygon":{
      "Score100":0
   },
   "rabbitHole":{
      "level":1,
      "tasksCompleted":[
         "UNI_V2_SWAP",
         "GNOSIS_SAFE_OWNER"
      ]
   },
   "rarible":{
      "totalCountSold":0,
      "totalAmountSold":0,
      "ownershipsWithStock":0,
      "itemsCreated":68,
      "ownerships":246,
      "hides":0,
      "followers":29,
      "following":0,
      "likes":0
   },
   "score":56,
   "showtime":{},
   "signature":"0x2957611d54f484111b74122da81c419cb3524fdba35ac93286cc919d5585e6de2e6d225e681033837527a006c2464062f44b20b138fc516cc227f0868dfd786a1c",
   "signatureAddress":"0xCCcccCcC54317EE02C2dBfdD832a67C7acD28e06",
   "success":true,
   "superrare":{
      "totalCountSold":0,
      "totalAmountSold":0,
      "following":0,
      "followers":0
   },
   "uniswapSybil":false,
   "unstoppableDomains":false,
   "zora":{
      "totalCountSold":0,
      "totalAmountSold":0
   },
   "rss3":{
      "profile":{},
      "backlinks":[],
      "accounts":[],
      "links":[]
   },
   "aave":{
      "totalHf":0,
      "mainMarket":{
         "healthFactor":false
      },
      "ammMarket":{
         "healthFactor":false
      },
      "polygonMarket":{
         "healthFactor":false
      },
      "avalancheMarket":{
         "healthFactor":false
      }
   },
   "context":{
      "followerCount":13,
      "followingCount":null
   },
   "age":2266,
   "arcx":{
      "totalScore":0,
      "details":{}
   },
   "boardroom":{
      "totalVotes":0,
      "daos":[],
      "votes":[]
   }
}
```
</details>

Example 2,
```html
https://theconvo.space/api/identity?address=0xD665afb9A4019a8c482352aaa862567257Ed62CF&apikey=<apikey>
```
<details>
<summary>View Response</summary>

```json
{
   "_id":"0xD665afb9A4019a8c482352aaa862567257Ed62CF",
   "_mod":1636426686535476700,
   "asyncart":{
      "totalCountSold":0,
      "totalAmountSold":0
   },
   "brightId":false,
   "celo":{
      "attestations":0
   },
   "coinvise":{
      "tokensCreated":0,
      "nftsCreated":0,
      "totalCountSold":0,
      "totalAmountSold":0,
      "totalPoolTvl":0,
      "totalPoolCount":0,
      "multisendCount":0,
      "airdropCount":0,
      "following":0,
      "followers":0
   },
   "coordinape":null,
   "cryptoScamDb":false,
   "deepdao":{
      "score":0,
      "rank":0,
      "relativeScore":0,
      "daos":0,
      "proposals":0,
      "votes":0
   },
   "ens":false,
   "foundation":{
      "totalCountSold":18,
      "totalAmountSold":2350717.40778,
      "followers":1604,
      "following":48
   },
   "gitcoin":{
      "funder":false
   },
   "idena":false,
   "knownorigin":{
      "totalCountSold":3,
      "totalAmountSold":16306.515
   },
   "mirror":false,
   "poap":1,
   "poh":false,
   "polygon":{
      "Score100":0
   },
   "rabbitHole":{
      "level":1,
      "tasksCompleted":[
         "SEA1",
         "SEA2",
         "UNI_V3_SWAP",
         "UNI_V2_SWAP",
         "SNAPSHOT_VOTE"
      ]
   },
   "rarible":{
      "totalCountSold":15,
      "totalAmountSold":728891.55738,
      "ownershipsWithStock":1,
      "itemsCreated":94,
      "ownerships":52,
      "hides":0,
      "followers":2219,
      "following":108,
      "likes":33
   },
   "score":1,
   "showtime":{

   },
   "signature":"0xcdadeac74b4fd888edb17edc5bf6c2f10f039f141f74280f93b69014942bc9783babb1d6f8c456c38c581a52876d8b69640710a58ab253210a2ee73d3a83a7e81c",
   "signatureAddress":"0xccccA960A949eaa4d963f0cE29170AD55D4F5E49",
   "success":true,
   "superrare":{
      "totalCountSold":2,
      "totalAmountSold":28718.991565550437,
      "following":36,
      "followers":72
   },
   "uniswapSybil":false,
   "unstoppableDomains":false,
   "zora":{
      "totalCountSold":0,
      "totalAmountSold":0
   },
   "aave":{
      "totalHf":0,
      "mainMarket":{
         "healthFactor":false
      },
      "ammMarket":{
         "healthFactor":false
      },
      "polygonMarket":{
         "healthFactor":false
      },
      "avalancheMarket":{
         "healthFactor":false
      }
   },
   "age":340,
   "context":{
      "followerCount":4,
      "followingCount":null
   },
   "cyberconnect":{
      "displayName":"",
      "followingCount":0,
      "followerCount":0,
      "social":{
         "twitter":"TheArchangel22"
      }
   },
   "rss3":{
      "profile":{},
      "backlinks":[],
      "accounts":[],
      "links":[]
   },
   "arcx":{
      "totalScore":0,
      "details":{}
   },
   "boardroom":{
      "totalVotes":0,
      "daos":[],
      "votes":[]
   }
}
```
</details>

### Verifying Response Signature

<Callout emoji="ℹ️">
	Omnid uses `0xCCcccCcC54317EE02C2dBfdD832a67C7acD28e06` as SignatureAddress to sign the oracle data.
</Callout>


```javascript
const { utils } = require('ethers');

let resp = await fetch('https://theconvo.space/api/identity?address=vitalik.eth&apikey=<apikey>');
let { signature, signatureAddress, _mod, ...scoreData } = await resp.json();
let recoveredAddress = utils.verifyMessage(JSON.stringify(scoreData), signature);
console.log( recoveredAddress === signatureAddress );
```


## ZK Identity

Using a naive implementation of a Range Proof SNARK, we create a circuit to generate a proof of: whether a TrustScore is within a specific range (nearest-tenths in this case) without revealing the original score. Soon, this will also allow you to verify membership in categories/sources of reputation without revealing any personal traits.

### Generating ZkProof

API Request format,
```html
https://theconvo.space/api/zkidentity?address=<ethereum-address-or-ens>&apikey=<apikey>
```
<details>
<summary>View Response</summary>

```json
{
   //score data,
   "inputs": [
      "0x000000000000000000000000000000000000000000000000000000000000003c",
      "0x0000000000000000000000000000000000000000000000000000000000000046",
      "0x0000000000000000000000000000000000000000000000000000000000000001"
   ],
   "proof": [
      [
         "0x2350f8a0e2632b6a6263f25399cccd7acac5071374deb3dfddc7a8f6403cda72",
         "0x2dcf696d400516b327bb793d7163353dbfa15f43ac55beb18dde9b76cc0b8629"
      ],
      [
         [
            "0x1e0741e5371dfb9b5d64a3648f6a00bd3ddd1f49773dd7e39d8e80f9528fb9c5",
            "0x065cda7a43fc0f9c9020222850a5ad926cedc7d6bddf239d034454bed5c4bd78"
         ],
         [
            "0x1cd443e08a0b98bd0ee6dabcb52d928993bc7565035e2fe14a0720415d284d6f",
            "0x03f5ca544c64be5a2215baba2a7d6e8b3554dd4a4087cd09fa9ee50557de3ee4"
         ]
      ],
      [
         "0x03e301fc3938c14a158ab393095fdcd86f6e0dd49838ce322940228f3fdd3c80",
         "0x28143f38cfd83b3151739f2ce1ed2aeeb3f23230b56a8c46d2354a853e4b2e05"
      ]
   ]
}
```
</details>


### Verifying ZkProof
- Contract Address: `0x1cb460256bcece9aa216e80ccff5c3b98f8c9263` [View on PolygonScan](https://mumbai.polygonscan.com/address/0x1cb460256bcece9aa216e80ccff5c3b98f8c9263#readContract)


```javascript
const { ethers } = require('ethers');

let resp = await fetch('https://theconvo.space/api/zkidentity?address=vitalik.eth');
let { inputs, proof } = await resp.json();
let verifierAddress = "0x1cb460256bcece9aa216e80ccff5c3b98f8c9263";
let verifierAbi = [{"inputs":[{"components":[{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"a","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"b","type":"tuple"},{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"c","type":"tuple"}],"internalType":"struct Verifier.Proof","name":"proof","type":"tuple"},{"internalType":"uint256[3]","name":"input","type":"uint256[3]"}],"name":"verifyTx","outputs":[{"internalType":"bool","name":"r","type":"bool"}],"stateMutability":"view","type":"function"}];

const provider = new ethers.providers.JsonRpcProvider();
const verifier = new ethers.Contract(verifierAddress, verifierAbi, provider);
let resp = verifier.verifyTx(proof, inputs);

console.log( resp === true );
```


## Learn More
- [https://gov.gitcoin.co/t/the-gitcoin-anti-sybil-flywheel/9417](https://gov.gitcoin.co/t/the-gitcoin-anti-sybil-flywheel/9417)
 - [https://gitcoin.co/blog/a-community-based-roadmap-for-sybil-detection-across-web-3/](https://gitcoin.co/blog/a-community-based-roadmap-for-sybil-detection-across-web-3/)
- [The Laws of Identity - Kim Cameron](https://www.identityblog.com/stories/2005/05/13/TheLawsOfIdentity.pdf)
