Neynar Documentation

Documentation Index

Fetch the complete documentation index at: /llms.txt

Use this file to discover all available pages before exploring further.

Related API: Fetch notifications for 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:

import { NeynarAPIClient, Configuration } 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 config = new Configuration({
  apiKey: process.env.NEYNAR_API_KEY,
});

const client = new NeynarAPIClient(config);

Then fetch the notifications:

const dwrFID = 3;
const notifications = await client.fetchAllNotifications({fid: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 ...], [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 ...], [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 ...]
      ]
    }
  ],
  "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({
  fid: 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.fetchAllNotifications({
  fid: 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.fetchAllNotifications({
  fid: dwrFID,
  cursor: mentionsAndReplies.next.cursor,
});
console.log(nextMentionsAndReplies);

That’s it! You can now fetch notifications of any Farcaster user.