Neynar HubEvents API

Operations related to hub events.

Operations 2

GET /v1/events Page of events #
GET /v1/eventById Event by ID #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/neynar-hubevents-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

neynar-hubevents-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Farcaster Hub Hub Events API
  version: 2.35.0
  description: 'Perform basic queries of Farcaster state via the REST API of a Farcaster hub. See the [Neynar docs](https://docs.neynar.com/reference) for more details.

    '
  contact:
    name: Neynar
    url: https://neynar.com/
    email: team@neynar.com
servers:
- url: https://snapchain-api.neynar.com
security:
- ApiKeyAuth: []
tags:
- name: HubEvents
  description: Operations related to hub events.
paths:
  /v1/events:
    get:
      tags:
      - HubEvents
      summary: Page of events
      description: Fetch a list of events.
      externalDocs:
        description: Fetch a list of events
        url: https://docs.neynar.com/reference/fetch-events
      operationId: fetch-events
      parameters:
      - name: from_event_id
        in: query
        required: false
        schema:
          type: integer
        description: 'An optional Hub Id to start getting events from.

          This is also returned from the API as nextPageEventId, which

          can be used to page through all the Hub events. Set it to 0

          to start from the first event.

          '
        example: 0
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  nextPageEventId:
                    type: integer
                  events:
                    type: array
                    items:
                      $ref: '#/components/schemas/HubEvent'
                required:
                - nextPageEventId
                - events
        default:
          $ref: '#/components/responses/ErrorResponse'
  /v1/eventById:
    get:
      tags:
      - HubEvents
      summary: Event by ID
      description: Lookup an event by its ID.
      externalDocs:
        description: Lookup an event by its ID
        url: https://docs.neynar.com/reference/lookup-event
      operationId: lookup-event
      parameters:
      - name: event_id
        in: query
        required: true
        schema:
          type: integer
        description: The Hub Id of the event
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubEvent'
        default:
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    UserDataType:
      type: string
      description: 'Specifies which field of a user''s profile is being updated.

        - USER_DATA_TYPE_PFP: Profile Picture URL for the user''s avatar

        - USER_DATA_TYPE_DISPLAY: Display Name shown on the user''s profile

        - USER_DATA_TYPE_BIO: Biography or description of the user

        - USER_DATA_TYPE_URL: Website or social media link for the user

        - USER_DATA_TYPE_USERNAME: Preferred username for the user'
      default: USER_DATA_TYPE_PFP
      enum:
      - USER_DATA_TYPE_PFP
      - USER_DATA_TYPE_DISPLAY
      - USER_DATA_TYPE_BIO
      - USER_DATA_TYPE_URL
      - USER_DATA_TYPE_USERNAME
    FidSchema:
      type: integer
      format: uint64
      minimum: 1
      description: 'Farcaster ID (FID). A unique identifier assigned to each user in the Farcaster network. This number is permanent and cannot be changed. FIDs are assigned sequentially when users register on the network.

        '
      example: 1
    ErrorResponse:
      required:
      - code
      - details
      - errCode
      - metadata
      - name
      - presentable
      type: object
      properties:
        errCode:
          type: string
        presentable:
          type: boolean
        name:
          type: string
        code:
          type: integer
        details:
          type: string
        metadata:
          required:
          - errcode
          type: object
          properties:
            errcode:
              type: array
              items:
                type: string
    IdRegisterEventBody:
      type: object
      properties:
        to:
          pattern: ^0x[a-fA-F0-9]*$
          type: string
          example: '0x00000000fcd5a8e45785c8a4b9a718c9348e4f18'
        eventType:
          $ref: '#/components/schemas/IdRegisterEventType'
        from:
          pattern: ^0x[a-fA-F0-9]*$|^$
          type: string
          example: '0x00000000fcd5a8e45785c8a4b9a718c9348e4f18'
        recoveryAddress:
          pattern: ^0x[a-fA-F0-9]*$
          type: string
          example: '0x00000000fcd5a8e45785c8a4b9a718c9348e4f18'
      required:
      - to
      - from
      - eventType
      - recoveryAddress
    MessageDataCastAdd:
      description: Represents a new cast (post) being created in the Farcaster network. A cast can include text content, mentions of other users, embedded URLs, and references to parent posts for replies.
      allOf:
      - $ref: '#/components/schemas/MessageDataCommon'
      - type: object
        required:
        - castAddBody
        properties:
          castAddBody:
            description: The content and metadata of the new cast, including the text, mentions, embeds, and any parent references for replies.
            allOf:
            - $ref: '#/components/schemas/CastAddBody'
    ReactionBody:
      description: Specifies the details of a reaction to content on Farcaster. A reaction must specify its type (like/recast) and either a target cast ID or URL to react to. Only one target (either castId or URL) should be specified per reaction.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ReactionType'
        targetCastId:
          description: The unique identifier of the cast being reacted to. Must be a valid CastId containing the creator's FID and the cast's hash.
          allOf:
          - $ref: '#/components/schemas/CastId'
        targetUrl:
          title: URL to react to
          description: The URL being reacted to. Used when reacting to external content or when the cast ID is not available.
          type: string
          example: https://www.example.com/article
      required:
      - type
    MessageDataFrameAction:
      description: Represents a user's interaction with a Farcaster Frame, which is an interactive element embedded within a cast. Frames allow users to engage with content through clickable buttons, creating interactive experiences within the Farcaster network.
      allOf:
      - $ref: '#/components/schemas/MessageDataCommon'
      - type: object
        required:
        - frameActionBody
        properties:
          frameActionBody:
            description: Contains the details of the frame interaction, including which button was pressed and the associated cast and URL.
            allOf:
            - $ref: '#/components/schemas/FrameActionBody'
    VerificationRemoveBody:
      description: Contains the data required to remove a previously added blockchain address verification from a user's profile. This operation permanently removes the verification until explicitly re-added.
      type: object
      properties:
        address:
          title: Blockchain Address
          description: The Ethereum address (0x-prefixed) for which the verification should be removed. Must match a previously verified address in the user's profile.
          pattern: ^0x[A-Za-z0-9]{40}$
          type: string
          example: '0x1234567890123456789012345678901234567890'
      required:
      - address
    MessageDataCommon:
      description: Common properties shared by all Farcaster message types. These properties provide essential metadata about the message's origin, timing, and network context.
      required:
      - fid
      - network
      - timestamp
      type: object
      properties:
        type:
          $ref: '#/components/schemas/MessageType'
        fid:
          title: Farcaster ID of the user producing the message
          description: The unique identifier (FID) of the user who created this message. FIDs are assigned sequentially when users register on the network and cannot be changed.
          type: integer
          format: uint64
          example: 2
        timestamp:
          description: Seconds since Farcaster Epoch (2021-01-01T00:00:00Z). Used to order messages chronologically and determine the most recent state. Must be within 10 minutes of the current time when the message is created.
          type: integer
          format: int64
          example: 48994466
        network:
          $ref: '#/components/schemas/FarcasterNetwork'
    CastId:
      description: A unique identifier for a cast (post) in the Farcaster network, consisting of the creator's FID and a hash of the cast's content. This combination ensures global uniqueness across all casts.
      required:
      - fid
      - hash
      type: object
      properties:
        fid:
          title: Fid of the user who created the cast
          description: The Farcaster ID (FID) of the user who created the cast. Required to uniquely identify the cast's author in the network.
          type: integer
          format: uint64
          example: 2
        hash:
          $ref: '#/components/schemas/CastHash'
    FrameActionBody:
      description: Contains the data for a user's interaction with a Farcaster Frame. Frames are interactive elements within casts that can have up to 4 clickable buttons, allowing users to engage with content in predefined ways.
      type: object
      properties:
        url:
          description: The URL associated with the frame action. This typically points to the frame's content or the destination that handles the interaction.
          type: string
          format: uri
          example: https://frames.farcaster.xyz/frame/123
        buttonIndex:
          description: Identifies which button the user clicked in the frame. Frames can have up to 4 buttons, numbered from 1 to 4.
          title: Button Index
          type: integer
          format: int32
          minimum: 1
          maximum: 4
          example: 1
        castId:
          description: The unique identifier of the cast containing the frame that was interacted with.
          allOf:
          - $ref: '#/components/schemas/CastId'
      required:
      - url
      - buttonIndex
      - castId
    CastHash:
      description: A unique hash that identifies a specific cast within the creator's posts. Generated using HASH_SCHEME_BLAKE3 of the cast's content.
      pattern: ^0x[0-9a-fA-F]{40}$
      type: string
      example: '0x03aff391a6eb1772b20b4ead9a89f732be75fe27'
    IdRegisterEventType:
      type: string
      default: ID_REGISTER_EVENT_TYPE_REGISTER
      enum:
      - ID_REGISTER_EVENT_TYPE_REGISTER
      - ID_REGISTER_EVENT_TYPE_TRANSFER
      - ID_REGISTER_EVENT_TYPE_CHANGE_RECOVERY
    OnChainEventSigner:
      allOf:
      - $ref: '#/components/schemas/OnChainEventCommon'
      - type: object
        properties:
          signerEventBody:
            $ref: '#/components/schemas/SignerEventBody'
        required:
        - signerEventBody
    HubEventPruneMessage:
      type: object
      properties:
        type:
          type: string
          example: HUB_EVENT_TYPE_PRUNE_MESSAGE
        id:
          type: integer
          format: uint64
        pruneMessageBody:
          $ref: '#/components/schemas/PruneMessageBody'
      required:
      - type
      - id
      - pruneMessageBody
    OnChainEventIdRegister:
      allOf:
      - $ref: '#/components/schemas/OnChainEventCommon'
      - type: object
        properties:
          idRegisterEventBody:
            $ref: '#/components/schemas/IdRegisterEventBody'
        required:
        - idRegisterEventBody
    UserNameProof:
      type: object
      properties:
        timestamp:
          description: Seconds since Unix Epoch which began on Jan 1, 1970 00:00:00 UTC
          type: integer
          format: uint64
        name:
          type: string
          example: neynar
        owner:
          pattern: ^0x[0-9a-fA-F]{40}$
          type: string
        signature:
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
          format: byte
        fid:
          description: The FID of the user who owns this username proof
          allOf:
          - $ref: '#/components/schemas/FidSchema'
        type:
          $ref: '#/components/schemas/UserNameType'
      required:
      - timestamp
      - name
      - owner
      - signature
      - fid
      - type
    MessageType:
      type: string
      description: 'Type of the MessageBody.

        - MESSAGE_TYPE_CAST_ADD: Add a new Cast

        - MESSAGE_TYPE_CAST_REMOVE: Remove an existing Cast

        - MESSAGE_TYPE_REACTION_ADD: Add a Reaction to a Cast

        - MESSAGE_TYPE_REACTION_REMOVE: Remove a Reaction from a Cast

        - MESSAGE_TYPE_LINK_ADD: Add a new Link

        - MESSAGE_TYPE_LINK_REMOVE: Remove an existing Link

        - MESSAGE_TYPE_VERIFICATION_ADD_ETH_ADDRESS: Add a Verification of an Ethereum Address

        - MESSAGE_TYPE_VERIFICATION_REMOVE: Remove a Verification

        - MESSAGE_TYPE_USER_DATA_ADD: Add metadata about a user

        - MESSAGE_TYPE_USERNAME_PROOF: Add or replace a username proof

        - MESSAGE_TYPE_FRAME_ACTION: A Farcaster Frame action'
      default: MESSAGE_TYPE_CAST_ADD
      enum:
      - MESSAGE_TYPE_CAST_ADD
      - MESSAGE_TYPE_CAST_REMOVE
      - MESSAGE_TYPE_REACTION_ADD
      - MESSAGE_TYPE_REACTION_REMOVE
      - MESSAGE_TYPE_LINK_ADD
      - MESSAGE_TYPE_LINK_REMOVE
      - MESSAGE_TYPE_VERIFICATION_ADD_ETH_ADDRESS
      - MESSAGE_TYPE_VERIFICATION_REMOVE
      - MESSAGE_TYPE_USER_DATA_ADD
      - MESSAGE_TYPE_USERNAME_PROOF
      - MESSAGE_TYPE_FRAME_ACTION
    MessageDataReaction:
      description: Represents a user's reaction to content on the Farcaster network. Reactions can be likes or recasts of casts, allowing users to express appreciation or share content with their followers.
      allOf:
      - $ref: '#/components/schemas/MessageDataCommon'
      - type: object
        required:
        - reactionBody
        properties:
          reactionBody:
            description: Contains the type of reaction (like/recast) and the target content being reacted to. The target can be specified either by castId or URL.
            allOf:
            - $ref: '#/components/schemas/ReactionBody'
    HubEventMergeMessage:
      type: object
      properties:
        type:
          type: string
          example: HUB_EVENT_TYPE_MERGE_MESSAGE
        id:
          type: integer
          format: uint64
        mergeMessageBody:
          $ref: '#/components/schemas/MergeMessageBody'
      required:
      - type
      - id
      - mergeMessageBody
    LinkType:
      type: string
      description: 'Defines the type of social connection between users.

        - follow: Establishes a following relationship where the user will receive updates from the target user in their feed'
      default: follow
      enum:
      - follow
      example: follow
    MergeMessageBody:
      type: object
      properties:
        message:
          $ref: '#/components/schemas/Message'
        deletedMessages:
          type: array
          items:
            $ref: '#/components/schemas/Message'
      required:
      - message
      - deletedMessages
    SignatureScheme:
      type: string
      description: 'Type of signature scheme used to sign the Message hash

        - SIGNATURE_SCHEME_ED25519: Ed25519 signature (default)

        - SIGNATURE_SCHEME_EIP712: ECDSA signature using EIP-712 scheme'
      default: SIGNATURE_SCHEME_ED25519
      enum:
      - SIGNATURE_SCHEME_ED25519
      - SIGNATURE_SCHEME_EIP712
    SignerMigratedEventBody:
      type: object
      properties:
        migratedAt:
          type: integer
          format: int64
      required:
      - migratedAt
    MessageCommon:
      type: object
      properties:
        hash:
          title: Hash digest of data
          pattern: ^0x[0-9a-fA-F]{40}$
          type: string
          example: '0xd2b1ddc6c88e865a33cb1a565e0058d757042974'
        hashScheme:
          $ref: '#/components/schemas/HashScheme'
        signature:
          title: Signature of the hash digest
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
          format: byte
        signatureScheme:
          $ref: '#/components/schemas/SignatureScheme'
        signer:
          title: Public key or address of the key pair that produced the signature
          pattern: ^0x[0-9a-fA-F]+$
          type: string
      required:
      - hash
      - hashScheme
      - signature
      - signatureScheme
      - signer
    SignerEventType:
      type: string
      default: SIGNER_EVENT_TYPE_ADD
      enum:
      - SIGNER_EVENT_TYPE_ADD
      - SIGNER_EVENT_TYPE_REMOVE
      - SIGNER_EVENT_TYPE_ADMIN_RESET
    CastAddBody:
      description: Adds a new Cast
      type: object
      properties:
        embedsDeprecated:
          title: URLs to be embedded in the cast
          type: array
          items:
            type: string
        mentions:
          title: Fids mentioned in the cast
          type: array
          items:
            type: integer
            format: uint64
            example: 2
        parentCastId:
          $ref: '#/components/schemas/CastId'
        parentUrl:
          title: Parent URL
          type: string
          example: chain://eip155:1/erc721:0x39d89b649ffa044383333d297e325d42d31329b2
        text:
          title: Text of the cast
          type: string
        mentionsPositions:
          title: Positions of the mentions in the text
          type: array
          items:
            type: integer
            format: int64
        embeds:
          title: URLs or cast IDs to be embedded in the cast
          type: array
          items:
            $ref: '#/components/schemas/Embed'
      required:
      - embedsDeprecated
      - mentions
      - text
      - mentionsPositions
      - embeds
    HubEvent:
      oneOf:
      - $ref: '#/components/schemas/HubEventMergeMessage'
      - $ref: '#/components/schemas/HubEventPruneMessage'
      - $ref: '#/components/schemas/HubEventRevokeMessage'
      - $ref: '#/components/schemas/HubEventMergeUsernameProof'
      - $ref: '#/components/schemas/HubEventMergeOnChainEvent'
      discriminator:
        propertyName: type
        mapping:
          HUB_EVENT_TYPE_MERGE_MESSAGE: '#/components/schemas/HubEventMergeMessage'
          HUB_EVENT_TYPE_PRUNE_MESSAGE: '#/components/schemas/HubEventPruneMessage'
          HUB_EVENT_TYPE_REVOKE_MESSAGE: '#/components/schemas/HubEventRevokeMessage'
          HUB_EVENT_TYPE_MERGE_USERNAME_PROOF: '#/components/schemas/HubEventMergeUsernameProof'
          HUB_EVENT_TYPE_MERGE_ON_CHAIN_EVENT: '#/components/schemas/HubEventMergeOnChainEvent'
    MessageDataUserDataAdd:
      description: Represents a message that updates a user's profile metadata. This can include changes to profile picture, display name, bio, URL, or preferred username. Each update modifies a single profile field.
      allOf:
      - $ref: '#/components/schemas/MessageDataCommon'
      - type: object
        required:
        - userDataBody
        properties:
          userDataBody:
            description: Contains the type of profile metadata being updated and its new value.
            allOf:
            - $ref: '#/components/schemas/UserDataBody'
    VerificationAddEthAddressBody:
      description: Contains the data required to verify ownership of an Ethereum or Solana address. The verification process requires a cryptographic signature from the blockchain address and includes the block hash at the time of signing for timestamp verification.
      type: object
      properties:
        address:
          title: Blockchain Address
          description: The Ethereum (0x-prefixed) or Solana address that the user is claiming ownership of. Must match the address that produced the signature.
          pattern: ^(?:0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44})$
          type: string
          example: '0x1234567890123456789012345678901234567890'
        ethSignature:
          title: Cryptographic Signature
          description: Base64-encoded signature produced by the blockchain address, proving ownership. For Ethereum, this is an ECDSA signature of a specific message format.
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
          format: byte
          example: 4mGN6TACFqXUVU9RpwLDGCqgqiV1GidEFk9eKF0L0h6JNqmN3kRM9NMPnjUnkh8oL6+jFeQJ9YVuKX4F9EqGiAE=
        blockHash:
          title: Block Hash
          description: The hash of the most recent block when the signature was created. Used to verify the approximate time of signature creation.
          pattern: ^(0x[a-fA-F0-9]{64}|[1-9A-HJ-NP-Za-km-z]{44})$
          type: string
          example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
      required:
      - address
      - ethSignature
      - blockHash
    SignerEventBody:
      type: object
      properties:
        key:
          pattern: ^0x[a-fA-F0-9]{64}$
          type: string
        keyType:
          type: integer
          format: int64
        eventType:
          $ref: '#/components/schemas/SignerEventType'
        metadata:
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
          format: byte
        metadataType:
          type: integer
          format: int64
      required:
      - key
      - keyType
      - eventType
      - metadata
      - metadataType
    UserDataBody:
      description: Contains the data for updating a specific field of a user's profile metadata. Each update operation modifies one profile field at a time, allowing granular control over profile information.
      type: object
      properties:
        type:
          description: Specifies which profile field is being updated (e.g., profile picture, display name, bio).
          allOf:
          - $ref: '#/components/schemas/UserDataType'
        value:
          title: Profile Field Value
          description: 'The new value for the specified profile field. The format depends on the type: URLs for profile pictures, plain text for display names and bios, etc.'
          type: string
          example: https://i.imgur.com/123abc.jpg
      required:
      - type
      - value
    MessageDataVerificationRemove:
      description: Represents a message that removes an existing blockchain address verification from a user's profile. This allows users to disassociate previously verified addresses from their account.
      allOf:
      - $ref: '#/components/schemas/MessageDataCommon'
      - type: object
        required:
        - verificationRemoveBody
        properties:
          verificationRemoveBody:
            description: Contains the blockchain address for which the verification should be removed from the user's profile.
            allOf:
            - $ref: '#/components/schemas/VerificationRemoveBody'
    MessageDataVerificationAdd:
      description: Represents a message that adds verification of ownership for an Ethereum or Solana address to a user's profile. This verification proves that the user controls the specified blockchain address.
      allOf:
      - $ref: '#/components/schemas/MessageDataCommon'
      - type: object
        required:
        - verificationAddEthAddressBody
        properties:
          verificationAddEthAddressBody:
            description: Contains the blockchain address being verified, along with cryptographic proof of ownership through a signature.
            allOf:
            - $ref: '#/components/schemas/VerificationAddEthAddressBody'
    Message:
      allOf:
      - type: object
        properties:
          data:
            oneOf:
            - $ref: '#/components/schemas/MessageDataCastAdd'
            - $ref: '#/components/schemas/MessageDataCastRemove'
            - $ref: '#/components/schemas/MessageDataReaction'
            - $ref: '#/components/schemas/MessageDataLink'
            - $ref: '#/components/schemas/MessageDataVerificationAdd'
            - $ref: '#/components/schemas/MessageDataVerificationRemove'
            - $ref: '#/components/schemas/MessageDataUserDataAdd'
            - $ref: '#/components/schemas/MessageDataUsernameProof'
            - $ref: '#/components/schemas/MessageDataFrameAction'
            discriminator:
              propertyName: type
              mapping:
                MESSAGE_TYPE_CAST_ADD: '#/components/schemas/MessageDataCastAdd'
                MESSAGE_TYPE_CAST_REMOVE: '#/components/schemas/MessageDataCastRemove'
                MESSAGE_TYPE_REACTION_ADD: '#/components/schemas/MessageDataReaction'
                MESSAGE_TYPE_REACTION_REMOVE: '#/components/schemas/MessageDataReaction'
                MESSAGE_TYPE_LINK_ADD: '#/components/schemas/MessageDataLink'
                MESSAGE_TYPE_LINK_REMOVE: '#/components/schemas/MessageDataLink'
                MESSAGE_TYPE_VERIFICATION_ADD_ETH_ADDRESS: '#/components/schemas/MessageDataVerificationAdd'
                MESSAGE_TYPE_VERIFICATION_REMOVE: '#/components/schemas/MessageDataVerificationRemove'
                MESSAGE_TYPE_USER_DATA_ADD: '#/components/schemas/MessageDataUserDataAdd'
                MESSAGE_TYPE_USERNAME_PROOF: '#/components/schemas/MessageDataUsernameProof'
                MESSAGE_TYPE_FRAME_ACTION: '#/components/schemas/MessageDataFrameAction'
        required:
        - data
      - $ref: '#/components/schemas/MessageCommon'
      description: 'A Message is a delta operation on the Farcaster network that represents a state change. Messages are the fundamental unit of data in Farcaster and can represent various actions like:

        - Creating or removing casts (posts)

        - Adding or removing reactions

        - Following or unfollowing users

        - Updating profile data

        - Verifying Ethereum addresses


        Each message contains:

        - A MessageData object with the actual content

        - A hash of the content for integrity verification

        - A cryptographic signature to prove authenticity

        - The signer''s public key for verification


        Messages are immutable once created and form an append-only log of all user actions on the network.'
    MessageDataLink:
      description: Represents a social graph connection between users in the Farcaster network. Currently supports following relationships between users.
      allOf:
      - $ref: '#/components/schemas/MessageDataCommon'
      - type: object
        required:
        - linkBody
        properties:
          linkBody:
            description: Contains the details of the social connection, including the type of relationship and the target user.
            allOf:
            - $ref: '#/components/schemas/LinkBody'
    HashScheme:
      type: string
      description: 'Type of hashing scheme used to produce a digest of MessageData. - HASH_SCHEME_BLAKE3: Default scheme for hashing MessageData

        '
      default: HASH_SCHEME_BLAKE3
      enum:
      - HASH_SCHEME_BLAKE3
    UserNameType:
      type: string
      default: USERNAME_TYPE_FNAME
      enum:
      - USERNAME_TYPE_FNAME
      - USERNAME_TYPE_ENS_L1
    MessageDataCastRemove:
      description: Represents a request to remove (delete) a previously created cast. Only the original creator of a cast can remove it.
      allOf:
      - $ref: '#/components/schemas/MessageDataCommon'
      - type: object
        required:
        - targetHash
        properties:
          targetHash:
            title: Hash of the cast to remove
            description: The unique hash identifier of the cast to be removed. Must be a cast that was previously created by the same FID specified in the message.
            pattern: ^0x[0-9a-fA-F]{40}$
            type: string
            example: '0x03aff391a6eb1772b20b4ead9a89f732be75fe27'
    OnChainEventStorageRent:
      allOf:
      - $ref: '#/components/schemas/OnChainEventCommon'
      - type: object
        properties:
          storageRentEventBody:
            $ref: '#/components/schemas/StorageRentEventBody'
        required:
        - storageRentEventBody
    PruneMessageBody:
      type: object
      properties:
        message:
          $ref: '#/components/schemas/Message'
      required:
      - message
    ReactionType:
      type: string
      description: 'Type of interaction a user can have with content on the Farcaster network.

        - Like: Express appreciation for the target content. Similar to "likes" or "favorites" on other platforms.

        - Recast: Share the target content with the user''s followers, similar to a "retweet" or "reblog". Helps increase content visibility.'
      default: Like
      enum:
      - Like
      - Recast
      example: Like
    UrlEmbed:
      type: object
      properties:
        url:
          type: string
          format: uri
      required:
      - url
    CastEmbed:
      type: object
      properties:
        castId:
          $ref: '#/components/schemas/CastId'
      required:
      - castId
    LinkBody:
      description: Defines a social connection between users in the Farcaster network. Currently used to establish following relationships, allowing users to curate their content feed.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/LinkType'
        displayTimestamp:
          title: Original Timestamp
          description: User-defined timestamp that preserves the original creation time when message.data.timestamp needs to be updated for compaction. Useful for maintaining chronological order in user feeds.
          type: integer
          format: int64
          example: 48994466
        targetFid:
          $ref: '#/components/schemas/FidSchema'
      required:
      - type
      - targetFid
    HubEventRevokeMessage:
      type: object
      properties:
        type:
          type: string
          example: HUB_EVENT_TYPE_REVOKE_MESSAGE
        id:
          type: integer
          format: uint64
        revokeMessageBody:
          $ref: '#/components/schemas/RevokeMessageBody'
      required:
      - type
      - id
      - revokeMessageBody
    OnChainEventSignerMigrated:
      allOf:
      - $ref: '#/components/schemas/OnChainEventCommon'
      - type: object
        properties:
          signerMigratedEventBody:
            $ref: '#/components/schemas/SignerMigratedEventBody'
        required:
        - signerMigratedEventBody
    FarcasterNetwork:
      type: string
      description: 'Farcaster network the message is intended for.

        - FARCASTER_NETWORK_MAINNET: Public primary network

        - FARCASTER_NETWORK_TESTNET: Public test network

        - FARCASTER_NETWORK_DEVNET: Private test network'
      default: FARCASTER_NETWORK_MAINNET
      enum:
      - FARCASTER_NETWORK_MAINNET
      - FARCASTER_NETWORK_TESTNET
      - FARCASTER_NETWORK_DEVNET
    HubEventMergeUsernameProof:
      type: object
      properties:
        type:
          type: string
          example: HUB_EVENT_TYPE_MERGE_USERNAME_PROOF
        id:
          type: integer
          format: uint64
        mergeUsernameProofBody:
          $ref: '#/components/schemas/MergeUserNameProofBody'
      required:
      - type
      - id
      - mergeUsernameProofBody
    MessageDataUsernameProof:
      allOf:
      - $ref: '#/components/schemas/MessageDataCommon'
      - type: object
        required:
        - usernameProofBody
        properties:
          usernameProofBody:
            $ref: '#/components/schemas/UserNameProof'
    Embed:
      oneOf:
      - $ref: '#/components/schemas/CastEmbed'
      - $ref: '#/components/schemas/UrlEmbed'
    RevokeMessageBody:
      type: object
      properties:
        message:
          $ref: '#/components/schemas/Message'
      required:
      - message
    StorageRentEventBody:
      type: object
      properties:
        payer:
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
          format: byte
        units:
          type: integer
          format: int64
        expiry:
          type: integer
          format: int64
      required:
      - payer
      - units
      - expiry
    OnChainEvent:
      oneOf:
      - $ref: '#/components/schemas/OnChainEventSigner'
      - $ref: '#/components/schemas/OnChainEventSignerMigrated'
      - $ref: '#/components/

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/neynar/refs/heads/main/openapi/neynar-hubevents-api-openapi.yml