Personalized - Extended Network API

OpenRank APIs for personalized extended network of a particular profile

Extended Network: Personalized Engagement Trust Graph

Discover the extended network of a profile via Farcaster EOA addresses or FIDs with the capability of defining a specified level of depth of network (hops). You can choose extended network based on the 'following' or 'engagement' strategy.

EOA = Externally Owned Account

FIDs = Farcaster Identities

List of Available Endpoints

  • Personalized Engagement Score by Addresses: To lookup an extended network of trustworthy neighboring EOAs by EOA addresses

  • Personalized Engagement Score by Handles: To lookup an extended network of trustworthy neighboring accounts by Farcaster handle names

  • Personalized Engagement Scores by Farcaster ID (fid): To lookup an extended network of trustworthy neighboring accounts by Farcaster IDs

Personalized Engagement Score by Addresses

Endpoint: /scores/personalized/engagement/addresses

Parameters: an array of addresses in the request body and 2 optional parameters (k, limit) where k is the degree (max 5) of separation and limit is the number of rows to be returned (max 1000).

Example below using curl:

curl -X 'POST' \
'https://graph.cast.k3l.io/scores/personalized/engagement/addresses?k=2&limit=100' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'  \
-d '["0xd7029bdea1c17493893aafe29aad69ef892b8ff2", "0x8fc5d6afe572fefc4ec153587b63ce543f6fa2ea"]' 

Personalized Engagement Score by Handles

Endpoint: /scores/personalized/engagement/handles

Parameters: an array of handles and 2 optional parameters (k, limit).

Example below using curl:

curl -X 'POST' \
'https://graph.cast.k3l.io/scores/personalized/engagement/handles?k=2&limit=100' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'  \
-d '["vitalik.eth", "dwr.eth"]'

Note:

  • The graph is now based on fids which have a tight mapping to fnames and usernames, so you will not get duplicate rows when you query by handles (fname or username). But, you may still get duplicate rows if you query the graph with addresses because many farcaster profiles have more than 1 address associated.

  • the results are sorted by score.

  • the scores in the result set are relative scores personalized for the input. They have no global significance.

Personalized Engagement Scores by Farcaster ID (fid)

Endpoint: /scores/personalized/engagement/fids

Parameters: an array of fids and 2 optional parameters (k, limit).

Example below using curl:

curl -X 'POST' \
'https://graph.cast.k3l.io/scores/personalized/engagement/fids?k=2&limit=100' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'  \
-d '[5650, 3]' 

Note:

  • The graph is now based on fids, so you will not get duplicate rows unless you query the graph with addresses in which case you may get duplicate rows because many farcaster profiles have more than 1 address associated.

  • the results are sorted by score.

  • the scores in the result set are relative scores personalized for the input. They have no global significance.

Personalized Score API Documentation

Tryout the APIs here! — https://graph.castk3l.io/docs

Get Personalized Engagement For Addresses

Given a list of input addresses, return a list of addresses trusted by the extended network of the input addresses.

The addresses in the result are ranked by a relative scoring mechanism that is based on the EigenTrust algorithm.

The extended network is derived based on a BFS traversal of the social engagement graph upto k degrees and until limit is reached.

Example: ["0x4114e33eb831858649ea3702e1c9a2db3f626446", "0x8773442740c17c9d0f0b87022c722f9a136206ed"]

IMPORTANT: Please use HTTP POST method and not GET method.

POST/scores/personalized/engagement/addresses
Query parameters
Body
itemsstring
Response

Successful Response

Body
any
Request
const response = await fetch('/scores/personalized/engagement/addresses', {
    method: 'POST',
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify([
      "text"
    ]),
});
const data = await response.json();

Get Personalized Following For Addresses

Given a list of input addresses, return a list of addresses trusted by the extended network of the input addresses.

The addresses in the result are ranked by a relative scoring mechanism that is based on the EigenTrust algorithm.

The extended network is derived based on a BFS traversal of the social following graph upto k degrees and until limit is reached.

Example: ["0x4114e33eb831858649ea3702e1c9a2db3f626446", "0x8773442740c17c9d0f0b87022c722f9a136206ed"]

IMPORTANT: Please use HTTP POST method and not GET method.

POST/scores/personalized/following/addresses
Query parameters
Body
itemsstring
Response

Successful Response

Body
any
Request
const response = await fetch('/scores/personalized/following/addresses', {
    method: 'POST',
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify([
      "text"
    ]),
});
const data = await response.json();

Get Personalized Engagement For Handles

Given a list of input handles, return a list of handles trusted by the extended network of the input handles.

The addresses in the result are ranked by a relative scoring mechanism that is based on the EigenTrust algorithm.

The extended network is derived based on a BFS traversal of the social engagement graph upto k degrees and until limit is reached.

Example: ["farcaster.eth", "varunsrin.eth", "farcaster", "v"]

IMPORTANT: Please use HTTP POST method and not GET method.

POST/scores/personalized/engagement/handles
Query parameters
Body
itemsstring
Response

Successful Response

Body
any
Request
const response = await fetch('/scores/personalized/engagement/handles', {
    method: 'POST',
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify([
      "text"
    ]),
});
const data = await response.json();

Get Personalized Following For Handles

Given a list of input handles, return a list of handles trusted by the extended network of the input handles.

The addresses in the result are ranked by a relative scoring mechanism that is based on the EigenTrust algorithm.

The extended network is derived based on a BFS traversal of the social following graph upto k degrees and until limit is reached.

Example: ["farcaster.eth", "varunsrin.eth", "farcaster", "v"]

IMPORTANT: Please use HTTP POST method and not GET method.

POST/scores/personalized/following/handles
Query parameters
Body
itemsstring
Response

Successful Response

Body
any
Request
const response = await fetch('/scores/personalized/following/handles', {
    method: 'POST',
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify([
      "text"
    ]),
});
const data = await response.json();

Get Personalized Engagement For Fids

Given a list of input fids, return a list of fids trusted by the extended network of the input fids.

The addresses in the result are ranked by a relative scoring mechanism that is based on the EigenTrust algorithm.

The extended network is derived based on a BFS traversal of the social engagement graph upto k degrees and until limit is reached.

Example: [1, 2]

IMPORTANT: Please use HTTP POST method and not GET method.

POST/scores/personalized/engagement/fids
Query parameters
Body
itemsinteger
Response

Successful Response

Body
any
Request
const response = await fetch('/scores/personalized/engagement/fids', {
    method: 'POST',
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify([]),
});
const data = await response.json();

Get Personalized Following For Fids

Given a list of input fids, return a list of fids trusted by the extended network of the input fids.

The addresses in the result are ranked by a relative scoring mechanism that is based on the EigenTrust algorithm.

The extended network is derived based on a BFS traversal of the social following graph upto k degrees and until limit is reached.

Example: [1, 2]

IMPORTANT: Please use HTTP POST method and not GET method.

POST/scores/personalized/following/fids
Query parameters
Body
itemsinteger
Response

Successful Response

Body
any
Request
const response = await fetch('/scores/personalized/following/fids', {
    method: 'POST',
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify([]),
});
const data = await response.json();

Last updated