Notifications for FID
Fetch notifications for any Farcaster user
This guide demonstrates how to fetch notifications (inbound mentions, replies, likes, recasts, quotes) of a Farcaster user with the Neynar SDK.
Check out this Getting started guide to learn how to set up your environment and get an API key.
First, initialize the client:
// npm i @neynar/nodejs-sdk
import { NeynarAPIClient } from "@neynar/nodejs-sdk";
// make sure to set your NEYNAR_API_KEY .env
// don't have an API key yet? get one at neynar.com
const client = new NeynarAPIClient(process.env.NEYNAR_API_KEY);
Then fetch the notifications:
const dwrFID = 3;
const notifications = await client.fetchAllNotifications(dwrFID);
console.log(notifications);
Example output:
{
notifications: [
{
object: "notification",
most_recent_timestamp: "2023-11-28T11:11:11.000Z",
type: "likes",
cast: [Object ...],
reactions: [
[Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...]
]
}, {
object: "notification",
most_recent_timestamp: "2023-11-28T11:10:56.000Z",
type: "quote",
cast: [Object ...],
quotes: [
[Object ...], [Object ...]
]
}, {
object: "notification",
most_recent_timestamp: "2023-11-28T11:09:16.000Z",
type: "likes",
cast: [Object ...],
reactions: [
[Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...]
]
}, {
object: "notification",
most_recent_timestamp: "2023-11-28T11:05:59.000Z",
type: "follows",
follows: [
[Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...]
]
}, {
object: "notification",
most_recent_timestamp: "2023-11-28T10:25:51.000Z",
type: "likes",
cast: [Object ...],
reactions: [
[Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...],
[Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...], [Object ...]
]
}
],
next: {
cursor: "eyJ0aW1lc3RhbXAiOiIyMDIzLTExLTI4IDEwOjI1OjUxLjAwMDAwMDAifQ=="
}
}
So that's what @dwr.eth sees on his Farcaster notification! To fetch the next page of notifications, use the cursor:
const nextNotifications = await client.fetchAllNotifications(dwrFID, {
cursor: notifications.next.cursor,
});
To only fetch specific types of notifications like replies, mentions, and quotes, use the fetchMentionAndReplyNotifications function:
const mentionsAndReplies = await client.fetchMentionAndReplyNotifications(
dwrFID
);
console.log(mentionsAndReplies);
Example output:
{
result: {
notifications: [
[Object ...], [Object ...], [Object ...], [Object ...], [Object ...]
],
next: {
cursor: "eyJ0aW1lc3RhbXAiOiIyMDIzLTExLTI4IDA3OjI5OjI4LjAwMDAwMDAifQ=="
}
}
}
To fetch the next page of mentions and replies, use the cursor:
const nextMentionsAndReplies = await client.fetchMentionAndReplyNotifications(
dwrFID,
{
cursor: mentionsAndReplies.result.next.cursor,
}
);
That's it! You can now fetch notifications of any Farcaster user.
Ready to start building?
Get your subscription at neynar.com and reach out to us on Telegram with any questions!
Updated 23 days ago