Neynar is set as the default provider. To choose a different provider, simply pass in a different value in the provider field. openrank is set as the default. (karma3 is an older name for openrank —kept here for backwards compatiblity—)

If you pick mbd as provider, you can further customize your feed by passing in additional filter values in an optionalfilters object inside the provider_metadata field in the request e.g.

const provider_metadata = encodeURIComponent(JSON.stringify({
  "filters": {
    "channels": [
      "https://warpcast.com/~/channel/neynar"
    ],
    "languages": [
      "en"
    ],
    "author_ids": [
      "194",
      "191"
    ],
    // remove_author_fids only works when author_ids isn't passed in
    // "remove_author_ids": [
      // "18949"
    // ],
    "frames_only": false,
    "embed_domains": [
      "neynar.com",
      "frames.neynar.com"
    ],
    "ai_labels": [
      "science_technology"
    ],
		"remove_ai_labels": [
    	"spam"
    ]
  }
}));

The filters available for MBD that you can pass in that object are:

NameTypeDescription
start_timestampstringreturn only casts after this start_timestamp, specified as Epoch time (Unix timestamp)
end_timestampstringreturn only casts before this end_timestamp, specified as Epoch time (Unix timestamp)
channelsstring[]return only casts that belong to these channels, specified by channel urls (root_parent_url)
languagesstring[]returns only casts that use these languages
author_idsstring[]returns only casts created by authors with these fids
remove_author_idsstring[]does not return casts created by authors with these fid’s NOTE: this is ignored if author_ids is defined
frames_onlybooleanwhether to limit search to only frames
embed_domainsstring[]return only casts with specific domains embedded
ai_labelsstring[]Return only casts that have these AI labels. Available values below. Labels in topics category: - arts_culture - business_entrepreneurs - celebrity_pop_culture - diaries_daily_life - family - fashion_style - film_tv_video - fitness_health - food_dining - gaming - learning_educational - music - news_social_concern - other_hobbies - relationships - science_technology - sports - travel_adventure - youth_student_life Labels in sentiment category: - positive - neutral - negative Labels in emotion category: - anger - anticipation - disgust - fear - joy - love - optimism - pessimism - sadness - surprise - trust Labels in moderation category: - llm_generated - spam - sexual - hate - violence - harassment - self_harm - sexual_minors - hate_threatening - violencegraphic Labels in web3_topics category: - web3_nft - web3_defi - web3_infra - web3_industry - web3_consumer
remove_ai_labelsstring[]do not return casts with these AI labels NOTE: this is ignored if ai_labels is defined

A full request to the feed API with the custom mbd filters object looks like below

const fetch = require('node-fetch');

const provider_metadata = encodeURIComponent(JSON.stringify({
  "filters": {
    "channels": [
      "https://warpcast.com/~/channel/neynar"
    ],
    "languages": [
      "en"
    ],
    "author_ids": [
      "194",
      "191"
    ],
    // Note: remove_author_ids only works when author_ids isn't passed in
    // "remove_author_ids": [
    //   "18949"
    // ],
    "frames_only": false,
    "embed_domains": [
      "neynar.com",
      "frames.neynar.com"
    ],
    "ai_labels": [
      "science_technology"
    ]
  }
}));

const url = `https://api.neynar.com/v2/farcaster/feed/for_you?fid=3&viewer_fid=2&provider=mbd&limit=10&provider_metadata=${provider_metadata}`;

const options = {
  method: 'GET',
  headers: {
    'accept': 'application/json',
    'api_key': 'NEYNAR_API_DOCS'
  }
};

// Fetch request with the metadata and options
fetch(url, options)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('error:', error));