---
title: "Register Farcaster account onchain"
method: POST
path: "/v2/farcaster/user/register/"
tags: ["Onchain"]
---

# Register Farcaster account onchain

`POST /v2/farcaster/user/register/`

Register a new farcaster account onchain. Optionally you can pass in signers to register a new account and create multiple signers in a single transaction. Requires x-wallet-id header.

## Headers

- `x-wallet-id` string, required

## Request body

- RegisterUserOnChainReqBody
  - `idem` string — An Idempotency key is a unique identifier for the request. **Note:** 1) Pre-registration calls must be idempotent when using idempotency keys. 2) This is used to prevent duplicate requests. Use the same idem key on retry attempts. 3) This should be a unique identifier for each request. 4) Recommended format is a 16-character string generated by the developer at the time of making this request.
  - `pre_registration_calls` object[]
    - `allow_failure` boolean — Set it to true if you want to ignore the failure of this call. If set to false, the registration will fail if this call fails.
    - `data` string, required — Call data payload (hex-encoded)
    - `target` string, required — Must be on the allowed contract allowlist. Contact support for more details.
    - `value` integer — Value in wei to send with the transaction. This is not the amount of ETH that will be sent, but rather the value of the transaction.
  - `registration` object, required
    - `custody_address` string, required — Ethereum address
    - `deadline` integer, required
    - `recovery_address` string, required — Ethereum address
    - `signature` string, required — Hexadecimal number expressed as string with '0x' prefix
  - `signers` object[]
    - `deadline` integer, required
    - `key_type` integer
    - `metadata` string, required — Hexadecimal number expressed as string with '0x' prefix
    - `metadata_type` integer
    - `public_key` string, required — Ed25519 public key
    - `signature` string, required — Hexadecimal number expressed as string with '0x' prefix
  - `storage_units` integer

## Response `200`

Success

- RegisterUserOnChainResponse
  - `message` string
  - `transaction_hash` string
  - `user` User
    - `auth_addresses` object[], required
      - `address` string, required — Ethereum address
      - `app` UserDehydrated, required
        - `custody_address` string — Ethereum address
        - `display_name` string, nullable
        - `fid` integer, required — The unique identifier of a farcaster user or app (unsigned integer)
        - `object` 'user_dehydrated', required
        - `pfp_url` string, nullable
        - `score` number
        - `username` string
    - `custody_address` string, required — Ethereum address
    - `display_name` string, nullable
    - `experimental` object
      - `deprecation_notice` string
      - `neynar_user_score` number, double, required — Score that represents the probability that the account is not spam.
    - `fid` integer, required — The unique identifier of a farcaster user or app (unsigned integer)
    - `follower_count` integer, required — The number of followers the user has.
    - `following_count` integer, required — The number of users the user is following.
    - `object` 'user', required
    - `pfp_url` string, nullable — The URL of the user's profile picture
    - `pro` object
      - `expires_at` string, date-time, required
      - `status` 'subscribed' | 'unsubscribed', required — The subscription status of the user
      - `subscribed_at` string, date-time, required
    - `profile` object, required
      - `banner` object
        - `url` string, uri — The URL of the user's banner image
      - `bio` object, required
        - `mentioned_channels` ChannelDehydrated[]
          - `id` string, required
          - `image_url` string
          - `name` string, required
          - `object` 'channel_dehydrated', required
          - `viewer_context` ChannelUserContext — Adds context on the viewer's or author's role in the channel.
            - `following` boolean, required — Indicates if the user is following the channel.
            - `role` 'member' | 'moderator' | 'owner' — The role of a channel member
        - `mentioned_channels_ranges` TextRange[] — Positions within the text (inclusive start, exclusive end) where each mention occurs. Each index within this list corresponds to the same-numbered index in the mentioned_channels list.
          - `end` number, required
          - `start` number, required
        - `mentioned_profiles` UserDehydrated[]
          - `custody_address` string — Ethereum address
          - `display_name` string, nullable
          - `fid` integer, required — The unique identifier of a farcaster user or app (unsigned integer)
          - `object` 'user_dehydrated', required
          - `pfp_url` string, nullable
          - `score` number
          - `username` string
        - `mentioned_profiles_ranges` TextRange[] — Positions within the text (inclusive start, exclusive end) where each mention occurs. Each index within this list corresponds to the same-numbered index in the mentioned_profiles list.
          - `end` number, required
          - `start` number, required
        - `text` string, required
      - `live_at` object
        - `is_live` boolean, required
        - `updated_at` string, date-time, required
        - `url` string, required — The URL of the user's current live activity
      - `location` Location — Coordinates and place names for a location
        - `address` LocationAddress
          - `city` string, required
          - `country` string, required
          - `country_code` string
          - `state` string
          - `state_code` string
        - `latitude` number, double, required
        - `longitude` number, double, required
        - `radius` number — The radius in meters for the location search. Any location within this radius will be returned.
    - `registered_at` string, date-time, required
    - `score` number, double — Score that represents the probability that the account is not spam.
    - `username` string, required
    - `verifications` EthAddress[], required
    - `verified_accounts` object[], required
      - `platform` 'x' | 'github'
      - `username` string
    - `verified_addresses` object, required
      - `eth_addresses` EthAddress[], required — List of verified Ethereum addresses of the user sorted by oldest to most recent.
      - `primary` object, required
        - `eth_address` string, required — Ethereum address
        - `sol_address` string, required — Solana address
      - `sol_addresses` SolAddress[], required — List of verified Solana addresses of the user sorted by oldest to most recent.
    - `viewer_context` UserViewerContext — Adds context on the viewer's follow relationship with the user.
      - `blocked_by` boolean, required — Indicates if the viewer is blocked by the user.
      - `blocking` boolean, required — Indicates if the viewer is blocking the user.
      - `followed_by` boolean, required — Indicates if the viewer is followed by the user.
      - `following` boolean, required — Indicates if the viewer is following the user.

## Other responses

- `400` — Bad Request
- `500` — Server Error

---

[API](https://skmtc.net/neynar/apis/neynar-api.md) · [All operations](https://skmtc.net/neynar/apis/neynar-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/neynar/neynar-api/versions/dbb91bfb0d1a/schema)
