- Installation
- Client Initialization
- Removed Methods and Changes in Method Names
- Enum Changes
- Import Path Changes
- Affected v1 API Methods
- Affected v2 API Methods
- Users
searchUser
fetchBulkUsers
fetchBulkUsersByEthereumAddress
lookupUserByCustodyAddress
lookupUserByUsernameV2
fetchUsersByLocation
fetchPopularCastsByUser
fetchRepliesAndRecastsForUser
fetchCastsForUser
followUser
unfollowUser
registerAccount
updateUser
publishVerification
deleteVerification
fetchAuthorizationUrl
- Signer
- Cast
- Feed
- Reaction
- Notifications
- Channel
searchChannels
fetchBulkChannels
lookupChannel
removeChannelMember
fetchChannelMembers
inviteChannelMember
respondChannelInvite
fetchFollowersForAChannel
fetchRelevantFollowersForAChannel
fetchUserChannels
fetchUserChannelMemberships
followChannel
unfollowChannel
fetchTrendingChannels
fetchUsersActiveChannels
- Follows
- Storage
- Frame
- fname
- Webhook
- Action
- Mute
- Block
- Ban
- Onchain
- Users
yarn add @neynar/nodejs-sdk
OR
npm install @neynar/nodejs-sdk
v1
import { NeynarAPIClient } from "@neynar/nodejs-sdk";
const client = new NeynarAPIClient("API_KEY", {
baseOptions: {
headers: {
"x-neynar-experimental": true,
},
},
});
v2
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);
Note: All Neynar API v1-related methods have been removed from SDK v2. This version of the SDK will only support Neynar API v2.
The following methods have been removed entirely from SDK v2:
Removed Method | Replacement |
---|---|
fetchRecentUsers |
Use webhook or kafka |
fetchAllCastsLikedByUser |
fetchUserReactions |
lookupUserByFid |
fetchBulkUsers |
lookupCustodyAddressForUser |
fetchBulkUsers |
lookUpCastByHash |
lookUpCastByHashOrWarpcastUrl |
fetchAllCastsInThread |
lookupCastConversation |
fetchAllCastsCreatedByUser |
fetchCastsForUser |
fetchRecentCasts |
Use webhook or kafka |
fetchUserVerifications |
fetchBulkUsers |
lookupUserByVerification |
fetchBulkUsersByEthOrSolAddress |
fetchMentionAndReplyNotifications |
fetchAllNotifications |
fetchUserLikesAndRecasts |
fetchUserReactions |
Checkout Affected v1 API Methods on how to replace it.
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 |
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 |
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 |
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
(formerlyTimeWindow
)FetchTrendingFeedTimeWindowEnum
(formerlyTrendingFeedTimeWindow
)FetchBulkCastsSortTypeEnum
(formerlyBulkCastsSortType
)BulkUserAddressType
(formerlyBulkUserAddressTypes
)
All the api-related enums and schemas are now centralized and exported from /build/api
directory instead of /build/neynar-api/v2/*
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
import { isApiErrorResponse, WebhookFollowCreated, WebhookFollowDeleted, WebhookReactionCreated, WebhookReactionDeleted, WebhookCastCreated, WebhookUserCreated, WebhookUserUpdated } form '@neynar/nodejs-sdk'
The following methods have been completely removed in SDK v2 (Ref. Removed Methods). As a result, the response structure will be different in the new methods that replace the deprecated v1 methods.
fetchAllCastsLikedByUser
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
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
const fid = 19960;
const viewerFid = 194;
client.lookupUserByFid(fid, viewerFid).then((response) => {
const { user } = response.result;
console.log("user", user);
});
fetchBulkUsers
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
const fid = 19960;
client.lookupCustodyAddressForUser(fid).then((response) => {
const { fid, custodyAddress } = response.result;
console.log("fid:", fid);
console.log("custodyAddress:", custodyAddress);
});
fetchBulkUsers
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
const hash = "0xfe90f9de682273e05b201629ad2338bdcd89b6be";
const viewerFid = 3;
client
.lookUpCastByHash(hash, {
viewerFid,
})
.then((response) => {
const { cast } = response.result;
console.log(cast);
});
lookupCastByHashOrWarpcastUrl
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
const hash = "0xfe90f9de682273e05b201629ad2338bdcd89b6be";
const viewerFid = 3;
client.fetchAllCastsInThread(hash, viewerFid).then((response) => {
const { casts } = response.result;
console.log("conversation", casts);
});
lookupCastConversation
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
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
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
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
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
const address = "0x7ea5dada4021c2c625e73d2a78882e91b93c174c";
client.lookupUserByVerification(address).then((response) => {
const { user } = response.result;
console.log("User:", user);
});
fetchBulkUsersByEthOrSolAddress
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
const fid = 3;
const viewerFid = 2;
client
.fetchMentionAndReplyNotifications(fid, {
viewerFid,
})
.then((response) => {
console.log("Notifications:", response.result);
});
fetchAllNotifications
const fid = 3;
client.fetchAllNotifications({ fid }).then((response) => {
console.log("response:", response); // This structure is changed
});
fetchUserLikesAndRecasts
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
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);
});
- 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.
const q = "ris";
const viewerFid = 19960;
const limit = 10;
client.searchUser(q, viewerFid, { limit }).then((response) => {
console.log("response:", response);
});
const q = "ris";
const viewerFid = 19960;
const limit = 10;
client.searchUser({ q, viewerFid, limit }).then((response) => {
console.log("response:", response);
});
const fids = [2, 3];
const viewerFid = 19960;
client.fetchBulkUsers(fids, { viewerFid }).then((response) => {
console.log("response:", response);
});
const fids = [2, 3];
const viewerFid = 19960;
client.fetchBulkUsers({ fids, viewerFid }).then((response) => {
console.log("response:", response);
});
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);
});
Note:
fetchBulkUsersByEthereumAddress
is renamed tofetchBulkUsersByEthOrSolAddress
(Ref. Renamed Methods)BulkUserAddressTypes
is renamed toBulkUserAddressType
(Ref. Renamed enums)- Import path for
BulkUserAddressType
is changed (Ref. Import path changes) - Enum key changed from
CUSTODY_ADDRESS
toCustodyAddress
(Ref. Enum Key Changes)
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);
});
const custodyAddress = "0xd1b702203b1b3b641a699997746bd4a12d157909";
client.lookupUserByCustodyAddress(custodyAddress).then((response) => {
console.log("response:", response);
});
const custodyAddress = "0xd1b702203b1b3b641a699997746bd4a12d157909";
client.lookupUserByCustodyAddress({ custodyAddress }).then((response) => {
console.log("response:", response);
});
This method is renamed to lookupUserByUsername
.
const username = "manan";
const viewerFid = 3;
client.lookupUserByUsernameV2(username, { viewerFid }).then((response) => {
console.log("response:", response);
});
Note: lookupUserByUsernameV2
is now renamed to lookupUserByUsername
(Ref. Methods Updated to v2 API)
const username = "manan";
const viewerFid = 3;
client.lookupUserByUsername({ username, viewerFid }).then((response) => {
console.log("response:", response);
});
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);
});
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);
});
const fid = 3;
const viewerFid = 19960;
client.fetchPopularCastsByUser(fid, { viewerFid }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const viewerFid = 19960;
client.fetchPopularCastsByUser({ fid, viewerFid }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const limit = 25;
const viewerFid = 19960;
client
.fetchRepliesAndRecastsForUser(fid, { limit, viewerFid })
.then((response) => {
console.log("response:", response);
});
const fid = 3;
const limit = 25;
const viewerFid = 3;
client
.fetchRepliesAndRecastsForUser({ fid, limit, viewerFid })
.then((response) => {
console.log("response:", response);
});
const fid = 3;
const viewerFid = 3;
const limit = 25;
const includeReplies = false;
client
.fetchCastsForUser(fid, {
limit,
viewerFid,
includeReplies,
})
.then((response) => {
console.log("response:", response);
});
const fid = 3;
const viewerFid = 3;
const limit = 25;
const includeReplies = false;
client
.fetchCastsForUser({ fid, viewerFid, limit, includeReplies })
.then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const targetFids = [3, 2, 1];
client.followUser(signerUuid, targetFids).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const targetFids = [3, 2, 1];
client.followUser({ signerUuid, targetFids }).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const targetFids = [3, 2, 1];
client.unfollowUser(signerUuid, targetFids).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const targetFids = [3, 2, 1];
client.unfollowUser({ signerUuid, targetFids }).then((response) => {
console.log("response:", response);
});
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);
});
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);
});
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);
});
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);
});
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);
});
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);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const address = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f";
client.deleteVerification(signerUuid, address).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const address = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f";
client.deleteVerification({ signerUuid, address }).then((response) => {
console.log("response:", response);
});
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);
});
Note: The import path for AuthorizationUrlResponseType
is changed. (Ref. Import path changes)
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);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
client.lookupSigner(signerUuid).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
client.lookupSigner({ signerUuid }).then((response) => {
console.log("response:", response);
});
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);
});
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);
});
const publicKey =
"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef";
client.lookupDeveloperManagedSigner(publicKey).then((response) => {
console.log("response:", response);
});
const publicKey =
"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef";
client.lookupDeveloperManagedSigner({ publicKey }).then((response) => {
console.log("response:", response);
});
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);
});
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);
});
const body = {};
client.publishMessageToFarcaster(body).then((response) => {
console.log("response:", response);
});
const body = {};
client.publishMessageToFarcaster({ body }).then((response) => {
console.log("response:", response);
});
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);
});
Note:
lookUpCastByHashOrWarpcastUrl
is renamed tolookupCastByHashOrWarpcastUrl
(Ref. Renamed Methods)- The import path for
CastParamType
is changed. (Ref. Import path changes)
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);
});
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);
});
Note:
replyTo
param is now renamed toparent
parent_author_fid
is now cam camelCase (parentAuthorFid
)- sdk v1
response
object is sdk v2response.cast
object
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);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const targetHash = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f";
client.deleteCast(signerUuid, targetHash).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const targetHash = "0x1ea99cbed57e4020314ba3fadd7c692d2de34d5f";
client.deleteCast({ signerUuid, targetHash }).then((response) => {
console.log("response:", response);
});
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);
});
Note:
BulkCastsSortType
is renamed toFetchBulkCastsSortTypeEnum
(Ref. Renamed enums)- Enum key is changed now
LIKES
isLikes
(Ref. Enum Key Changes)
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);
});
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);
});
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);
});
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);
});
Note: The import path for CastParamType
is changed. (Ref. Import path changes)
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);
});
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);
});
Note: The import path for CastComposerType
is changed. (Ref. Import path changes)
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);
});
const fid = 3;
const viewerFid = 100;
const withRecasts = true;
const limit = 30;
client
.fetchUserFollowingFeed(fid, {
withRecasts,
limit,
viewerFid,
})
.then((response) => {
console.log("response:", response);
});
const fid = 3;
const viewerFid = 100;
const withRecasts = true;
const limit = 30;
client
.fetchUserFollowingFeed({ fid, viewerFid, withRecasts, limit })
.then((response) => {
console.log("response:", response);
});
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);
});
Note: The import path for ForYouProvider
is changed. (Ref. Import path changes)
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);
});
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);
});
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);
});
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);
});
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);
});
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);
});
Note: The import path for FeedType
is changed. (Ref. Import path changes)
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);
});
const limit = 30;
const viewerFid = 3;
client.fetchFramesOnlyFeed({ limit, viewerFid }).then((response) => {
console.log("response:", response);
});
const limit = 30;
const viewerFid = 3;
client.fetchFramesOnlyFeed({ limit, viewerFid }).then((response) => {
console.log("response:", response);
});
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);
});
Note:
TrendingFeedTimeWindow
is renamed toFetchTrendingFeedTimeWindowEnum
(Ref. Renamed enums)- The import path is for
FetchTrendingFeedTimeWindowEnum
changed. (Ref. Import path changes) - Enum Keys have changed
SIX_HOUR
to_6h
(Ref. Enum Key Changes)
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);
});
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);
});
Note:
publishReactionToCast
is renamed topublishReaction
(Ref. Renamed Methods)- The import path for
ReactionType
is changed. (Ref. Import path changes)
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);
});
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);
});
Note:
deleteReactionFromCast
is renamed todeleteReaction
(Ref. Renamed Methods)- The import path for
ReactionType
is changed. (Ref. Import path changes)
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);
});
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);
});
Note: The import path for ReactionsType
is changed. (Ref. Import path changes)
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);
});
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);
});
Note:
fetchReactionsForCast
is now renamed tofetchCastReactions
(Ref. Renamed Methods)- The import path for
ReactionsType
is changed. (Ref. Import path changes)
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);
});
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);
});
Note:
isPriority
is removed.- The import path is for
NotificationType
changed. (Ref. Import path changes) - Enum Keys have changed
LIKES
toLikes
(Ref. Enum Key Changes)
import { NotificationType } from "@neynar/nodejs-sdk/build/api";
const fid = 3;
const type = NotificationType.Likes;
const priorityMode = false;
client.fetchAllNotifications({ fid, type, priorityMode }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const channelIds = ["neynar", "farcaster"];
const priorityMode = false;
client
.fetchChannelNotificationsForUser(fid, channelIds, {
priorityMode,
})
.then((response) => {
console.log("response:", response);
});
Note: isPriority
is removed.
const fid = 3;
const channelIds = ["neynar", "farcaster"];
const priorityMode = false;
client
.fetchChannelNotificationsForUser({ fid, channelIds, priorityMode })
.then((response) => {
console.log("response:", response);
});
const fid = 3;
const parentUrls = [
"chain://eip155:1/erc721:0xd4498134211baad5846ce70ce04e7c4da78931cc",
"chain://eip155:1/erc721:0xfd8427165df67df6d7fd689ae67c8ebf56d9ca61",
];
const priorityMode = false;
client
.fetchNotificationsByParentUrlForUser(fid, parentUrls, { priorityMode })
.then((response) => {
console.log("response:", response);
});
Note: isPriority
is removed.
const fid = 3;
const parentUrls = [
"chain://eip155:1/erc721:0xd4498134211baad5846ce70ce04e7c4da78931cc",
"chain://eip155:1/erc721:0xfd8427165df67df6d7fd689ae67c8ebf56d9ca61",
];
const priorityMode = false;
client
.fetchNotificationsByParentUrlForUser({ fid, parentUrls, priorityMode })
.then((response) => {
console.log("response:", response);
});
import { NotificationType } from "@neynar/nodejs-sdk";
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const type = NotificationType.FOLLOWS;
client.markNotificationsAsSeen(signerUuid, { type }).then((response) => {
console.log("response:", response);
});
Note:
- The import path for
NotificationType
is changed. (Ref. Import path changes) - Enum Keys have changed
FOLLOWS
toFollows
(Ref. Enum Key Changes)
import { NotificationType } from "@neynar/nodejs-sdk/build/api";
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const type = NotificationType.Follows;
client.markNotificationsAsSeen({ signerUuid, type }).then((response) => {
console.log("response:", response);
});
const q = ux;
const limit = 5;
client.searchChannels("ux", { limit }).then((response) => {
console.log("response:", response);
});
const q = ux;
const limit = 5;
client.searchChannels({ q, limit }).then((response) => {
console.log("response:", response);
});
import { ChannelType } from "@neynar/nodejs-sdk";
const ids = ["neynar", "farcaster"];
const type = ChannelType.Id;
const viewerFid = 3;
client.fetchBulkChannels(ids, { viewerFid, type }).then((response) => {
console.log("response:", response);
});
Note: The import path for ChannelType
is changed. (Ref. Import path changes)
const ids = ["neynar", "farcaster"];
const type = ChannelType.Id;
const viewerFid = 3;
client.fetchBulkChannels({ ids, type, viewerFid }).then((response) => {
console.log("response:", response);
});
import { ChannelType } from "@neynar/nodejs-sdk";
const id = "neynar";
const type = ChannelType.Id;
const viewerFid = 3;
client.lookupChannel("neynar", { viewerFid, type }).then((response) => {
console.log("response:", response);
});
import { ChannelType } from "@neynar/nodejs-sdk/build/api";
const id = "neynar";
const type = ChannelType.Id;
const viewerFid = 3;
client.lookupChannel({ id, type, viewerFid }).then((response) => {
console.log("response:", response);
});
import { ChannelMemberRole } from "@neynar/nodejs-sdk/neynar-api/v2";
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const channelId = "neynar";
const fid = 3;
const role = ChannelMemberRole.Member;
client
.removeChannelMember(signerUuid, channelId, fid, role)
.then((response) => {
console.log("response:", response);
});
Note: The import path for ChannelMemberRole
is changed. (Ref. Import path changes)
import { ChannelMemberRole } from "@neynar/nodejs-sdk/build/api";
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const channelId = "neynar";
const fid = 3;
const role = "member";
client
.removeChannelMember({ signerUuid, channelId, fid, role })
.then((response) => {
console.log("response:", response);
});
const channelId = "neynar";
const fid = 194;
const limit = 10;
client.fetchChannelMembers(channelId, { limit, fid }).then((response) => {
console.log("response:", response);
});
const channelId = "neynar";
const fid = 194;
const limit = 10;
client.fetchChannelMembers({ channelId, fid, limit }).then((response) => {
console.log("response:", response);
});
import { ChannelMemberRole } from "@neynar/nodejs-sdk/neynar-api/v2";
const signnerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const channelId = "neynar";
const fid = 3;
const role = ChannelMemberRole.Member;
client
.inviteChannelMember(signnerUuid, channelId, fid, role)
.then((response) => {
console.log("response:", response);
});
Note: The import path for ChannelMemberRole
is changed. (Ref. Import path changes)
import { ChannelMemberRole } from "@neynar/nodejs-sdk/build/api";
const signnerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const channelId = "neynar";
const fid = 3;
const role = ChannelMemberRole.Member;
client
.inviteChannelMember({ signerUuid, channelId, fid, role })
.then((response) => {
console.log("response:", response);
});
import { ChannelMemberRole } from "@neynar/nodejs-sdk/neynar-api/v2";
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const channelId = "neynar";
const role = ChannelMemberRole.Member;
const accept = true;
client
.respondChannelInvite(signerUuid, channelId, role, accept)
.then((response) => {
console.log("response:", response);
});
Note: The import path for ChannelMemberRole
is changed. (Ref. Import path changes)
import { ChannelMemberRole } from "@neynar/nodejs-sdk/build/api";
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const channelId = "neynar";
const role = ChannelMemberRole.Member;
const accept = true;
client
.respondChannelInvite({ signerUuid, channelId, role, accept })
.then((response) => {
console.log("response:", response);
});
const id = "founders";
const viewerFid = 3;
const limit = 50;
client.fetchFollowersForAChannel(id, { limit, viewerFid }).then((response) => {
console.log("response:", response);
});
const id = "founders";
const viewerFid = 3;
const limit = 50;
client.fetchFollowersForAChannel({ id, viewerFid, limit }).then((response) => {
console.log("response:", response);
});
const id = "why";
const viewerFid = 3;
client.fetchRelevantFollowersForAChannel(id, viewerFid).then((response) => {
console.log("response:", response);
});
const id = "why";
const viewerFid = 3;
client.fetchRelevantFollowersForAChannel({ id, viewerFid }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const limit = 5;
client.fetchUserChannels(fid, { limit }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const limit = 5;
client.fetchUserChannels({ fid, limit }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const limit = 10;
client.fetchUserChannelMemberships(fid, { limit }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const limit = 10;
client.fetchUserChannelMemberships({ fid, limit }).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const channelId = "neynar";
client.followChannel(signerUuid, channelId).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const channelId = "neynar";
client.followChannel({ signerUuid, channelId }).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const channelId = "neynar";
client.unfollowChannel(signerUuid, channelId).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const channelId = "neynar";
client.unfollowChannel({ signerUuid, channelId }).then((response) => {
console.log("response:", response);
});
import { TimeWindow } from "@neynar/nodejs-sdk";
const timeWindow = TimeWindow.SEVEN_DAYS;
const limit = 20;
client.fetchTrendingChannels(timeWindow, { limit }).then((response) => {
console.log("response:", response);
});
Note:
TimeWindow
is renamed toFetchTrendingChannelsTimeWindowEnum
(Ref. Renamed enums)FetchTrendingChannelsTimeWindowEnum
import is changed (Ref. Import Path Changes)- Enums key is changed from
SEVEN_DAYS
to_7d
(Ref. Enum Key Changes)
import { FetchTrendingChannelsTimeWindowEnum } from "@neynar/nodejs-sdk/build/api";
const timeWindow = FetchTrendingChannelsTimeWindowEnum._7d;
const limit = 20;
client.fetchTrendingChannels({ timeWindow, limit }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const limit = 10;
client.fetchUsersActiveChannels(fid, { limit }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const limit = 10;
client.fetchUsersActiveChannels({ fid, limit }).then((response) => {
console.log("response:", response);
});
import { FollowSortType } from "@neynar/nodejs-sdk";
const fid = 3;
const viewerFid = 23;
const sortType = FollowSortType.DescChron;
const limit = 10;
client
.fetchUserFollowersV2(fid, { limit, viewerFid, sortType })
.then((response) => {
console.log("response:", response);
});
Note:
fetchUserFollowersV2
is now renamed tofetchUserFollowers
(Ref. Methods Updated to v2 API)FollowSortType
import is changed (Ref. Import Path Changes)
import { FollowSortType } from "@neynar/nodejs-sdk/build/api";
const fid = 3;
const viewerFid = 23;
const sortType = FollowSortType.DescChron;
const limit = 10;
client
.fetchUserFollowers({ fid, viewerFid, sortType, limit })
.then((response) => {
console.log("response:", response);
});
const targetFid = 3;
const viewerFid = 19960;
client.fetchRelevantFollowers(targetFid, viewerFid).then((response) => {
console.log("response:", response);
});
const targetFid = 3;
const viewerFid = 19960;
client.fetchRelevantFollowers({ targetFid, viewerFid }).then((response) => {
console.log("response:", response);
});
import { FollowSortType } from "@neynar/nodejs-sdk";
const fid = 3;
const viewerFid = 23;
const sortType = FollowSortType.DescChron;
const limit = 10;
client
.fetchUserFollowingV2(fid, { limit, viewerFid, sortType })
.then((response) => {
console.log("response:", response);
});
Note:
fetchUserFollowingV2
is now renamed tofetchUserFollowing
(Ref. Methods Updated to v2 API)FollowSortType
import is changed (Ref. Import Path Changes)
import { FollowSortType } from "@neynar/nodejs-sdk/build/api";
const fid = 3;
const viewerFid = 23;
const sortType = FollowSortType.DescChron;
const limit = 10;
client
.fetchUserFollowing({ fid, viewerFid, sortType, limit })
.then((response) => {
console.log("response:", response);
});
const fid = 3;
const viewerFid = 19950;
const limit = 5;
client.fetchFollowSuggestions(fid, { limit, viewerFid }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const viewerFid = 19950;
const limit = 5;
client.fetchFollowSuggestions({ fid, viewerFid, limit }).then((response) => {
console.log("response:", response);
});
const fid = 3;
client.lookupUserStorageAllocations(fid).then((response) => {
console.log("response:", response);
});
const fid = 3;
client.lookupUserStorageAllocations({ fid }).then((response) => {
console.log("response:", response);
});
const fid = 3;
client.lookupUserStorageUsage(3).then((response) => {
console.log("User Storage Usage:", response);
});
const fid = 3;
client.lookupUserStorageUsage({ fid }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const units = 1;
const idem = "some_random_unique_key";
client.buyStorage(fid, { units, idem }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const units = 1;
const idem = "some_random_unique_key";
client.buyStorage({ fid, units, idem }).then((response) => {
console.log("response:", response);
});
const signerUuid = "signerUuid";
const castHash = "castHash";
const action = {
button: {
title: "Button Title",
index: 1,
},
frames_url: "frames Url",
post_url: "Post Url",
};
client.postFrameAction(signerUuid, castHash, action).then((response) => {
console.log("response:", response);
});
const signerUuid = "signerUuid";
const castHash = "castHash";
const action = {
button: {
title: "Button Title",
index: 1,
},
frames_url: "frames Url",
post_url: "Post Url",
};
client.postFrameAction({ signerUuid, castHash, action }).then((response) => {
console.log("response:", response);
});
const messageBytesInHex = "messageBytesInHex";
const castReactionContext = false;
const followContext = true;
const signerContext = true;
const channelFollowContext = true;
client
.validateFrameAction(messageBytesInHex, {
castReactionContext,
followContext,
signerContext,
channelFollowContext,
})
.then((response) => {
console.log("response:", response);
});
const messageBytesInHex = "messageBytesInHex";
const castReactionContext = false;
const followContext = true;
const signerContext = true;
const channelFollowContext = true;
client
.validateFrameAction({
messageBytesInHex,
castReactionContext,
followContext,
signerContext,
channelFollowContext,
})
.then((response) => {
console.log("response:", response);
});
import {
ValidateFrameAnalyticsType,
ValidateFrameAggregateWindow,
} from "@neynar/nodejs-sdk";
const frameUrl = "https://shorturl.at/bDRY9";
const analyticsType = ValidateFrameAnalyticsType.InteractionsPerCast;
const start = "2024-04-06T06:44:56.811Z";
const stop = "2024-04-08T06:44:56.811Z";
const aggregateWindow = ValidateFrameAggregateWindow.TWELVE_HOURS;
client
.fetchValidateFrameAnalytics(frameUrl, analyticsType, start, stop, {
aggregateWindow,
})
.then((response) => {
console.log("response:", response);
});
Note:
- Import for
ValidateFrameAnalyticsType
andValidateFrameAggregateWindow
is changed (Ref. Import Path Changes) - Enums key is changed from
TWELVE_HOURS
to_12h
(Ref. Enum Key Changes)
import {
ValidateFrameAnalyticsType,
ValidateFrameAggregateWindow,
} from "@neynar/nodejs-sdk/build/api";
const frameUrl = "https://shorturl.at/bDRY9";
const analyticsType = ValidateFrameAnalyticsType.InteractionsPerCast;
const start = "2024-04-06T06:44:56.811Z";
const stop = "2024-04-08T06:44:56.811Z";
const aggregateWindow = ValidateFrameAggregateWindow._12h;
client
.fetchValidateFrameAnalytics({
frameUrl,
analyticsType,
start,
stop,
aggregateWindow,
})
.then((response) => {
console.log("response:", response);
});
import { FrameType } from "@neynar/nodejs-sdk";
const type = FrameType.Uuid;
const uuid = "your-frame-uuid";
client.lookupNeynarFrame(uuid, { type }).then((response) => {
console.log("response:", response);
});
Note: Import for FrameType
is changed (Ref. Import Path Changes)
import { FrameType } from "@neynar/nodejs-sdk/build/api";
const type = FrameType.Uuid;
const uuid = "your-frame-uuid";
client.lookupNeynarFrame({ type, uuid }).then((response) => {
console.log("response:", response);
});
const uuid = "your-frame-uuid";
client.deleteNeynarFrame(uuid).then((response) => {
console.log("response:", response);
});
const uuid = "your-frame-uuid";
client.deleteNeynarFrame({ uuid }).then((response) => {
console.log("response:", response);
});
const url = "https://frames.neynar.com/f/862277df/ff7be6a4";
client.fetchFrameMetaTagsFromUrl(url).then((response) => {
console.log("response:", response);
});
const url = "https://frames.neynar.com/f/862277df/ff7be6a4";
client.fetchFrameMetaTagsFromUrl({ url }).then((response) => {
console.log("response:", response);
});
const action = // Example action
const signature_packet = // Example signature packet
const castHash = "castHash";
client
.postFrameDeveloperManagedAction(action, signature_packet, {
castHash: castHash,
})
.then((response) => {
console.log("response:", response);
});
const action = // Example action
const signature_packet = // Example signature packet
const castHash = "castHash";
client.postFrameActionDeveloperManaged({castHash, action, signaturePacket}).then(response => {
console.log('response:', response);
});
const fname = "shreyas-chorge";
client.isFnameAvailable(fname).then((response) => {
console.log("response:", response);
});
const fname = "shreyas-chorge";
client.isFnameAvailable({ fname }).then((response) => {
console.log("response:", response);
});
const webhookId = "yourWebhookId";
client.lookupWebhook(webhookId).then((response) => {
console.log("response:", response);
});
const webhookId = "yourWebhookId";
client.lookupWebhook({ webhookId }).then((response) => {
console.log("response:", response);
});
const name = "Cast created Webhook";
const url = "https://example.com/webhook";
const subscription = {
"cast.created": {
author_fids: [3, 196, 194],
mentioned_fids: [196],
},
"user.created": {},
};
client.publishWebhook(name, url, { subscription }).then((response) => {
console.log("response:", response);
});
const name = "Cast created Webhook";
const url = "https://example.com/webhook";
const subscription = {
"cast.created": {
author_fids: [3, 196, 194],
mentioned_fids: [196],
},
"user.created": {},
};
client.publishWebhook({ name, url, subscription }).then((response) => {
console.log("response:", response);
});
const webhookId = "yourWebhookId";
const active = false;
client.updateWebhookActiveStatus(webhookId, active).then((response) => {
console.log("response:", response);
});
const webhookId = "yourWebhookId";
const active = false;
client.updateWebhookActiveStatus({ webhookId, active }).then((response) => {
console.log("response:", response);
});
const webhookId = "existingWebhookId";
const name = "UpdatedWebhookName";
const url = "https://example.com/new-webhook-url";
const subscription = {
"cast.created": {
author_fids: [2, 4, 6],
mentioned_fids: [194],
},
"user.created": {},
};
client
.updateWebhook(webhookId, name, url, { subscription })
.then((response) => {
console.log("response:", response);
});
const webhookId = "existingWebhookId";
const name = "UpdatedWebhookName";
const url = "https://example.com/new-webhook-url";
const subscription = {
"cast.created": {
author_fids: [2, 4, 6],
mentioned_fids: [194],
},
"user.created": {},
};
client
.updateWebhook({ name, url, subscription, webhookId })
.then((response) => {
console.log("response:", response);
});
const webhookId = "yourWebhookId";
client.deleteWebhook(webhookId).then((response) => {
console.log("response:", response);
});
const webhookId = "yourWebhookId";
client.deleteWebhook({ webhookId }).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const baseUrl = "https://appb.example.com";
const action = {
type: "sendMessage",
payload: {
message: "Hello from App A!",
},
};
client.publishFarcasterAction(signerUuid, baseUrl, action).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const baseUrl = "https://appb.example.com";
const action = {
type: "sendMessage",
payload: {
message: "Hello from App A!",
},
};
client
.publishFarcasterAction({ signerUuid, baseUrl, action })
.then((response) => {
console.log("response:", response);
});
const fid = 3;
const limit = 10;
client.fetchMuteList(fid, { limit }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const limit = 10;
client.fetchMuteList({ fid, limit }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const mutedFid = 19960;
client.publishMute(fid, mutedFid).then((response) => {
console.log("response:", response);
});
const fid = 3;
const mutedFid = 19960;
client.publishMute({ fid, mutedFid }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const mutedFid = 19960;
client.deleteMute(fid, mutedFid).then((response) => {
console.log("Mute Response:", response);
});
const fid = 3;
const mutedFid = 19960;
client.deleteMute({ fid, mutedFid }).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const blockedFid = 19960;
client.publishBlock(signerUuid, blockedFid).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const blockedFid = 19960;
client.publishBlock({ signerUuid, blockedFid }).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const blockedFid = 19960;
client.deleteBlock(signerUuid, blockedFid).then((response) => {
console.log("response:", response);
});
const signerUuid = "19d0c5fd-9b33-4a48-a0e2-bc7b0555baec";
const blockedFid = 19960;
client.deleteBlock({ signerUuid, blockedFid }).then((response) => {
console.log("response:", response);
});
const fids = [3, 19960];
client.publishBan(fids).then((response) => {
console.log("response:", response);
});
const fids = [3, 19960];
client.publishBans({ fids }).then((response) => {
console.log("response:", response);
});
const fids = [3, 19960];
client.deleteBans(fids).then((response) => {
console.log("response:", response);
});
const fids = [3, 19960];
client.deleteBans({ fids }).then((response) => {
console.log("response:", response);
});
const fid = 3;
const networks = Networks.Base;
client.fetchUserBalance(fid, networks).then((response) => {
console.log("response:", response);
});
const fid = 3;
const networks = Networks.Base;
client.fetchUserBalance({ fid, networks }).then((response) => {
console.log("response:", response);
});
import { SubscriptionProvider } from "@neynar/nodejs-sdk";
const fid = 3;
const subscriptionProvider = SubscriptionProvider.FabricStp;
client.fetchSubscriptionsForFid(fid, subscriptionProvider).then((response) => {
console.log("response:", response);
});
Note: Import for SubscriptionProvider
is changed (Ref. Import Path Changes)
import { SubscriptionProvider } from "@neynar/nodejs-sdk/build/api";
const fid = 3;
const subscriptionProvider = SubscriptionProvider.FabricStp;
client
.fetchSubscriptionsForFid({ fid, subscriptionProvider })
.then((response) => {
console.log("response:", response);
});
import { SubscriptionProvider } from "@neynar/nodejs-sdk";
const fid = 3;
const subscriptionProvider = SubscriptionProvider.FabricStp;
const viewerFid = 1231;
client
.fetchSubscribedToForFid(fid, subscriptionProvider, { viewerFid })
.then((response) => {
console.log("response:", response);
});
Note: Import for SubscriptionProvider
is changed (Ref. Import Path Changes)
import { SubscriptionProvider } from "@neynar/nodejs-sdk/build/api";
const fid = 3;
const subscriptionProvider = SubscriptionProvider.FabricStp;
const viewerFid = 1231;
client
.fetchSubscribedToForFid({ fid, subscriptionProvider, viewerFid })
.then((response) => {
console.log("response:", response);
});
import { SubscriptionProvider } from "@neynar/nodejs-sdk";
const fid = 3;
const subscriptionProvider = SubscriptionProvider.FabricStp;
const viewerFid = 1231;
client
.fetchSubscribedToForFid(fid, subscriptionProvider, { viewerFid })
.then((response) => {
console.log("response:", response);
});
import { SubscriptionProvider } from "@neynar/nodejs-sdk/build/api";
const fid = 3;
const subscriptionProvider = SubscriptionProvider.FabricStp;
const viewerFid = 1231;
client
.fetchSubscribersForFid({ fid, subscriptionProvider, viewerFid })
.then((response) => {
console.log("response:", response);
});
const addresses = [
"0xedd3783e8c7c52b80cfbd026a63c207edc9cbee7",
"0x5a927ac639636e534b678e81768ca19e2c6280b7",
];
const contractAddress = "0x76ad4cb9ac51c09f4d9c2cadcea75c9fa9074e5b";
const chainId = "8453";
client
.fetchSubscriptionCheck(addresses, contractAddress, chainId)
.then((response) => {
console.log("response:", response);
});
const addresses = [
"0xedd3783e8c7c52b80cfbd026a63c207edc9cbee7",
"0x5a927ac639636e534b678e81768ca19e2c6280b7",
];
const contractAddress = "0x76ad4cb9ac51c09f4d9c2cadcea75c9fa9074e5b";
const chainId = "8453";
client
.fetchSubscriptionCheck({ addresses, contractAddress, chainId })
.then((response) => {
console.log("response:", response);
});
This guide should assist in updating your existing code to SDK v2. If you encounter any issues or have further questions, please reach out to us. Warpcast Telegram