> ## Documentation Index
> Fetch the complete documentation index at: https://docs.b3.fun/llms.txt
> Use this file to discover all available pages before exploring further.

# Set Custom Display Name

> Allows users to set a custom display name that takes priority over display names from all profile sources through cryptographic signature verification.



## OpenAPI

````yaml /openapi/profiles.json post /display-name
openapi: 3.0.0
info:
  title: B3 Profiles API
  description: >-
    Unified Web3 identity aggregation service that enhances wallet
    authentication with social identity data from ENS, Lens, and Farcaster. The
    B3 Profiles service aggregates profile data from multiple Web3 sources
    including Basement, ENS, Thirdweb Social, Global Accounts, and other
    identity providers, providing a single API endpoint for comprehensive user
    information.


    ## Features


    - **Multi-source Profile Aggregation**: Combines data from Basement, ENS,
    Thirdweb, Global Accounts, and other Web3 identity providers

    - **Social Identity Integration**: Fetches social profiles from ENS, Lens
    Protocol, and Farcaster networks  

    - **Intelligent Caching**: Uses Cloudflare KV storage for efficient data
    caching with TTL

    - **Profile Preferences**: Allows users to set preferred profile sources via
    cryptographic signatures

    - **Flexible Lookup**: Supports lookup by wallet address or username/domain
    name

    - **Real-time Verification**: Includes signature verification for preference
    setting

    - **Global Account Fallback**: Automatically looks up B3 global accounts and
    aggregates profiles from linked wallet addresses when no other profiles are
    found


    ## Data Sources


    The service aggregates data from:


    - **Basement Profiles**: B3 ecosystem usernames and gaming profiles

    - **ENS Data**: Ethereum Name Service domains, avatars, and metadata

    - **Thirdweb Social**: Multi-platform social profiles (Farcaster, Lens,
    etc.)

    - **B3 ENS Gateway**: B3-specific ENS resolution

    - **Global Accounts**: B3 smart contract wallets linked to social logins and
    EOA wallets, with automatic discovery and aggregation of linked wallet
    profiles (fallback when no other profiles found)


    ## Security


    - Cryptographic signature verification for all preference settings

    - EIP-191 message verification using viem library

    - Timestamp validation to prevent replay attacks

    - Address normalization for consistent storage


    See more documentation at
    [https://docs.b3.fun/data/profiles](https://docs.b3.fun/data/profiles)
  version: 1.0.0
  contact:
    url: https://docs.b3.fun/data/profiles
servers:
  - url: https://profiles.b3.fun
    description: Production server
security: []
tags:
  - name: Lookup
    description: Profile lookup and identity aggregation
  - name: Preferences
    description: User profile preferences and settings
paths:
  /display-name:
    post:
      tags:
        - Preferences
      summary: Set Custom Display Name
      description: >-
        Allows users to set a custom display name that takes priority over
        display names from all profile sources through cryptographic signature
        verification.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisplayNameRequest'
      responses:
        '200':
          description: Display name set successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad Request - Invalid signature, timestamp, or authorization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalid-signature:
                  summary: Invalid cryptographic signature
                  value:
                    error: Invalid signature
                timestamp-old:
                  summary: Timestamp too old for replay protection
                  value:
                    error: Timestamp too old
                signer-mismatch:
                  summary: Signer does not match the key
                  value:
                    error: Signer doesn't match key
components:
  schemas:
    DisplayNameRequest:
      type: object
      description: Request to set custom display name
      required:
        - key
        - displayName
        - signature
        - signer
        - timestamp
      properties:
        key:
          type: string
          description: Ethereum wallet address (will be normalized to lowercase)
        displayName:
          type: string
          description: Custom display name to set
        signature:
          type: string
          description: EIP-191 signature of the display name message
        signer:
          type: string
          description: Address that signed the message (must match key)
        timestamp:
          type: integer
          format: int64
          description: >-
            Unix timestamp in seconds (must be within 10 minutes of current
            time)
    SuccessResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message describing what went wrong
      required:
        - error

````