UNPKG

@neynar/nodejs-sdk

Version:

SDK to interact with Neynar APIs (https://docs.neynar.com/reference/quickstart)

2,075 lines (1,614 loc) 80.4 kB
## Table of Contents 1. [Installation](#installation) 2. [Client Initialization](#client-initialization) 3. [Removed Methods and Changes in Method Names](#removed-methods-and-changes-in-method-names) - [Removed Methods](#removed-methods) - [Renamed Methods](#renamed-methods) - [Methods Updated to v2 API](#methods-updated-to-v2-api) 4. [Enum Changes](#enum-changes) - [Renamed enums](#renamed-enums) - [Enum Key Changes](#enum-key-changes) 5. [Import Path Changes](#import-path-changes) 6. [Affected v1 API Methods](#affected-v1-api-methods) 7. [Affected v2 API Methods](#affected-v2-api-methods) - [Users](#users) - [`searchUser`](#searchuser) - [`fetchBulkUsers`](#fetchbulkusers) - [`fetchBulkUsersByEthereumAddress`](#fetchbulkusersbyethereumaddress) - [`lookupUserByCustodyAddress`](#lookupuserbycustodyaddress) - [`lookupUserByUsernameV2`](#lookupuserbyusernamev2) - [`fetchUsersByLocation`](#fetchusersbylocation) - [`fetchPopularCastsByUser`](#fetchpopularcastsbyuser) - [`fetchRepliesAndRecastsForUser`](#fetchrepliesandrecastsforuser) - [`fetchCastsForUser`](#fetchcastsforuser) - [`followUser`](#followuser) - [`unfollowUser`](#unfollowuser) - [`registerAccount`](#registeraccount) - [`updateUser`](#updateuser) - [`publishVerification`](#publishverification) - [`deleteVerification`](#deleteverification) - [`fetchAuthorizationUrl`](#fetchauthorizationurl) - [Signer](#signer) - [`lookupSigner`](#lookupsigner) - [`registerSignedKey`](#registersignedkey) - [`lookupDeveloperManagedSigner`](#lookupdevelopermanagedsigner) - [`registerSignedKeyForDeveloperManagedSigner`](#registersignedkeyfordevelopermanagedsigner) - [`publishMessageToFarcaster`](#publishmessagetofarcaster) - [Cast](#cast) - [`lookUpCastByHashOrWarpcastUrl`](#lookupcastbyhashorwarpcasturl) - [`publishCast`](#publishcast) - [`deleteCast`](#deletecast) - [`fetchBulkCasts`](#fetchbulkcasts) - [`searchCasts`](#searchcasts) - [`lookupCastConversation`](#lookupcastconversation) - [`fetchComposerActions`](#fetchcomposeractions) - [Feed](#feed) - [`fetchUserFollowingFeed`](#fetchuserfollowingfeed) - [`fetchFeedForYou`](#fetchfeedforyou) - [`fetchFeedByChannelIds`](#fetchfeedbychannelids) - [`fetchFeedByParentUrls`](#fetchfeedbyparenturls) - [`fetchFeed`](#fetchfeed) - [`fetchFramesOnlyFeed`](#fetchframesonlyfeed) - [`fetchTrendingFeed`](#fetchtrendingfeed) - [Reaction](#reaction) - [`publishReactionToCast`](#publishreactiontocast) - [`deleteReactionFromCast`](#deletereactionfromcast) - [`fetchUserReactions`](#fetchuserreactions) - [`fetchReactionsForCast`](#fetchreactionsforcast) - [Notifications](#notifications) - [`fetchAllNotifications`](#fetchallnotifications) - [`fetchChannelNotificationsForUser`](#fetchchannelnotificationsforuser) - [`fetchNotificationsByParentUrlForUser`](#fetchnotificationsbyparenturlforuser) - [`markNotificationsAsSeen`](#marknotificationsasseen) - [Channel](#channel) - [`searchChannels`](#searchchannels) - [`fetchBulkChannels`](#fetchbulkchannels) - [`lookupChannel`](#lookupchannel) - [`removeChannelMember`](#removechannelmember) - [`fetchChannelMembers`](#fetchchannelmembers) - [`inviteChannelMember`](#invitechannelmember) - [`respondChannelInvite`](#respondchannelinvite) - [`fetchFollowersForAChannel`](#fetchfollowersforachannel) - [`fetchRelevantFollowersForAChannel`](#fetchrelevantfollowersforachannel) - [`fetchUserChannels`](#fetchuserchannels) - [`fetchUserChannelMemberships`](#fetchuserchannelmemberships) - [`followChannel`](#followchannel) - [`unfollowChannel`](#unfollowchannel) - [`fetchTrendingChannels`](#fetchtrendingchannels) - [`fetchUsersActiveChannels`](#fetchusersactivechannels) - [Follows](#follows) - [`fetchUserFollowersV2`](#fetchuserfollowersv2) - [`fetchRelevantFollowers`](#fetchrelevantfollowers) - [`fetchUserFollowingV2`](#fetchuserfollowingv2) - [`fetchFollowSuggestions`](#fetchfollowsuggestions) - [Storage](#storage) - [`lookupUserStorageAllocations`](#lookupuserstorageallocations) - [`lookupUserStorageUsage`](#lookupuserstorageusage) - [`buyStorage`](#buystorage) - [Frame](#frame) - [`postFrameAction`](#postframeaction) - [`validateFrameAction`](#validateframeaction) - [`fetchValidateFrameAnalytics`](#fetchvalidateframeanalytics) - [`lookupNeynarFrame`](#lookupneynarframe) - [`deleteNeynarFrame`](#deleteneynarframe) - [`fetchFrameMetaTagsFromUrl`](#fetchframemetatagsfromurl) - [`postFrameActionDeveloperManaged`](#postframeactiondevelopermanaged) - [fname](#fname) - [`isFnameAvailable`](#isfnameavailable) - [Webhook](#webhook) - [`lookupWebhook`](#lookupwebhook) - [`publishWebhook`](#publishwebhook) - [`updateWebhookActiveStatus`](#updatewebhookactivestatus) - [`updateWebhook`](#updateWebhook) - [`deleteWebhook`](#deletewebhook) - [Action](#action) - [`publishFarcasterAction`](#publishfarcasteraction) - [Mute](#mute) - [`fetchMuteList`](#fetchmutelist) - [`publishMute`](#publishmute) - [`deleteMute`](#deletemute) - [Block](#block) - [`publishBlock`](#publishblock) - [`deleteBlock`](#deleteblock) - [Ban](#ban) - [`publishBans`](#publishbans) - [`deleteBans`](#deletebans) - [Onchain](#onchain) - [`fetchUserBalance`](#fetchuserbalance) - [`fetchSubscriptionsForFid`](#fetchsubscriptionsforfid) - [`fetchSubscribedToForFid`](#fetchsubscribedtoforfid) - [`fetchSubscribersForFid`](#fetchsubscribersforfid) - [`fetchSubscriptionCheck`](#fetchsubscriptioncheck) --- ## Installation ```shell yarn add @neynar/nodejs-sdk ``` OR ```shell npm install @neynar/nodejs-sdk ``` ## Client Initialization v1 ```typescript import { NeynarAPIClient } from "@neynar/nodejs-sdk"; const client = new NeynarAPIClient("API_KEY", { baseOptions: { headers: { "x-neynar-experimental": true, }, }, }); ``` v2 ```typescript import { NeynarAPIClient, Configuration } from "@neynar/nodejs-sdk"; const config = new Configuration({ apiKey: "API_KEY", baseOptions: { headers: { "x-neynar-experimental": true, }, }, }); const client = new NeynarAPIClient(config); ``` --- ## Removed Methods and Changes in Method Names **Note: All Neynar API v1-related methods have been removed from SDK v2. This version of the SDK will only support Neynar API v2.** #### Removed Methods The following methods have been removed entirely from SDK v2: | **Removed Method** | **Replacement** | | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | | `fetchRecentUsers` | Use [webhook](https://docs.neynar.com/docs/how-to-setup-webhooks-from-the-dashboard) or [kafka](https://docs.neynar.com/docs/from-kafka-stream) | | `fetchAllCastsLikedByUser` | [`fetchUserReactions`](#fetchuserreactions) | | `lookupUserByFid` | [`fetchBulkUsers`](#fetchbulkusers) | | `lookupCustodyAddressForUser` | [`fetchBulkUsers`](#fetchbulkusers) | | `lookUpCastByHash` | [`lookUpCastByHashOrWarpcastUrl`](#lookupcastbyhashorwarpcasturl) | | `fetchAllCastsInThread` | [`lookupCastConversation`](#lookupcastconversation) | | `fetchAllCastsCreatedByUser` | [`fetchCastsForUser`](#fetchcastsforuser) | | `fetchRecentCasts` | Use [webhook](https://docs.neynar.com/docs/how-to-setup-webhooks-from-the-dashboard) or [kafka](https://docs.neynar.com/docs/from-kafka-stream) | | `fetchUserVerifications` | [`fetchBulkUsers`](#fetchbulkusers) | | `lookupUserByVerification` | [`fetchBulkUsersByEthOrSolAddress`](#fetchbulkusersbyethereumaddress) | | `fetchMentionAndReplyNotifications` | [`fetchAllNotifications`](#fetchallnotifications) | | `fetchUserLikesAndRecasts` | [`fetchUserReactions`](#fetchuserreactions) | Checkout [Affected v1 API Methods](#affected-v1-api-methods) on how to replace it. #### Renamed Methods Several methods in SDK v2 have been renamed for consistency and clarity: | v1 Method Name | v2 Method Name | | --------------------------------- | --------------------------------- | | `lookUpCastByHashOrWarpcastUrl` | `lookupCastByHashOrWarpcastUrl` | | `publishReactionToCast` | `publishReaction` | | `deleteReactionFromCast` | `deleteReaction` | | `fetchReactionsForCast` | `fetchCastReactions` | | `fetchBulkUsersByEthereumAddress` | `fetchBulkUsersByEthOrSolAddress` | #### Methods Updated to v2 API These methods retain the original method names but now use the v2 version of the neynar API: | v1 Method Name | v2 Method Name | | ------------------------ | ---------------------- | | `fetchUserFollowersV2` | `fetchUserFollowers` | | `fetchUserFollowingV2` | `fetchUserFollowing` | | `lookupUserByUsernameV2` | `lookupUserByUsername` | --- ## Enum Changes #### Renamed enums The following enums have been renamed in SDK v2 to align with the updated naming conventions: | v1 Enum Name | v2 Enum Name | | ------------------------ | ------------------------------------- | | `TimeWindow` | `FetchTrendingChannelsTimeWindowEnum` | | `TrendingFeedTimeWindow` | `FetchTrendingFeedTimeWindowEnum` | | `BulkCastsSortType` | `FetchBulkCastsSortTypeEnum` | | `BulkUserAddressTypes` | `BulkUserAddressType` | #### Enum Key Changes Certain enum keys have been modified in SDK v2. If you were using the following enums, be aware that their key formats may have changed: - `NotificationType` - `ValidateFrameAggregateWindow` - `FetchTrendingChannelsTimeWindowEnum` (formerly `TimeWindow`) - `FetchTrendingFeedTimeWindowEnum` (formerly `TrendingFeedTimeWindow`) - `FetchBulkCastsSortTypeEnum` (formerly `BulkCastsSortType`) - `BulkUserAddressType` (formerly `BulkUserAddressTypes`) --- ## Import Path Changes All the api-related enums and schemas are now centralized and exported from `/build/api` directory instead of `/build/neynar-api/v2/*` ```typescript import {CastParamType, NotificationTypeEnum, User, Cast, ...etc } from '@neynar/nodejs-sdk/build/api' ``` Note: Imports for following `isApiErrorResponse` utility function and Webhook interfaces remains the same ```typescript import { isApiErrorResponse, WebhookFollowCreated, WebhookFollowDeleted, WebhookReactionCreated, WebhookReactionDeleted, WebhookCastCreated, WebhookUserCreated, WebhookUserUpdated } form '@neynar/nodejs-sdk' ``` --- ## Affected v1 API Methods The following methods have been completely removed in SDK v2 (Ref. [Removed Methods](#removed-methods)). As a result, the response structure will be different in the new methods that replace the deprecated v1 methods. #### `fetchAllCastsLikedByUser` (Use `fetchUserReactions`) `fetchAllCastsLikedByUser` ```typescript const fid = 3; const viewerFid = 2; const limit = 50; client .fetchAllCastsLikedByUser(fid, { viewerFid, limit, }) .then((response) => { const { likes, reactor, next } = response.result; console.log("likes", likes); // likes.reaction, likes.cast, likes.cast_author console.log("reactor", reactor); console.log("nextCursor", next.cursor); }); ``` `fetchUserReactions` ```typescript import { ReactionsType } from "@neynar/nodejs-sdk/build/api"; const fid = 3; const viewerFid = 2; const limit = 50; const type = ReactionsType.Likes; client.fetchUserReactions({ fid, type, viewerFid, limit }).then((response) => { const { reactions } = response; // This structure is changed console.log("likes", reactions); }); ``` #### `lookupUserByFid` (Use `fetchBulkUsers`) `lookupUserByFid` ```typescript const fid = 19960; const viewerFid = 194; client.lookupUserByFid(fid, viewerFid).then((response) => { const { user } = response.result; console.log("user", user); }); ``` `fetchBulkUsers` ```typescript const fid = 3; const viewerFid = 2; client.fetchBulkUsers({ fids: [fid], viewerFid }).then((res) => { const { users } = res; console.log("user", users[0]); // This structure is changed }); ``` #### `lookupCustodyAddressForUser` (Use `fetchBulkUsers`) `lookupCustodyAddressForUser` ```typescript const fid = 19960; client.lookupCustodyAddressForUser(fid).then((response) => { const { fid, custodyAddress } = response.result; console.log("fid:", fid); console.log("custodyAddress:", custodyAddress); }); ``` `fetchBulkUsers` ```typescript const fid = 19960; client.fetchBulkUsers({ fids: [fid] }).then((res) => { const { users } = res; console.log("fid:", users[0].fid); console.log("custodyAddress", users[0].custody_address); }); ``` #### `lookUpCastByHash` (Use `lookupCastByHashOrWarpcastUrl`) `lookUpCastByHash` ```typescript const hash = "0xfe90f9de682273e05b201629ad2338bdcd89b6be"; const viewerFid = 3; client .lookUpCastByHash(hash, { viewerFid, }) .then((response) => { const { cast } = response.result; console.log(cast); }); ``` `lookupCastByHashOrWarpcastUrl` ```typescript import { CastParamType } from "@neynar/nodejs-sdk/build/api"; const hash = "0xfe90f9de682273e05b201629ad2338bdcd89b6be"; const viewerFid = 3; const type = CastParamType.Hash; client .lookupCastByHashOrWarpcastUrl({ identifier: hash, type, viewerFid, }) .then((response) => { const { cast } = response; console.log("cast", cast); // This structure is changed }); ``` #### `fetchAllCastsInThread` (Use `lookupCastConversation`) `fetchAllCastsInThread` ```typescript const hash = "0xfe90f9de682273e05b201629ad2338bdcd89b6be"; const viewerFid = 3; client.fetchAllCastsInThread(hash, viewerFid).then((response) => { const { casts } = response.result; console.log("conversation", casts); }); ``` `lookupCastConversation` ```typescript import { CastParamType } from "@neynar/nodejs-sdk/build/api"; const hash = "0xfe90f9de682273e05b201629ad2338bdcd89b6be"; const viewerFid = 3; const type = CastParamType.Hash; client .lookupCastConversation({ identifier: hash, type, viewerFid, }) .then((response) => { const { cast } = response.conversation; console.log("conversation", cast); // This structure is changed }); ``` #### `fetchAllCastsCreatedByUser` (Use `fetchCastsForUser`) `fetchAllCastsCreatedByUser` ```typescript const fid = 3; const parentUrl = "https://ethereum.org"; const viewerFid = 2; const limit = 5; client .fetchAllCastsCreatedByUser(fid, { parentUrl, viewerFid, limit, }) .then((response) => { const { casts } = response.result; console.log("User Casts:", casts); }); ``` `fetchCastsForUser` ```typescript const fid = 3; const parentUrl = "https://ethereum.org"; const viewerFid = 2; const limit = 5; client .fetchCastsForUser({ fid, parentUrl, viewerFid, limit }) .then((response) => { const { casts } = response; console.log("Users casts: ", casts); // This structure is changed }); ``` #### `fetchUserVerifications` (Use `fetchBulkUsers`) `fetchUserVerifications` ```typescript const fid = 3; client.fetchUserVerifications(fid).then((response) => { const { fid, username, display_name, verifications } = response.result; console.log("fid ", fid); console.log("username ", username); console.log("display_name ", display_name); console.log("verifications ", verifications); }); ``` `fetchBulkUsers` ```typescript const fid = 3; client.fetchBulkUsers({ fids: [fid] }).then((response) => { const { fid, username, display_name, verified_addresses } = response.users[0]; console.log("fid ", fid); console.log("username ", username); console.log("display_name ", display_name); console.log("verifications ", verified_addresses); }); ``` #### `lookupUserByVerification` (Use `fetchBulkUsersByEthOrSolAddress`) `lookupUserByVerification` ```typescript const address = "0x7ea5dada4021c2c625e73d2a78882e91b93c174c"; client.lookupUserByVerification(address).then((response) => { const { user } = response.result; console.log("User:", user); }); ``` `fetchBulkUsersByEthOrSolAddress` ```typescript import { BulkUserAddressType } from "@neynar/nodejs-sdk/build/api"; const addresses = ["0x7ea5dada4021c2c625e73d2a78882e91b93c174c"]; const addressTypes = [BulkUserAddressType.VerifiedAddress]; client .fetchBulkUsersByEthOrSolAddress({ addresses, addressTypes }) .then((response) => { const user = response[addresses[0]]; console.log("User:", user[0]); // This structure is changed }); ``` #### `fetchMentionAndReplyNotifications` (Use `fetchAllNotifications`) `fetchMentionAndReplyNotifications` ```typescript const fid = 3; const viewerFid = 2; client .fetchMentionAndReplyNotifications(fid, { viewerFid, }) .then((response) => { console.log("Notifications:", response.result); }); ``` `fetchAllNotifications` ```typescript const fid = 3; client.fetchAllNotifications({ fid }).then((response) => { console.log("response:", response); // This structure is changed }); ``` #### `fetchUserLikesAndRecasts` (Use `fetchUserReactions`) `fetchUserLikesAndRecasts` ```typescript const fid = 12345; const viewerFid = 67890; const limit = 5; client .fetchUserLikesAndRecasts(fid, { viewerFid, limit, }) .then((response) => { const { notifications } = response.result; console.log("User Reactions : ", notifications); }); ``` `fetchUserReactions` ```typescript import { ReactionsType } from "@neynar/nodejs-sdk/build/api"; const fid = 12345; const viewerFid = 67890; const limit = 5; client .fetchUserReactions({ fid, type: ReactionsType.All, viewerFid, limit }) .then((response) => { const { reactions } = response; console.log("User Reactions : ", reactions); }); ``` ## Affected v2 API Methods 1. **Arguments Format**: In SDK v2, all methods now accept arguments as key-value pairs (kvargs). In SDK v1, only optional parameters were passed as key-value pairs, while required arguments were simple parameters. ### Users #### `searchUser` #### **v1** ```typescript const q = "ris"; const viewerFid = 19960; const limit = 10; client.searchUser(q, viewerFid, { limit }).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const q = "ris"; const viewerFid = 19960; const limit = 10; client.searchUser({ q, viewerFid, limit }).then((response) => { console.log("response:", response); }); ``` #### `fetchBulkUsers` #### **v1** ```typescript const fids = [2, 3]; const viewerFid = 19960; client.fetchBulkUsers(fids, { viewerFid }).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const fids = [2, 3]; const viewerFid = 19960; client.fetchBulkUsers({ fids, viewerFid }).then((response) => { console.log("response:", response); }); ``` #### `fetchBulkUsersByEthereumAddress` #### **v1** ```typescript import { BulkUserAddressTypes } from "@neynar/nodejs-sdk"; const addresses = [ "0xa6a8736f18f383f1cc2d938576933e5ea7df01a1", "0x7cac817861e5c3384753403fb6c0c556c204b1ce", ]; const addressTypes = [BulkUserAddressTypes.CUSTODY_ADDRESS]; const viewerFid = 3; client .fetchBulkUsersByEthereumAddress(addresses, { addressTypes, viewerFid }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: 1. `fetchBulkUsersByEthereumAddress` is renamed to `fetchBulkUsersByEthOrSolAddress` (Ref. [Renamed Methods](#renamed-methods)) 2. `BulkUserAddressTypes` is renamed to `BulkUserAddressType` (Ref. [Renamed enums](#renamed-enums)) 3. Import path for `BulkUserAddressType` is changed (Ref. [Import path changes](#import-path-changes)) 4. Enum key changed from `CUSTODY_ADDRESS` to `CustodyAddress` (Ref. [Enum Key Changes](#enum-key-changes)) ```typescript import { BulkUserAddressType } from "@neynar/nodejs-sdk/build/api"; const addresses = [ "0xa6a8736f18f383f1cc2d938576933e5ea7df01a1", "0x7cac817861e5c3384753403fb6c0c556c204b1ce", ]; const addressTypes = [BulkUserAddressType.CustodyAddress]; const viewerFid = 3; client .fetchBulkUsersByEthOrSolAddress({ addresses, addressTypes, viewerFid }) .then((response) => { console.log("response:", response); }); ``` #### `lookupUserByCustodyAddress` #### **v1** ```typescript const custodyAddress = "0xd1b702203b1b3b641a699997746bd4a12d157909"; client.lookupUserByCustodyAddress(custodyAddress).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const custodyAddress = "0xd1b702203b1b3b641a699997746bd4a12d157909"; client.lookupUserByCustodyAddress({ custodyAddress }).then((response) => { console.log("response:", response); }); ``` #### `lookupUserByUsernameV2` This method is renamed to `lookupUserByUsername`. #### **v1** ```typescript const username = "manan"; const viewerFid = 3; client.lookupUserByUsernameV2(username, { viewerFid }).then((response) => { console.log("response:", response); }); ``` #### **v2** Note: `lookupUserByUsernameV2` is now renamed to `lookupUserByUsername` (Ref. [Methods Updated to v2 API](#methods-updated-to-v2-api)) ```typescript const username = "manan"; const viewerFid = 3; client.lookupUserByUsername({ username, viewerFid }).then((response) => { console.log("response:", response); }); ``` #### `fetchUsersByLocation` #### **v1** ```typescript const latitude = 37.7749; const longitude = -122.4194; const viewerFid = 3; const limit = 5; client .fetchUsersByLocation(latitude, longitude, { viewerFid, limit }) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const latitude = 37.7749; const longitude = -122.4194; const viewerFid = 3; const limit = 5; client .fetchUsersByLocation({ latitude, longitude, viewerFid, limit }) .then((response) => { console.log("response:", response); }); ``` #### `fetchPopularCastsByUser` #### **v1** ```typescript const fid = 3; const viewerFid = 19960; client.fetchPopularCastsByUser(fid, { viewerFid }).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const fid = 3; const viewerFid = 19960; client.fetchPopularCastsByUser({ fid, viewerFid }).then((response) => { console.log("response:", response); }); ``` #### `fetchRepliesAndRecastsForUser` #### **v1** ```typescript const fid = 3; const limit = 25; const viewerFid = 19960; client .fetchRepliesAndRecastsForUser(fid, { limit, viewerFid }) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const fid = 3; const limit = 25; const viewerFid = 3; client .fetchRepliesAndRecastsForUser({ fid, limit, viewerFid }) .then((response) => { console.log("response:", response); }); ``` #### `fetchCastsForUser` #### **v1** ```typescript const fid = 3; const viewerFid = 3; const limit = 25; const includeReplies = false; client .fetchCastsForUser(fid, { limit, viewerFid, includeReplies, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const fid = 3; const viewerFid = 3; const limit = 25; const includeReplies = false; client .fetchCastsForUser({ fid, viewerFid, limit, includeReplies }) .then((response) => { console.log("response:", response); }); ``` #### `followUser` #### **v1** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const targetFids = [3, 2, 1]; client.followUser(signerUuid, targetFids).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const targetFids = [3, 2, 1]; client.followUser({ signerUuid, targetFids }).then((response) => { console.log("response:", response); }); ``` #### `unfollowUser` #### **v1** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const targetFids = [3, 2, 1]; client.unfollowUser(signerUuid, targetFids).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const targetFids = [3, 2, 1]; client.unfollowUser({ signerUuid, targetFids }).then((response) => { console.log("response:", response); }); ``` #### `registerAccount` #### **v1** ```typescript const signature = "signatureString"; const fid = 12345; const requestedUserCustodyAddress = "0x123...abc"; const deadline = 1672531200; const fname = "newUsername"; client .registerAccount(fid, signature, requestedUserCustodyAddress, deadline, { fname, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const signature = "signatureString"; const fid = 12345; const requestedUserCustodyAddress = "0x123...abc"; const deadline = 1672531200; const fname = "newUsername"; client .registerAccount({ signature, fid, requestedUserCustodyAddress, deadline, fname, }) .then((response) => { console.log("response:", response); }); ``` #### `updateUser` #### **v1** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const bio = "New bio here"; const pfpUrl = "https://example.com/pfp.jpg"; const username = "newUsername"; const displayName = "New Display Name"; client .updateUser(signerUuid, { bio, pfpUrl, username, displayName, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const bio = "New bio here"; const pfpUrl = "https://example.com/pfp.jpg"; const username = "newUsername"; const displayName = "New Display Name"; client .updateUser({ signerUuid, bio, pfpUrl, username, displayName }) .then((response) => { console.log("response:", response); }); ``` #### `publishVerification` #### **v1** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const address = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f"; const blockHash = "0x191905a9201170abb55f4c90a4cc968b44c1b71cdf3db2764b775c93e7e22b29"; const ethSignature = "0x2fc09da1f4dcb723fefb91f77932c249c418c0af00c66ed92ee1f35002c80d6a1145280c9f361d207d28447f8f7463366840d3a9309036cf6954afd1fd331beb1b"; client .publishVerification(signerUuid, address, blockHash, ethSignature) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const address = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f"; const blockHash = "0x191905a9201170abb55f4c90a4cc968b44c1b71cdf3db2764b775c93e7e22b29"; const ethSignature = "0x2fc09da1f4dcb723fefb91f77932c249c418c0af00c66ed92ee1f35002c80d6a1145280c9f361d207d28447f8f7463366840d3a9309036cf6954afd1fd331beb1b"; client .publishVerification({ signerUuid, address, blockHash, ethSignature }) .then((response) => { console.log("response:", response); }); ``` #### `deleteVerification` #### **v1** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const address = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f"; client.deleteVerification(signerUuid, address).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const address = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f"; client.deleteVerification({ signerUuid, address }).then((response) => { console.log("response:", response); }); ``` #### `fetchAuthorizationUrl` #### **v1** ```typescript import { AuthorizationUrlResponseType } from "@neynar/nodejs-sdk"; const clientId = "your-client-id"; const responseType = AuthorizationUrlResponseType.Code; client.fetchAuthorizationUrl(clientId, responseType).then((response) => { console.log("response:", response); }); ``` #### **v2** Note: The import path for `AuthorizationUrlResponseType` is changed. (Ref. [Import path changes](#import-path-changes)) ```typescript import { AuthorizationUrlResponseType } from "@neynar/nodejs-sdk/build/api"; const clientId = "your-client-id"; const responseType = AuthorizationUrlResponseType.Code; client.fetchAuthorizationUrl({ clientId, responseType }).then((response) => { console.log("response:", response); }); ``` #### Signer #### `lookupSigner` #### **v1** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; client.lookupSigner(signerUuid).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; client.lookupSigner({ signerUuid }).then((response) => { console.log("response:", response); }); ``` #### `registerSignedKey` #### **v1** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const signature = "0xsig_1"; const appFid = 18949; const deadline = 1625097600; const sponsor = { fid: 0, signature: `0xsig_2`, }; client .registerSignedKey(signerUuid, appFid, deadline, signature, { sponsor }) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const signature = "0xsig_1"; const appFid = 18949; const deadline = 1625097600; const sponsor = { fid: 0, signature: `0xsig_2`, }; client .registerSignedKey({ signerUuid, signature, appFid, deadline, sponsor }) .then((response) => { console.log("response:", response); }); ``` #### `lookupDeveloperManagedSigner` #### **v1** ```typescript const publicKey = "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"; client.lookupDeveloperManagedSigner(publicKey).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const publicKey = "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"; client.lookupDeveloperManagedSigner({ publicKey }).then((response) => { console.log("response:", response); }); ``` #### `registerSignedKeyForDeveloperManagedSigner` #### **v1** ```typescript const publicKey = "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"; const signature = "0xsig_1"; const appFid = 12345; const deadline = 1625097600; const sponsor = { fid: 0, signature: `0xsig_2`, }; client .registerSignedKeyForDeveloperManagedSigner( publicKey, signature, appFid, deadline, { sponsor } ) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const publicKey = "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"; const signature = "0xsig_1"; const appFid = 12345; const deadline = 1625097600; const sponsor = { fid: 0, signature: `0xsig_2`, }; client .registerSignedKeyForDeveloperManagedSigner({ publicKey, signature, appFid, deadline, sponsor, }) .then((response) => { console.log("response:", response); }); ``` #### `publishMessageToFarcaster` #### **v1** ```typescript const body = {}; client.publishMessageToFarcaster(body).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const body = {}; client.publishMessageToFarcaster({ body }).then((response) => { console.log("response:", response); }); ``` #### Cast #### `lookUpCastByHashOrWarpcastUrl` #### **v1** ```typescript import { CastParamType } from "@neynar/nodejs-sdk"; const identifier = "https://warpcast.com/rish/0x9288c1"; const type = CastParamType.Url; const viewerFid = 3; client .lookUpCastByHashOrWarpcastUrl(identifier, type, { viewerFid }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: 1. `lookUpCastByHashOrWarpcastUrl` is renamed to `lookupCastByHashOrWarpcastUrl` (Ref. [Renamed Methods](#renamed-methods)) 2. The import path for `CastParamType` is changed. (Ref. [Import path changes](#import-path-changes)) ```typescript import { CastParamType } from "@neynar/nodejs-sdk/build/api"; const identifier = "https://warpcast.com/rish/0x9288c1"; const type = CastParamType.Url; const viewerFid = 3; client .lookupCastByHashOrWarpcastUrl({ identifier, type, viewerFid }) .then((response) => { console.log("response:", response); }); ``` #### `publishCast` #### **v1** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const text = "Testing publishCast() method"; const embeds = [ { url: "https://warpcast.com/harper.eth/0x3c974d78", }, ]; const replyTo = "0x9e95c380791fce11ffbb14b2ea458b233161bafd"; const idem = "my-cast-idem"; const parent_author_fid = 6131; client .publishCast(signerUuid, text, { replyTo, idem, embeds, parent_author_fid, }) .then((response) => { console.log("cast:", response); }); ``` #### **v2** Note: 1. `replyTo` param is now renamed to `parent` 2. `parent_author_fid` is now cam camelCase (`parentAuthorFid`) 3. sdk v1 `response` object is sdk v2 `response.cast` object ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const text = "Testing publishCast() method"; const embeds = [ { url: "https://warpcast.com/harper.eth/0x3c974d78", }, ]; const replyTo = "0x9e95c380791fce11ffbb14b2ea458b233161bafd"; const idem = "my-cast-idem"; const parentAuthorFid = 6131; client .publishCast({ signerUuid, text, embeds, parent: replyTo, idem, parentAuthorFid, }) .then((response) => { console.log("cast:", response.cast); }); ``` #### `deleteCast` #### **v1** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const targetHash = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f"; client.deleteCast(signerUuid, targetHash).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const targetHash = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f"; client.deleteCast({ signerUuid, targetHash }).then((response) => { console.log("response:", response); }); ``` #### `fetchBulkCasts` #### **v1** ```typescript import { BulkCastsSortType } from "@neynar/nodejs-sdk"; const casts = [ "0xa896906a5e397b4fec247c3ee0e9e4d4990b8004", "0x27ff810f7f718afd8c40be236411f017982e0994", ]; const viewerFid = 3; const sortType = BulkCastsSortType.LIKES; client .fetchBulkCasts(casts, { viewerFid, sortType, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: 1. `BulkCastsSortType` is renamed to `FetchBulkCastsSortTypeEnum` (Ref. [Renamed enums](#renamed-enums)) 2. Enum key is changed now `LIKES` is `Likes` (Ref. [Enum Key Changes](#enum-key-changes)) ```typescript import { FetchBulkCastsSortTypeEnum } from "@neynar/nodejs-sdk"; const casts = [ "0xa896906a5e397b4fec247c3ee0e9e4d4990b8004", "0x27ff810f7f718afd8c40be236411f017982e0994", ]; const viewerFid = 3; const sortType = FetchBulkCastsSortTypeEnum.LIKES; client.fetchBulkCasts({ casts, viewerFid, sortType }).then((response) => { console.log("response:", response); }); ``` #### `searchCasts` #### **v1** ```typescript const q = "We are releasing a v2 of our nodejs sdk."; const authorFid = 19960; const viewerFid = 3; const limit = 3; client.searchCasts(q, { authorFid, viewerFid, limit }).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const q = "We are releasing a v2 of our nodejs sdk."; const authorFid = 19960; const viewerFid = 3; const limit = 3; client.searchCasts({ q, authorFid, viewerFid, limit }).then((response) => { console.log("response:", response); }); ``` #### `lookupCastConversation` #### **v1** ```typescript import { CastParamType } from "@neynar/nodejs-sdk"; const identifier = "https://warpcast.com/rish/0x9288c1"; const type = CastParamType.Url; const replyDepth = 2; const includeChronologicalParentCasts = true; const viewerFid = 3; const fold = "above"; const limit = 2; client .lookupCastConversation( "https://warpcast.com/rish/0x9288c1", CastParamType.Url, { replyDepth, includeChronologicalParentCasts, fold, viewerFid, limit, } ) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: The import path for `CastParamType` is changed. (Ref. [Import path changes](#import-path-changes)) ```typescript import { CastParamType } from "@neynar/nodejs-sdk/build/api"; const identifier = "https://warpcast.com/rish/0x9288c1"; const type = CastParamType.Url; const replyDepth = 2; const includeChronologicalParentCasts = true; const viewerFid = 3; const fold = "above"; const limit = 2; client .lookupCastConversation({ identifier, type, replyDepth, includeChronologicalParentCasts, viewerFid, fold, limit, }) .then((response) => { console.log("response:", response); }); ``` #### `fetchComposerActions` #### **v1** ```typescript import { CastComposerType } from "@neynar/nodejs-sdk/neynar-api/v2"; const list = CastComposerType.Top; const limit = 25; client.fetchComposerActions(list, { limit }).then((response) => { console.log("response:", response); }); ``` #### **v2** Note: The import path for `CastComposerType` is changed. (Ref. [Import path changes](#import-path-changes)) ```typescript import { CastComposerType } from "@neynar/nodejs-sdk/build/api"; const list = CastComposerType.Top; const limit = 25; client.fetchComposerActions({ list, limit }).then((response) => { console.log("response:", response); }); ``` #### Feed #### `fetchUserFollowingFeed` #### **v1** ```typescript const fid = 3; const viewerFid = 100; const withRecasts = true; const limit = 30; client .fetchUserFollowingFeed(fid, { withRecasts, limit, viewerFid, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const fid = 3; const viewerFid = 100; const withRecasts = true; const limit = 30; client .fetchUserFollowingFeed({ fid, viewerFid, withRecasts, limit }) .then((response) => { console.log("response:", response); }); ``` #### `fetchFeedForYou` #### **v1** ```typescript import { ForYouProvider } from "@neynar/nodejs-sdk/neynar-api/v2"; const fid = 3; const viewerFid = 10; const provider = ForYouProvider.Mbd; const limit = 20; const providerMetadata = encodeURIComponent( JSON.stringify({ filters: { channels: ["https://farcaster.group/founders"], }, }) ); client .fetchFeedForYou(fid, { limit, viewerFid, provider, providerMetadata: providerMetadata, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: The import path for `ForYouProvider` is changed. (Ref. [Import path changes](#import-path-changes)) ```typescript import { ForYouProvider } from "@neynar/nodejs-sdk/build/api"; const fid = 3; const viewerFid = 10; const provider = ForYouProvider.Mbd; const limit = 20; const providerMetadata = encodeURIComponent( JSON.stringify({ filters: { channels: ["https://farcaster.group/founders"], }, }) ); client .fetchFeedForYou({ fid, viewerFid, provider, limit, providerMetadata }) .then((response) => { console.log("response:", response); }); ``` #### `fetchFeedByChannelIds` #### **v1** ```typescript const channelIds = ["neynar", "farcaster"]; const withRecasts = true; const viewerFid = 100; const withReplies = true; const limit = 30; const shouldModerate = false; client .fetchFeedByChannelIds(channelIds, { withRecasts, withReplies, limit, viewerFid, shouldModerate, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const channelIds = ["neynar", "farcaster"]; const withRecasts = true; const viewerFid = 100; const withReplies = true; const limit = 30; const shouldModerate = false; client .fetchFeedByChannelIds({ channelIds, withRecasts, viewerFid, withReplies, limit, shouldModerate, }) .then((response) => { console.log("response:", response); }); ``` #### `fetchFeedByParentUrls` #### **v1** ```typescript const parentUrls = [ "chain://eip155:1/erc721:0xd4498134211baad5846ce70ce04e7c4da78931cc", ]; const withRecasts = true; const viewerFid = 100; const withReplies = true; const limit = 30; client .fetchFeedByParentUrls(parentUrls, { withRecasts, withReplies, limit, viewerFid, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const parentUrls = [ "chain://eip155:1/erc721:0xd4498134211baad5846ce70ce04e7c4da78931cc", ]; const withRecasts = true; const viewerFid = 100; const withReplies = true; const limit = 30; client .fetchFeedByParentUrls({ parentUrls, withRecasts, viewerFid, withReplies, limit, }) .then((response) => { console.log("response:", response); }); ``` #### `fetchFeed` #### **v1** ```typescript import { FeedType } from "@neynar/nodejs-sdk/neynar-api/v2"; const feedType = FeedType.Following; const fid = 3; const withRecasts = true; const limit = 50; const viewerFid = 100; client .fetchFeed(feedType, { fid, limit, withRecasts, viewerFid }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: The import path for `FeedType` is changed. (Ref. [Import path changes](#import-path-changes)) ```typescript import { FeedType } from "@neynar/nodejs-sdk/build/api"; const feedType = FeedType.Following; const fid = 3; const withRecasts = true; const limit = 50; const viewerFid = 100; client .fetchFeed({ feedType, fid, withRecasts, limit, viewerFid }) .then((response) => { console.log("response:", response); }); ``` #### `fetchFramesOnlyFeed` #### **v1** ```typescript const limit = 30; const viewerFid = 3; client.fetchFramesOnlyFeed({ limit, viewerFid }).then((response) => { console.log("response:", response); }); ``` #### **v2** ```typescript const limit = 30; const viewerFid = 3; client.fetchFramesOnlyFeed({ limit, viewerFid }).then((response) => { console.log("response:", response); }); ``` #### `fetchTrendingFeed` #### **v1** ```typescript import { TrendingFeedTimeWindow } from "@neynar/nodejs-sdk"; const limit = 10; const viewerFid = 3; const timeWindow = TrendingFeedTimeWindow.SIX_HOUR; const channelId = "farcaster"; const provider = "mbd"; const providerMetadata = encodeURIComponent( JSON.stringify({ filters: { channels: ["https://farcaster.group/founders"], }, }) ); client .fetchTrendingFeed({ limit, timeWindow, channelId, viewerFid, provider, providerMetadata, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: 1. `TrendingFeedTimeWindow` is renamed to `FetchTrendingFeedTimeWindowEnum` (Ref. [Renamed enums](#renamed-enums)) 2. The import path is for `FetchTrendingFeedTimeWindowEnum` changed. (Ref. [Import path changes](#import-path-changes)) 3. Enum Keys have changed `SIX_HOUR` to `_6h` (Ref. [Enum Key Changes](#enum-key-changes)) ```typescript import { FetchTrendingFeedTimeWindowEnum } from "@neynar/nodejs-sdk/build/api"; const limit = 10; const viewerFid = 3; const timeWindow = FetchTrendingFeedTimeWindowEnum._6h; const channelId = "farcaster"; const provider = "mbd"; const providerMetadata = encodeURIComponent( JSON.stringify({ filters: { channels: ["https://farcaster.group/founders"], }, }) ); client .fetchTrendingFeed({ limit, viewerFid, timeWindow, channelId, provider, providerMetadata, }) .then((response) => { console.log("response:", response); }); ``` #### Reaction #### `publishReactionToCast` #### **v1** ```typescript import { ReactionType } from "@neynar/nodejs-sdk"; const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const reactionType = ReactionType.Like; const target = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f"; const idem = "my-reaction-idem"; client .publishReactionToCast(signerUuid, reactionType, target, { idem }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: 1. `publishReactionToCast` is renamed to `publishReaction` (Ref. [Renamed Methods](#renamed-methods)) 2. The import path for `ReactionType` is changed. (Ref. [Import path changes](#import-path-changes)) ```typescript import { ReactionType } from "@neynar/nodejs-sdk/build/api"; const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const reactionType = ReactionType.Like; const target = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f"; const idem = "my-reaction-idem"; client .publishReaction({ signerUuid, reactionType, target, idem }) .then((response) => { console.log("response:", response); }); ``` #### `deleteReactionFromCast` #### **v1** ```typescript import { ReactionType } from "@neynar/nodejs-sdk"; const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const reactionType = ReactionType.Like; const target = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f"; const idem = "my-reaction-idem"; client .deleteReactionFromCast(signerUuid, reactionType, target, { idem }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: 1. `deleteReactionFromCast` is renamed to `deleteReaction` (Ref. [Renamed Methods](#renamed-methods)) 2. The import path for `ReactionType` is changed. (Ref. [Import path changes](#import-path-changes)) ```typescript import { ReactionType } from "@neynar/nodejs-sdk/build/api"; const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec"; const reactionType = ReactionType.Like; const target = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f"; const idem = "my-reaction-idem"; client .deleteReaction({ signerUuid, reactionType, target, idem }) .then((response) => { console.log("response:", response); }); ``` #### `fetchUserReactions` #### **v1** ```typescript import { ReactionsType } from "@neynar/nodejs-sdk"; const fid = 3; const type = ReactionsType.All; const viewerFid = 19960; const limit = 50; client .fetchUserReactions(fid, type, { limit, viewerFid, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: The import path for `ReactionsType` is changed. (Ref. [Import path changes](#import-path-changes)) ```typescript import { ReactionsType } from "@neynar/nodejs-sdk/build/api"; const fid = 3; const type = ReactionsType.All; const viewerFid = 19960; const limit = 50; client.fetchUserReactions({ fid, type, viewerFid, limit }).then((response) => { console.log("response:", response); }); ``` #### `fetchReactionsForCast` #### **v1** ```typescript import { ReactionsType } from "@neynar/nodejs-sdk"; const hash = "0xfe90f9de682273e05b201629ad2338bdcd89b6be"; const types = ReactionsType.All; const viewerFid = 3; const limit = 50; client .fetchReactionsForCast(hash, types, { limit, viewerFid, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: 1. `fetchReactionsForCast` is now renamed to `fetchCastReactions` (Ref. [Renamed Methods](#renamed-methods)) 2. The import path for `ReactionsType` is changed. (Ref. [Import path changes](#import-path-changes)) ```typescript import { ReactionsType } from "@neynar/nodejs-sdk/build/api"; const hash = "0xfe90f9de682273e05b201629ad2338bdcd89b6be"; const types = ReactionsType.All; const viewerFid = 3; const limit = 50; client .fetchCastReactions({ hash, types, viewerFid, limit }) .then((response) => { console.log("response:", response); }); ``` #### Notifications #### `fetchAllNotifications` #### **v1** ```typescript import { NotificationType } from "@neynar/nodejs-sdk"; const fid = 3; const type = NotificationType.LIKES; const priorityMode = false; client .fetchAllNotifications(fid, { type, priorityMode, }) .then((response) => { console.log("response:", response); }); ``` #### **v2** Note: 1. `isPriority` is removed. 2. The import path is for `NotificationType` changed. (Ref. [Import path changes](#import-path-changes)) 3. Enum Keys have changed `LIKES` to `Likes` (Ref. [Enum Key Changes](#enum-key-changes)) ```typescript import { NotificationType } from "@neynar/nodejs-sdk/build/api";