Get desktop application:
View/edit binary Protocol Buffers messages
Bulk Methods
Block API
Casts
(message has no fields)
Unified, source-tagged view of connected peers. Includes peers we have no collected ContactInfoBody for (e.g. validators) as CONTACT_SOURCE_DERIVED entries built from the live connection — kept distinct from collected data.
(message has no fields)
Response Types for the Sync RPC Methods
Links
Network-wide topology: centralized crawl of connected validators over the gossip port, aggregating each validator's local mesh view. Admin-gated.
Network-wide topology assembled by the centralized crawl over the gossip port. `nodes` is one MeshView per responding validator (including self).
unix millis
Mesh health & topology: this node's local view of the gossip mesh. Admin-gated.
OnChain Events DEPRECATED in favor of GetSigner (unified). Returns on-chain signer events only — gasless / off-chain keys are not surfaced through this RPC.
DEPRECATED in favor of GetSignersByFid (unified). Returns on-chain signer events only — gasless / off-chain keys are not surfaced through this RPC.
Reactions
To be deprecated
Unified signer surface — returns both on-chain and off-chain (gasless) keys.
Request for GetSignersByFid. Mirrors `FidRequest` but adds an optional list of `requester_fids` so callers can fetch the current app-nonce for one or more requesters alongside the signer list. Used in lieu of `FidRequest` so the shared message stays lean.
FIDs (verified `requestFid` from SignedKeyRequestMetadata) whose current app-nonce should be included in the response. The response's `requester_fid_nonces` list carries one entry per FID supplied here, in the same order. Empty list ⇒ no app nonces in the response.
Total count of currently-active gasless (off-chain) keys for this FID. Populated from the O(1) per-FID counter maintained alongside the gasless key store, so it stays cheap regardless of the page size.
Per-FID cap on active gasless keys (NEYN-10579). Lets clients show "X/Y delegations" without hardcoding the limit on their side.
Current value of the user-nonce counter for this FID, i.e. the highest nonce ever accepted on KEY_ADD or custody-signed KEY_REMOVE for the user. The next valid user-nonce is strictly greater than this value. Returns 0 when no gasless activity has occurred for this FID yet, matching the merge-time validation rule that treats a missing counter as 0.
Current app-nonce counter, keyed by requester FID. Contains one entry per FID supplied in `request.requester_fids`; missing counters are surfaced as 0 so clients can read the map directly without falling back to defaults. The next valid self-revocation nonce for a given requester is strictly greater than the value here.
User Data
Username Proof
Verifications
Write API
Events
optional uint32 total_shards = 3; // Not required for snapchain
Validation Methods
Shard + height of the snapshot. Only those combinations returned from the `GetShardSnapshotMetadata` are valid
The trie prefix to iterate under. Only leaf node keys under this sub tree will be returned.
If NONE, then start from the left-most leaf node under the prefix
List of trie keys and its associated message
For each (unique) FID that was sent in `messages` above, that FID's account root hash in the trie.
If this is None, all entries under the prefix have been returned
Used as response type in: HubService.GetBlocks
Used as field type in: , ,
Used in:
Used in: ,
Used in:
Used in:
Block types
Used in:
Used in:
* Adds a new Cast
Used in:
URLs to be embedded in the cast
Fids mentioned in the cast
Parent cast of the cast
Parent URL
Text of the cast
Positions of the mentions in the text
URLs or cast ids to be embedded in the cast
Type of cast
* Identifier used to look up a Cast
Used as request type in: HubService.GetCast
Used as field type in: , , , , , ,
Fid of the user who created the cast
Hash of the cast
* Removes an existing Cast
Used in:
Hash of the cast to remove
* Type of cast
Used in:
Used in:
Used in: , ,
Used in:
set only when source == COLLECTED
always present (esp. for DERIVED)
set for DERIVED: the live-connection address
Used in:
Used in:
Used in: , , ,
Where a peer's address/contact data came from. Keeps internally-derived (observed) data from being conflated with peer-attested gossip data.
Used in: ,
real ContactInfoBody received over the contact-info topic
internal: PeerId + observed connection address only
Used in:
Used in:
Used in:
Used as response type in: AdminService.RetryFnameEvents, AdminService.RetryOnchainEvents, AdminService.RunOnchainEventsMigration, AdminService.UploadSnapshot
(message has no fields)
* Farcaster network the message is intended for
Used in: , , ,
Public primary network
Public test network
Private test network
Used in:
Used as request type in: HubService.GetCastsByFid, HubService.GetCastsByMention, HubService.GetCurrentStorageLimitsByFid, HubService.GetIdRegistryOnChainEvent, HubService.GetLinkCompactStateMessageByFid, HubService.GetOnChainSignersByFid, HubService.GetUserDataByFid, HubService.GetUserNameProofsByFid, HubService.GetVerificationsByFid
Used as request type in: HubService.GetAllCastMessagesByFid, HubService.GetAllLendStorageMessagesByFid, HubService.GetAllLinkMessagesByFid, HubService.GetAllReactionMessagesByFid, HubService.GetAllUserDataMessagesByFid, HubService.GetAllVerificationMessagesByFid
Fname transfers
Used in: ,
* A Farcaster Frame action
Used in:
URL of the Frame triggering the action
The index of the button pressed (1-4)
The cast which contained the frame url
Text input from the user, if present
Serialized frame state value
Chain-specific transaction ID for tx actions
Chain-specific address for tx actions
TODO: This probably needs a signature? Should we use ConsensusMessage?
Used in:
Used as request type in: HubService.GetMeshTopology, HubService.GetMeshView
default true (applied by the handler)
Reserved for the recursive crawl; ignored by the local view, kept so the wire format doesn't break when a propagating crawl is added later.
Used in:
* Type of hashing scheme used to produce a digest of MessageData
Used in:
Default scheme for hashing MessageData
Used in:
(message has no fields)
Used in: , , , , , , , , , , ,
Used as response type in: HubService.GetEvent, HubService.Subscribe
Used as field type in:
Deprecated MergeIdRegistryEventBody merge_id_registry_event_body = 6; MergeNameRegistryEventBody merge_name_registry_event_body = 7;
Deprecated MergeRentRegistryEventBody merge_rent_registry_event_body = 9; MergeStorageAdminRegistryEventBody merge_storage_admin_registry_event_body = 10;
Used in: ,
Deprecated HUB_EVENT_TYPE_MERGE_ID_REGISTRY_EVENT = 4; HUB_EVENT_TYPE_MERGE_NAME_REGISTRY_EVENT = 5;
Deprecated HUB_EVENT_TYPE_MERGE_RENT_REGISTRY_EVENT = 7; HUB_EVENT_TYPE_MERGE_STORAGE_ADMIN_REGISTRY_EVENT = 8;
Used in:
Used in:
* Registers an Ed25519 key for an FID via custody-authenticated message
Used in:
Ed25519 public key (32 bytes)
1 = Ed25519
EIP-712 signature from custody address
Farcaster epoch timestamp after which the custody signature is invalid
Monotonically increasing per-FID user nonce
ABI-encoded SignedKeyRequestMetadata
Must be 1 (SignedKeyRequest)
Optional: tx hash of the FID registration transaction
Allowed MessageType values; required and non-empty
Seconds; must be > 0. Sliding expiry window; max enforced at validation.
* Revokes an Ed25519 key via custody signature or self-revocation
Used in:
Ed25519 public key to remove
EIP-712 (custody) or Ed25519 (self-revocation) signature
1 = custody (EIP-712), 2 = self (Ed25519)
Farcaster epoch timestamp after which the signature is invalid
Monotonically increasing nonce (user nonce for custody, app nonce for self)
Used in:
* Adds or removes a Link
Used in:
Type of link, <= 8 characters
User-defined timestamp that preserves original timestamp when message.data.timestamp needs to be updated for compaction
The fid the link relates to
* A Compaction message for the Link Store
Used in:
Type of link, <= 8 characters
Gossip related messages
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
set iff PeerId matched a validator-set entry
COLLECTED vs DERIVED — never conflate the two
set only when contact_source == COLLECTED
internal: live-connection addr; not a self-announced IP
Used in:
node identity key (always present)
key is in the validator set at current height
Used as response type in: HubService.GetMeshView
Used as field type in:
The responding node. Named `local` (not `self`) to avoid the Rust keyword.
unix millis
* A Message is a delta operation on the Farcaster network. The message protobuf is an envelope that wraps a MessageData object and contains a hash and signature which can verify its authenticity.
Used as request type in: HubService.SubmitMessage, HubService.ValidateMessage
Used as response type in: HubService.GetCast, HubService.GetLink, HubService.GetReaction, HubService.GetUserData, HubService.GetVerification, HubService.SubmitMessage
Used as field type in: , , , , , , , , , , , ,
Contents of the message
Hash digest of data
Hash scheme that produced the hash digest
Signature of the hash digest
Signature scheme that produced the signature
Public key or address of the key pair that produced the signature
MessageData serialized to bytes if using protobuf serialization other than ts-proto
* A MessageData object contains properties common to all messages and wraps a body object which contains properties specific to the MessageType.
Used in:
Type of message contained in the body
Farcaster ID of the user producing the message
Farcaster epoch timestamp in seconds
Farcaster network the message is intended for
SignerAddBody signer_add_body = 11; // Deprecated
SignerRemoveBody signer_remove_body = 13; // Deprecated
Compaction messages
Used in:
* Type of the MessageBody
Used in:
Add a new Cast
Remove an existing Cast
Add a Reaction to a Cast
Remove a Reaction from a Cast
Add a new Link
Remove an existing Link
Add a Verification of an Ethereum Address
Remove a Verification
Deprecated MESSAGE_TYPE_SIGNER_ADD = 9; // Add a new Ed25519 key pair that signs messages for a user MESSAGE_TYPE_SIGNER_REMOVE = 10; // Remove an Ed25519 key pair that signs messages for a user
Add metadata about a user
Add or replace a username proof
A Farcaster Frame action
Link Compaction State Message
Register an Ed25519 key via custody-authenticated message
Revoke an Ed25519 key via custody signature or self-revocation
Used as response type in: HubService.GetAllCastMessagesByFid, HubService.GetAllLendStorageMessagesByFid, HubService.GetAllLinkMessagesByFid, HubService.GetAllReactionMessagesByFid, HubService.GetAllUserDataMessagesByFid, HubService.GetAllVerificationMessagesByFid, HubService.GetCastsByFid, HubService.GetCastsByMention, HubService.GetCastsByParent, HubService.GetLinkCompactStateMessageByFid, HubService.GetLinksByFid, HubService.GetLinksByTarget, HubService.GetReactionsByCast, HubService.GetReactionsByFid, HubService.GetReactionsByTarget, HubService.GetUserDataByFid, HubService.GetVerificationsByFid
Used as request type in: AdminService.SubmitOnChainEvent
Used as response type in: AdminService.SubmitOnChainEvent, HubService.GetIdRegistryOnChainEvent, HubService.GetIdRegistryOnChainEventByAddress, HubService.GetOnChainSigner
Used as field type in: , , , ,
Used as response type in: HubService.GetOnChainEvents, HubService.GetOnChainSignersByFid
Used in: ,
Used in:
repeated Transaction transactions = 4; // Transactions for the shard level proposals (submitted by shard leader) repeated ShardHeader shard_headers = 5; // shard headers for the block level proposal (submitted by the block leader)
* Type of Protocol to disambiguate verification addresses
Used in: ,
Used in:
* Adds or removes a Reaction from a Cast
Used in:
Type of reaction
CastId of the Cast to react to
URL to react to
* Type of Reaction
Used in: , , ,
Like the target cast
Share target cast to the user's audience
Used as request type in: HubService.GetReactionsByCast, HubService.GetReactionsByTarget
Used in:
These fields are used by the client to store the progress in the DB
The WorkUnitResponse from the last pass
The last FID processed (to continue from last pass)
Used in:
Used in:
Used in: , , ,
Used in:
Uniquely identifies a hash within a shard
Used in: , ,
Used in:
State root for the shard after applying the transactions for the height
Used in:
Used in:
Used in:
The trie key of the leaf node.
This should always be present, will be None only if a trie key's message was not found in the DB, which should be never happen..
Used in:
* Type of signature scheme used to sign the Message hash
Used in:
Ed25519 signature (default)
ECDSA signature using EIP-712 scheme
Unified per-key record. Optional fields are populated only when carried by the underlying source (on-chain signer event vs. gasless KEY_ADD record).
Used in: ,
32-byte Ed25519 public key
1 = Ed25519
Common metadata. All timestamps are Unix epoch seconds regardless of source; off-chain values that natively live in Farcaster time (MessageData.timestamp, gasless last-used tracking) are converted at the RPC boundary so clients can compare/compute across sources without an epoch table.
Unix epoch seconds
Unix epoch seconds; off-chain only
duration in seconds; off-chain only
Unix epoch seconds; computed as last_used_at + ttl when ttl > 0
Off-chain–only fields
mirrors KeyAddBody.scopes (raw MessageType ints)
verified requestFid from SignedKeyRequestMetadata
user nonce on the originating KEY_ADD
On-chain–only payload — original event for callers that need raw fields (block_hash, transaction_hash, log_index, metadata bytes, etc.).
Used in:
Used in:
Used in:
Used as request type in: HubService.GetOnChainSigner, HubService.GetSigner
Source of a signer record returned by GetSigner / GetSignersByFid.
Used in:
gasless / KEY_ADD
Used in:
Used in:
Used in:
Used in:
Used in: ,
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in: ,
Used in:
peer is in OUR gossipsub mesh for this topic
Used in: ,
State root for the account after applying the transaction for the fid
A validator that the crawl could not query directly. The crawl is connected-only: validators the serving node has no live connection to, or that did not respond in time, are surfaced here rather than dropped.
Used in:
set when the missing node is a known validator
"not_connected" | "timeout" | "error: …"
* Adds metadata about a user
Used in:
Type of metadata
Value of the metadata
* Type of UserData
Used in: ,
Profile Picture for the user
Display Name for the user
Bio for the user
URL of the user
Preferred Name for the user
Current location for the user
Username of user on twitter
Username of user on github
Banner image for the user
Primary address for the user on Ethereum
Primary address for the user on Solana
Profile token in CAIP-19 format
URL of the user's live activity
Used as request type in: AdminService.SubmitUserNameProof
Used as response type in: AdminService.SubmitUserNameProof, HubService.GetUsernameProof
Used as field type in: , , ,
Used in:
Used in:
Validator initiated prunes/revokes etc
Used in:
* Adds a Verification of ownership of an Address based on Protocol
Used in:
Address being verified for a given Protocol
Signature produced by the user's address for a given Protocol
Hash of the latest Ethereum block when the signature was produced
Type of verification. 0 = EOA, 1 = contract
0 for EOA verifications, 1 or 10 for contract verifications
Protocol of the Verification
* Removes a Verification of a given protocol
Used in:
Address of the Verification to remove
Protocol of the Verification to remove
Used in: ,
Consensus messages
Used in: