openapi: 3.0.4
info:
  contact:
    email: team@neynar.com
    name: Neynar
    url: https://neynar.com/
  description: The Neynar API allows you to interact with the Farcaster protocol among other things. See the [Neynar docs](https://docs.neynar.com/reference) for more details.
  title: Neynar API
  version: 3.184.0
servers:
  - url: https://api.neynar.com
security:
  - ApiKeyAuth: []
tags:
  - description: Operations related to user
    externalDocs:
      description: More info about user
      url: https://docs.neynar.com/reference/user-operations
    name: User
  - description: Operations related to signer
    externalDocs:
      description: More info about signer
      url: https://docs.neynar.com/reference/signer-operations
    name: Signer
  - description: Operations related to cast
    externalDocs:
      description: More info about cast
      url: https://docs.neynar.com/reference/cast-operations
    name: Cast
  - description: Operations related to feed
    externalDocs:
      description: More info about feed
      url: https://docs.neynar.com/reference/feed-operations
    name: Feed
  - description: Operations related to reaction
    externalDocs:
      description: More info about reaction
      url: https://docs.neynar.com/reference/reaction-operations
    name: Reaction
  - description: Operations related to notifications
    externalDocs:
      description: More info about notifications
      url: https://docs.neynar.com/reference/notifications-operations
    name: Notifications
  - description: Operations related to channels
    externalDocs:
      description: More info about channels
      url: https://docs.neynar.com/reference/channel-operations
    name: Channel
  - description: Operations related to follows
    externalDocs:
      description: More info about follows
      url: https://docs.neynar.com/reference/follows-operations
    name: Follows
  - description: Operations related to storage
    externalDocs:
      description: More info about storage
      url: https://docs.neynar.com/reference/storage-operations
    name: Storage
  - description: Operations related to mini apps
    name: Frame
  - description: Operations for building AI agents
    name: Agents
  - description: Operations related to fname
    name: fname
  - description: Operations related to a webhook
    name: Webhook
  - description: Securely communicate and perform actions on behalf of users across different apps
    externalDocs:
      description: More info about farcaster actions
      url: https://docs.neynar.com/docs/farcaster-actions-spec
    name: Action
  - description: Operations related to a subscriptions
    name: Subscribers
  - description: Operations related to a mute
    name: Mute
  - description: Operations related to a block
    name: Block
  - description: Operations related to a ban
    name: Ban
  - description: Operations related to onchain data
    name: Onchain
  - description: Operations related to login
    name: Login
  - description: Operations related to retrieving metrics
    name: Metrics
  - description: Operations related to mini app host notifications
    externalDocs:
      description: More info about mini app host notifications
      url: https://docs.neynar.com/docs/app-host-notifications
    name: App Host
paths:
  /portal/organization/billing:
    get:
      description: Retrieves billing and subscription details for the current organization, including plan status, product category, billing email, and effective plan.
      externalDocs:
        url: https://docs.neynar.com/reference/billing
      operationId: billing
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  billing_email:
                    nullable: true
                    type: string
                  effective_plan:
                    type: string
                  has_active_subscription:
                    type: boolean
                  is_trialing:
                    type: boolean
                  organization_name:
                    type: string
                  organization_status:
                    nullable: true
                    type: string
                  plan_tier:
                    nullable: true
                    type: string
                  product_category:
                    nullable: true
                    type: string
                  product_name:
                    nullable: true
                    type: string
                  stripe_customer_id:
                    nullable: true
                    type: string
                  stripe_product_id:
                    nullable: true
                    type: string
                  stripe_subscription_id:
                    nullable: true
                    type: string
                  subscription_end:
                    format: date-time
                    nullable: true
                    type: string
                  subscription_start:
                    format: date-time
                    nullable: true
                    type: string
                  subscription_status:
                    nullable: true
                    type: string
                  workos_organization_id:
                    type: string
                required:
                  - workos_organization_id
                  - organization_name
                  - stripe_customer_id
                  - organization_status
                  - stripe_subscription_id
                  - subscription_status
                  - product_name
                  - stripe_product_id
                  - plan_tier
                  - product_category
                  - subscription_start
                  - subscription_end
                  - billing_email
                  - has_active_subscription
                  - is_trialing
                  - effective_plan
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - message
                type: object
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - message
                type: object
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - message
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - message
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - message
                type: object
          description: Server Error
      summary: Get billing information for the current organization
      tags:
        - portal
        - organization
  /portal/subscription/upgrade:
    post:
      description: Applies a subscription plan change for the current organization and returns the applied credit, charge amount, and whether the change takes effect immediately.
      externalDocs:
        url: https://docs.neynar.com/reference/upgrade
      operationId: upgrade
      requestBody:
        content:
          application/json:
            schema:
              properties:
                newPlan:
                  type: string
                productCategory:
                  enum:
                    - API
                    - STUDIO
                  type: string
              required:
                - newPlan
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  chargeAmount:
                    type: number
                  creditApplied:
                    type: number
                  effectiveImmediately:
                    type: boolean
                  newPlan:
                    type: string
                  success:
                    type: boolean
                required:
                  - success
                  - newPlan
                  - creditApplied
                  - chargeAmount
                  - effectiveImmediately
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  paymentMethod:
                    properties:
                      brand:
                        type: string
                      last4:
                        type: string
                    required:
                      - brand
                      - last4
                    type: object
                required:
                  - code
                  - message
                type: object
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  paymentMethod:
                    properties:
                      brand:
                        type: string
                      last4:
                        type: string
                    required:
                      - brand
                      - last4
                    type: object
                required:
                  - code
                  - message
                type: object
          description: Unauthorized
        '402':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  paymentMethod:
                    properties:
                      brand:
                        type: string
                      last4:
                        type: string
                    required:
                      - brand
                      - last4
                    type: object
                required:
                  - code
                  - message
                type: object
          description: Payment Required
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  paymentMethod:
                    properties:
                      brand:
                        type: string
                      last4:
                        type: string
                    required:
                      - brand
                      - last4
                    type: object
                required:
                  - code
                  - message
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  paymentMethod:
                    properties:
                      brand:
                        type: string
                      last4:
                        type: string
                    required:
                      - brand
                      - last4
                    type: object
                required:
                  - code
                  - message
                type: object
          description: Server Error
      summary: Process subscription upgrade with credit
      tags:
        - portal
        - subscription
  /portal/subscription/upgrade/preview:
    get:
      description: Calculates the billing impact of changing to a new subscription plan, including available credit, charge amount, and whether the billing date or usage carryover changes.
      externalDocs:
        url: https://docs.neynar.com/reference/upgrade-preview
      operationId: upgrade-preview
      parameters:
        - in: query
          name: newPlan
          required: true
          schema:
            type: string
        - in: query
          name: productCategory
          schema:
            enum:
              - API
              - STUDIO
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  billingDateUnchanged:
                    type: boolean
                  chargeAmount:
                    type: number
                  credit:
                    properties:
                      creditAmount:
                        type: number
                      unitRate:
                        type: number
                      unusedUnits:
                        type: number
                    required:
                      - unusedUnits
                      - unitRate
                      - creditAmount
                    type: object
                  currentPlan:
                    properties:
                      computeUnitsLimit:
                        type: number
                      computeUnitsUsed:
                        type: number
                      name:
                        type: string
                      price:
                        type: number
                    required:
                      - name
                      - price
                      - computeUnitsLimit
                      - computeUnitsUsed
                    type: object
                  newPlan:
                    properties:
                      computeUnitsLimit:
                        type: number
                      name:
                        type: string
                      price:
                        type: number
                    required:
                      - name
                      - price
                      - computeUnitsLimit
                    type: object
                  usageCarriesOver:
                    type: boolean
                required:
                  - currentPlan
                  - newPlan
                  - credit
                  - chargeAmount
                  - billingDateUnchanged
                  - usageCarriesOver
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  paymentMethod:
                    properties:
                      brand:
                        type: string
                      last4:
                        type: string
                    required:
                      - brand
                      - last4
                    type: object
                required:
                  - code
                  - message
                type: object
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  paymentMethod:
                    properties:
                      brand:
                        type: string
                      last4:
                        type: string
                    required:
                      - brand
                      - last4
                    type: object
                required:
                  - code
                  - message
                type: object
          description: Unauthorized
        '402':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  paymentMethod:
                    properties:
                      brand:
                        type: string
                      last4:
                        type: string
                    required:
                      - brand
                      - last4
                    type: object
                required:
                  - code
                  - message
                type: object
          description: Payment Required
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  paymentMethod:
                    properties:
                      brand:
                        type: string
                      last4:
                        type: string
                    required:
                      - brand
                      - last4
                    type: object
                required:
                  - code
                  - message
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  paymentMethod:
                    properties:
                      brand:
                        type: string
                      last4:
                        type: string
                    required:
                      - brand
                      - last4
                    type: object
                required:
                  - code
                  - message
                type: object
          description: Server Error
      summary: Get upgrade preview with credit calculation
      tags:
        - portal
        - subscription
  /v2/farcaster/action/:
    post:
      description: Securely communicate and perform actions on behalf of users across different apps. It enables an app to send data or trigger actions in another app on behalf of a mutual user by signing messages using the user's Farcaster signer.
      externalDocs:
        url: https://docs.neynar.com/reference/publish-farcaster-action
      operationId: publish-farcaster-action
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FarcasterActionReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
          description: Success
      summary: User actions across apps
      tags:
        - Action
  /v2/farcaster/app_host/user/event/:
    get:
      description: Returns event object for app host events. Used if the app host intends to sign the event message instead of using Neynar-hosted signers.
      externalDocs:
        url: https://docs.neynar.com/reference/app-host-get-event
      operationId: app-host-get-event
      parameters:
        - description: The domain of the mini app
          in: query
          name: app_domain
          required: true
          schema:
            example: demo.neynar.com
            type: string
        - description: The FID of the user who initiated the event
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: The type of event
          in: query
          name: event
          required: true
          schema:
            enum:
              - frame_added
              - frame_removed
              - notifications_enabled
              - notifications_disabled
            title: AppHostEventType
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppHostGetEventResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Generate event
      tags:
        - App Host
    post:
      description: Post an app_host event to the domain's webhook. Events such as enabling or disabling notifications for a user. Provide either a signed message or the signer UUID of an authorized neynar-hosted signers.
      externalDocs:
        url: https://docs.neynar.com/reference/app-host-post-event
      operationId: app-host-post-event
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppHostPostEventReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppHostPostEventResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Gateway
      summary: Send event
      tags:
        - App Host
  /v2/farcaster/app_host/user/state/:
    get:
      description: Returns the current notification state for a specific user across all mini app domains in this app host. Shows which domains have notifications enabled.
      externalDocs:
        url: https://docs.neynar.com/reference/app-host-get-user-state
      operationId: app-host-get-user-state
      parameters:
        - description: The FID of the user
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppHostUserStateResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Enabled notifications
      tags:
        - App Host
  /v2/farcaster/auth_address/developer_managed/:
    get:
      description: Fetches the status of a developer managed auth address by auth address
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-developer-managed-auth-address
      operationId: lookup-developer-managed-auth-address
      parameters:
        - description: Ethereum address
          in: query
          name: address
          required: true
          schema:
            example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
            pattern: ^0x[a-fA-F0-9]{40}$
            title: EthAddress
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  address:
                    $ref: '#/components/schemas/EthAddress'
                  auth_address_approval_url:
                    format: uri
                    type: string
                  fid:
                    $ref: '#/components/schemas/Fid'
                  status:
                    enum:
                      - pending_approval
                      - approved
                      - revoked
                    type: string
                required:
                  - address
                  - status
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Status by auth address
      tags:
        - AuthAddress
  /v2/farcaster/auth_address/developer_managed/signed_key/:
    post:
      description: Allow apps to register an Ethereum addresses as authorized "auth addresses" for a user's Farcaster account, enabling seamless Sign-In With Farcaster (SIWF) across applications without repeated custody wallet authorizations.
      externalDocs:
        url: https://docs.neynar.com/reference/register-signed-key-for-developer-managed-auth-address
      operationId: register-signed-key-for-developer-managed-auth-address
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterAuthAddressDeveloperManagedSignedKeyReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  address:
                    $ref: '#/components/schemas/EthAddress'
                  auth_address_approval_url:
                    format: uri
                    type: string
                  fid:
                    $ref: '#/components/schemas/Fid'
                  status:
                    enum:
                      - pending_approval
                      - approved
                      - revoked
                    type: string
                required:
                  - address
                  - status
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Register Signed Key
      tags:
        - AuthAddress
  /v2/farcaster/ban/:
    delete:
      description: Deletes a list of FIDs from the app associated with your API key.
      externalDocs:
        url: https://docs.neynar.com/reference/delete-bans
      operationId: delete-bans
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BanReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BanResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Unban FIDs from app
      tags:
        - Ban
    post:
      description: Bans a list of FIDs from the app associated with your API key. Banned users, their casts and reactions will not appear in feeds.
      externalDocs:
        url: https://docs.neynar.com/reference/publish-bans
      operationId: publish-bans
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BanReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BanResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Ban FIDs from app
      tags:
        - Ban
  /v2/farcaster/ban/list/:
    get:
      description: Fetches all FIDs that your app has banned.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-ban-list
      operationId: fetch-ban-list
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 20
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BanListResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Banned FIDs of app
      tags:
        - Ban
  /v2/farcaster/block/:
    delete:
      description: Deletes a block for a given FID.
      externalDocs:
        url: https://docs.neynar.com/reference/delete-block
      operationId: delete-block
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlockReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Unblock FID
      tags:
        - Block
    post:
      description: Adds a block for a given FID.
      externalDocs:
        url: https://docs.neynar.com/reference/publish-block
      operationId: publish-block
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlockReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Block FID
      tags:
        - Block
  /v2/farcaster/block/list/:
    get:
      description: Fetches all FIDs that a user has blocked or has been blocked by
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-block-list
      operationId: fetch-block-list
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Providing this will return the users that this user has blocked
          in: query
          name: blocker_fid
          schema:
            example: 194
            minimum: 1
            type: integer
        - description: Providing this will return the users that have blocked this user
          in: query
          name: blocked_fid
          schema:
            example: 194
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 20
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockListResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Blocked / Blocked by FIDs
      tags:
        - Block
  /v2/farcaster/cast/:
    delete:
      description: "Delete an existing cast. \n(In order to delete a cast `signer_uuid` must be approved)"
      externalDocs:
        url: https://docs.neynar.com/reference/delete-cast
      operationId: delete-cast
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteCastReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Delete a cast
      tags:
        - Cast
    get:
      description: Gets information about an individual cast by passing in a Farcaster web URL or cast hash
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-cast-by-hash-or-url
      operationId: lookup-cast-by-hash-or-url
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Cast identifier (It's either a URL or a hash)
          in: query
          name: identifier
          required: true
          schema:
            example: https://farcaster.xyz/rish/0xafa59bb7
            type: string
        - description: |-
            The query param accepted by the API. Sent along with identifier param.
            url - Cast identifier is a url
            hash - Cast identifier is a hash
          in: query
          name: type
          required: true
          schema:
            enum:
              - url
              - hash
            example: url
            type: string
        - description: adds viewer_context to cast object to show whether viewer has liked or recasted the cast.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CastResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: By hash or URL
      tags:
        - Cast
    post:
      description: "Posts a cast or cast reply. Works with mentions and embeds.  \n(In order to post a cast `signer_uuid` must be approved)"
      externalDocs:
        url: https://docs.neynar.com/reference/publish-cast
      operationId: publish-cast
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCastReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCastResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Post a cast
      tags:
        - Cast
  /v2/farcaster/cast/conversation/:
    get:
      description: Gets all casts related to a conversation surrounding a cast by passing in a cast hash or Farcaster URL. Includes all the ancestors of a cast up to the root parent in a chronological order. Includes all direct_replies to the cast up to the reply_depth specified in the query parameter.
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-cast-conversation
      operationId: lookup-cast-conversation
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Cast identifier (It's either a URL or a hash)
          in: query
          name: identifier
          required: true
          schema:
            example: https://warpcast.com/rish/0x9288c1
            type: string
        - description: |-
            The query param accepted by the API. Sent along with identifier param.
            url - Cast identifier is a url
            hash - Cast identifier is a hash
          in: query
          name: type
          required: true
          schema:
            enum:
              - url
              - hash
            example: url
            type: string
        - description: The depth of replies in the conversation that will be returned (default 2)
          in: query
          name: reply_depth
          schema:
            default: 2
            maximum: 5
            minimum: 0
            type: integer
        - description: Include all parent casts in chronological order
          in: query
          name: include_chronological_parent_casts
          schema:
            default: false
            type: boolean
        - description: Providing this will return a conversation that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Sort type for the ordering of descendants. Default is `chron`
          in: query
          name: sort_type
          schema:
            enum:
              - chron
              - desc_chron
              - algorithmic
            example: chron
            type: string
        - description: Show conversation above or below the fold. Lower quality responses are hidden below the fold. Not passing in a value shows the full conversation without any folding.
          in: query
          name: fold
          schema:
            enum:
              - above
              - below
            type: string
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 30
            format: int32
            maximum: 50
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conversation'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Conversation for a cast
      tags:
        - Cast
  /v2/farcaster/cast/conversation/summary/:
    get:
      description: Generates a summary of all casts related to a conversation surrounding a cast by passing in a cast hash or Farcaster URL.  Summary is generated by an LLM and is intended to be passed as a context to AI agents.
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-cast-conversation-summary
      operationId: lookup-cast-conversation-summary
      parameters:
        - description: Cast identifier (It's either a URL or a hash))
          in: query
          name: identifier
          required: true
          schema:
            example: '0x9288c1e862aa72bd69d0e383a28b9a76b63cbdb4'
            type: string
        - description: Number of casts to consider in a summary up to a point of target cast
          in: query
          name: limit
          schema:
            default: 20
            example: 50
            maximum: 50
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Additional prompt used to generate a summary
          in: query
          name: prompt
          schema:
            example: be unreasonably dramatic
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversationSummary'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Cast conversation summary
      tags:
        - Agents
  /v2/farcaster/cast/embed/crawl/:
    get:
      description: Crawls the given URL and returns metadata useful when embedding the URL in a cast.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-embedded-url-metadata
      operationId: fetch-embedded-url-metadata
      parameters:
        - description: URL to crawl metadata of
          in: query
          name: url
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CastEmbedCrawlResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Embedded URL metadata
      tags:
        - Cast
  /v2/farcaster/cast/metrics/:
    get:
      description: Fetches metrics casts matching a query
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-cast-metrics
      operationId: fetch-cast-metrics
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Query string to search for casts
          in: query
          name: q
          required: true
          schema:
            example: star wars
            type: string
        - description: Interval of time for which to fetch metrics. Default is 30d.
          in: query
          name: interval
          schema:
            enum:
              - 1d
              - 7d
              - 30d
              - 90d
              - 180d
            type: string
        - description: Fid of the user whose casts you want to search
          in: query
          name: author_fid
          schema:
            minimum: 1
            type: integer
        - description: Channel ID of the casts you want to search
          in: query
          name: channel_id
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CastsMetricsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Metrics for casts
      tags:
        - Metrics
  /v2/farcaster/cast/quotes/:
    get:
      description: Fetch casts that quote a given cast
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-cast-quotes
      operationId: fetch-cast-quotes
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Cast identifier (It's either a URL or a hash)
          in: query
          name: identifier
          required: true
          schema:
            example: https://farcaster.xyz/rish/0xafa59bb7
            type: string
        - description: |-
            The query param accepted by the API. Sent along with identifier param.
            url - Cast identifier is a url
            hash - Cast identifier is a hash
          in: query
          name: type
          required: true
          schema:
            enum:
              - url
              - hash
            example: url
            type: string
        - in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            example: 30
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  casts:
                    items:
                      $ref: '#/components/schemas/Cast'
                    type: array
                  next:
                    $ref: '#/components/schemas/NextCursor'
                required:
                  - casts
                  - next
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
      summary: Cast Quotes
      tags:
        - Cast
  /v2/farcaster/cast/search/:
    get:
      description: Search for casts based on a query string, with optional AND filters
      externalDocs:
        url: https://docs.neynar.com/reference/search-casts
      operationId: search-casts
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: |-
            Query string to search for casts. Supported operators:

            | Operator  | Description                                                                                              |
            | --------- | -------------------------------------------------------------------------------------------------------- |
            | `+`       | Acts as the AND operator. This is the default operator between terms and can usually be omitted.         |
            | `\|`      | Acts as the OR operator.                                                                                 |
            | `*`       | When used at the end of a term, signifies a prefix query.                                                  |
            | `"`       | Wraps several terms into a phrase (for example, `"star wars"`).                                          |
            | `(`, `)`  | Wrap a clause for precedence (for example, `star + (wars \| trek)`).                                     |
            | `~n`      | When used after a term (for example, `satr~3`), sets `fuzziness`. When used after a phrase, sets `slop`. |
            | `-`       | Negates the term.                                                                                        |
            | `before:` | Search for casts before a specific date. (e.g. `before:2025-04-20` or `before:2025-04-20T23:59:59`)      |
            | `after:`  | Search for casts after a specific date. (e.g. `after:2025-04-20` or `after:2025-04-20T00:00:00`)         |
          in: query
          name: q
          required: true
          schema:
            example: star (wars | trek) "space battle" after:2024-05-04
            type: string
        - description: |-
            Choices are:
            - `literal` - Searches for the words in the query string (default)
            - `semantic` - Searches for the meaning of the query string
            - `hybrid` - Combines both literal and semantic results
          in: query
          name: mode
          schema:
            enum:
              - literal
              - semantic
              - hybrid
            example: literal
            type: string
        - description: |-
            Choices are:
            - `desc_chron` - All casts sorted by time in a descending order (default)
            - `chron` - All casts sorted by time in ascending order
          in: query
          name: sort_type
          schema:
            enum:
              - desc_chron
              - chron
            example: desc_chron
            type: string
        - description: Fid of the user whose casts you want to search
          in: query
          name: author_fid
          schema:
            minimum: 1
            type: integer
        - description: Providing this will return search results that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Parent URL of the casts you want to search
          in: query
          name: parent_url
          schema:
            type: string
        - description: Channel ID of the casts you want to search
          in: query
          name: channel_id
          schema:
            type: string
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            example: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CastsSearchResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Search for casts
      tags:
        - Cast
  /v2/farcaster/casts/:
    get:
      description: Fetch multiple casts using their respective hashes.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-bulk-casts
      operationId: fetch-bulk-casts
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Hashes of the cast to be retrived (Comma separated, no spaces)
          in: query
          name: casts
          required: true
          schema:
            example: 0xa896906a5e397b4fec247c3ee0e9e4d4990b8004,0x27ff810f7f718afd8c40be236411f017982e0994
            type: string
            x-comma-separated: true
        - description: adds viewer_context to cast object to show whether viewer has liked or recasted the cast.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Optional parameter to sort the casts based on different criteria
          in: query
          name: sort_type
          schema:
            enum:
              - trending
              - likes
              - recasts
              - replies
              - recent
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CastsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Bulk fetch casts
      tags:
        - Cast
  /v2/farcaster/channel/:
    get:
      description: Returns details of a channel
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-channel
      operationId: lookup-channel
      parameters:
        - description: Channel ID for the channel being queried
          in: query
          name: id
          required: true
          schema:
            example: neynar
            type: string
        - description: Type of identifier being used to query the channel. Defaults to ID.
          in: query
          name: type
          schema:
            enum:
              - id
              - parent_url
            example: id
            type: string
        - description: FID of the user viewing the channel.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelResponse'
          description: Success
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
      summary: By ID or parent_url
      tags:
        - Channel
  /v2/farcaster/channel/bulk/:
    get:
      description: Returns details of multiple channels
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-bulk-channels
      operationId: fetch-bulk-channels
      parameters:
        - description: Comma separated list of channel IDs or parent_urls, up to 100 at a time
          in: query
          name: ids
          required: true
          schema:
            example: neynar,warpcast
            type: string
            x-comma-separated: true
        - description: Type of identifier being used to query the channels. Defaults to ID.
          in: query
          name: type
          schema:
            enum:
              - id
              - parent_url
            example: id
            title: ChannelType
            type: string
        - description: FID of the user viewing the channels.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelResponseBulk'
          description: Success
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
      summary: Bulk fetch
      tags:
        - Channel
  /v2/farcaster/channel/follow/:
    delete:
      description: Unfollow a channel
      externalDocs:
        url: https://docs.neynar.com/reference/unfollow-channel
      operationId: unfollow-channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChannelFollowReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Gateway
      summary: Unfollow a channel
      tags:
        - Channel
    post:
      description: Follow a channel
      externalDocs:
        url: https://docs.neynar.com/reference/follow-channel
      operationId: follow-channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChannelFollowReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Gateway
      summary: Follow a channel
      tags:
        - Channel
  /v2/farcaster/channel/followers/:
    get:
      description: Returns a list of followers for a specific channel. Max limit is 1000. Use cursor for pagination.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-followers-for-a-channel
      operationId: fetch-followers-for-a-channel
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Channel ID for the channel being queried
          in: query
          name: id
          required: true
          schema:
            example: founders
            type: string
        - description: Providing this will return a list of followers that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
        - description: Number of followers to fetch
          in: query
          name: limit
          schema:
            default: 25
            example: 30
            format: int32
            maximum: 1000
            minimum: 1
            type: integer
          x-is-limit-param: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: For channel
      tags:
        - Channel
  /v2/farcaster/channel/followers/relevant/:
    get:
      description: Returns a list of relevant channel followers for a specific FID. This usually shows on a channel as "X, Y, Z follow this channel".
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-relevant-followers-for-a-channel
      operationId: fetch-relevant-followers-for-a-channel
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Channel ID being queried
          in: query
          name: id
          required: true
          schema:
            example: neynar
            type: string
        - description: The FID of the user to customize this response for. Providing this will also return a list of followers that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          required: true
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RelevantFollowersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Relevant followers
      tags:
        - Channel
  /v2/farcaster/channel/list/:
    get:
      description: Returns a list of all channels with their details
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-all-channels
      operationId: fetch-all-channels
      parameters:
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 30
            maximum: 200
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelListResponse'
          description: Success
      summary: Fetch all channels with their details
      tags:
        - Channel
  /v2/farcaster/channel/member/:
    delete:
      description: Remove a user from a channel or a user's invite to a channel role
      externalDocs:
        url: https://docs.neynar.com/reference/remove-channel-member
      operationId: remove-channel-member
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveChannelMemberReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Remove user
      tags:
        - Channel
  /v2/farcaster/channel/member/invite/:
    post:
      description: Invite a user to a channel
      externalDocs:
        url: https://docs.neynar.com/reference/invite-channel-member
      operationId: invite-channel-member
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InviteChannelMemberReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Invite
      tags:
        - Channel
    put:
      description: Accept or reject a channel invite
      externalDocs:
        url: https://docs.neynar.com/reference/respond-channel-invite
      operationId: respond-channel-invite
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RespondChannelInviteReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Accept or reject an invite
      tags:
        - Channel
  /v2/farcaster/channel/member/invite/list/:
    get:
      description: Fetch a list of invites, either in a channel or for a user. If both are provided, open channel invite for that user is returned.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-channel-invites
      operationId: fetch-channel-invites
      parameters:
        - description: Channel ID for the channel being queried
          in: query
          name: channel_id
          schema:
            example: neynar
            type: string
        - description: FID of the user being invited
          in: query
          name: invited_fid
          schema:
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 30
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelMemberInviteListResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Open invites
      tags:
        - Channel
  /v2/farcaster/channel/member/list/:
    get:
      description: Fetch a list of members in a channel
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-channel-members
      operationId: fetch-channel-members
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Channel ID for the channel being queried
          in: query
          name: channel_id
          required: true
          schema:
            example: neynar
            type: string
        - description: FID of the user being queried. Specify this to check if a user is a member of the channel without paginating through all members.
          in: query
          name: fid
          schema:
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 30
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelMemberListResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Fetch members
      tags:
        - Channel
  /v2/farcaster/channel/search/:
    get:
      description: Returns a list of channels based on ID or name
      externalDocs:
        url: https://docs.neynar.com/reference/search-channels
      operationId: search-channels
      parameters:
        - description: Channel ID or name for the channel being queried
          in: query
          name: q
          required: true
          schema:
            example: neynar
            type: string
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 30
            maximum: 200
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
        - description: FID of the user viewing the channels.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelSearchResponse'
          description: Success
      summary: Search by ID or name
      tags:
        - Channel
  /v2/farcaster/channel/trending/:
    get:
      description: Returns a list of trending channels based on activity
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-trending-channels
      operationId: fetch-trending-channels
      parameters:
        - in: query
          name: time_window
          schema:
            enum:
              - 1d
              - 7d
              - 30d
            type: string
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 10
            format: int32
            maximum: 25
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrendingChannelResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Channels by activity
      tags:
        - Channel
  /v2/farcaster/channel/user/:
    get:
      description: Fetches all channels that a user has casted in, in reverse chronological order.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-users-active-channels
      operationId: fetch-users-active-channels
      parameters:
        - description: The user's FID (identifier)
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersActiveChannelsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
      summary: Fetch channels that user is active in
      tags:
        - Channel
  /v2/farcaster/feed/:
    get:
      description: Fetch casts based on filters. Ensure setting the correct parameters based on the feed_type and filter_type.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-feed
      operationId: fetch-feed
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Defaults to following (requires FID or address). If set to filter (requires filter_type)
          in: query
          name: feed_type
          schema:
            default: following
            enum:
              - following
              - filter
            example: filter
            title: FeedType
            type: string
        - description: Used when feed_type=filter. Options include fids (requires fids), parent_url (requires parent_url), channel_id (requires channel_id), embed_url (requires embed_url), or embed_types (requires embed_types).
          in: query
          name: filter_type
          schema:
            enum:
              - fids
              - parent_url
              - channel_id
              - embed_url
              - embed_types
            example: fids
            title: FilterType
            type: string
        - description: (Optional) FID of user whose feed you want to create. By default, the API expects this field, except if you pass a filter_type
          in: query
          name: fid
          schema:
            minimum: 1
            type: integer
        - description: Used when filter_type=FIDs . Create a feed based on a list of FIDs. Max array size is 100. Requires feed_type and filter_type.
          in: query
          name: fids
          schema:
            example: 3,2,194
            type: string
            x-accept-as: integer
            x-comma-separated: true
        - description: Used when filter_type=parent_url can be used to fetch content under any parent url e.g. FIP-2 channels on Warpcast. Requires feed_type and filter_type.
          in: query
          name: parent_url
          schema:
            example: chain://eip155:1/erc721:0xd4498134211baad5846ce70ce04e7c4da78931cc
            type: string
        - description: Used when filter_type=channel_id can be used to fetch casts under a channel. Requires feed_type and filter_type.
          in: query
          name: channel_id
          schema:
            example: neynar
            type: string
        - description: Used when filter_type=channel_id. Only include casts from members of the channel. True by default.
          in: query
          name: members_only
          schema:
            default: true
            deprecated: true
            example: true
            type: boolean
        - description: Used when filter_type=embed_url. Casts with embedded URLs prefixed by this embed_url param will be returned. We normalize your given URL prefix and prepend 'https://' if no protocol is included. Requires feed_type and filter_type.
          in: query
          name: embed_url
          schema:
            example: https://example.com
            type: string
        - description: Used when filter_type=embed_types can be used to fetch all casts with matching content types. Requires feed_type and filter_type.
          in: query
          name: embed_types
          schema:
            items:
              description: The content type of the embedded file
              enum:
                - text
                - image
                - video
                - audio
                - text/html
                - text/plain
                - image/jpeg
                - image/png
                - image/gif
                - image/webp
                - image/svg+xml
                - image/heif
                - video/mp4
                - video/quicktime
                - audio/mpeg
                - application/pdf
                - application/json
                - application/x-mpegurl
              title: EmbedType
              type: string
            type: array
        - description: Include recasts in the response, true by default
          in: query
          name: with_recasts
          schema:
            default: true
            type: boolean
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            example: 30
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
        - description: Providing this will return a feed that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            example: 3
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: By filters
      tags:
        - Feed
  /v2/farcaster/feed/channels/:
    get:
      description: Fetch feed based on channel IDs
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-feed-by-channel-ids
      operationId: fetch-feed-by-channel-ids
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Comma separated list of up to 10 channel IDs e.g. neynar,farcaster
          in: query
          name: channel_ids
          required: true
          schema:
            example: neynar,farcaster
            type: string
            x-comma-separated: true
        - description: Include recasts in the response, true by default
          in: query
          name: with_recasts
          schema:
            default: true
            type: boolean
        - description: Providing this will return a feed that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Include replies in the response, false by default
          in: query
          name: with_replies
          schema:
            default: false
            type: boolean
        - description: Used when filter_type=channel_id. Only include casts from members of the channel. True by default.
          in: query
          name: members_only
          schema:
            default: true
            deprecated: true
            example: true
            type: boolean
        - description: Comma separated list of FIDs to filter the feed by, up to 10 at a time
          in: query
          name: fids
          schema:
            type: string
            x-accept-as: integer
            x-comma-separated: true
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
        - description: If true, only casts that have been liked by the moderator (if one exists) will be returned.
          in: query
          name: should_moderate
          schema:
            default: false
            deprecated: true
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: By channel IDs
      tags:
        - Feed
  /v2/farcaster/feed/following/:
    get:
      description: Fetch feed based on who a user is following
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-user-following-feed
      operationId: fetch-user-following-feed
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: FID of user whose feed you want to create
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Providing this will return a feed that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Include recasts in the response, true by default
          in: query
          name: with_recasts
          schema:
            default: true
            example: true
            type: boolean
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            example: 30
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Following
      tags:
        - Feed
  /v2/farcaster/feed/parent_urls/:
    get:
      description: Fetch feed based on parent URLs
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-feed-by-parent-urls
      operationId: fetch-feed-by-parent-urls
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Comma separated list of parent_urls
          in: query
          name: parent_urls
          required: true
          schema:
            example: chain://eip155:1/erc721:0xd4498134211baad5846ce70ce04e7c4da78931cc
            type: string
            x-comma-separated: true
        - description: Include recasts in the response, true by default
          in: query
          name: with_recasts
          schema:
            default: true
            type: boolean
        - description: Providing this will return a feed that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Include replies in the response, false by default
          in: query
          name: with_replies
          schema:
            default: false
            type: boolean
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: By parent URLs
      tags:
        - Feed
  /v2/farcaster/feed/topic/:
    get:
      description: Fetch feed based on a topic slug.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-feed-by-topic
      operationId: fetch-feed-by-topic
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Topic slug to filter casts by. Must be lowercase and contain only alphanumeric characters and underscores.
          in: query
          name: slug
          required: true
          schema:
            example: ai_agents
            type: string
        - description: Include recasts in the response, true by default.
          in: query
          name: with_recasts
          schema:
            default: true
            type: boolean
        - description: Providing this will return a feed that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            example: 3
            minimum: 1
            type: integer
        - description: Number of results to fetch.
          in: query
          name: limit
          schema:
            default: 25
            example: 30
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: By topic
      tags:
        - Feed
  /v2/farcaster/feed/user/casts/:
    get:
      description: Fetch casts for a given user FID in reverse chronological order. Also allows filtering by parent_url and channel
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-casts-for-user
      operationId: fetch-casts-for-user
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: FID of user whose recent casts you want to fetch
          in: query
          name: fid
          required: true
          schema:
            example: 194
            minimum: 1
            type: integer
        - description: Optionally filter to casts created via a specific app FID, e.g. 9152 for Warpcast
          in: query
          name: app_fid
          schema:
            example: 9152
            minimum: 1
            type: integer
        - description: FID of the user viewing the feed
          in: query
          name: viewer_fid
          schema:
            example: 3
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            example: 30
            format: int32
            maximum: 150
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor
          in: query
          name: cursor
          schema:
            type: string
        - description: Include reply casts by the author in the response, true by default
          in: query
          name: include_replies
          schema:
            default: true
            example: true
            type: boolean
        - description: Parent URL to filter the feed; mutually exclusive with channel_id
          in: query
          name: parent_url
          schema:
            type: string
        - description: Channel ID to filter the feed; mutually exclusive with parent_url
          in: query
          name: channel_id
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Chronologically
      tags:
        - Feed
  /v2/farcaster/feed/user/popular/:
    get:
      description: Fetch 10 most popular casts for a given user FID; popularity based on replies, likes and recasts; sorted by most popular first
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-popular-casts-by-user
      operationId: fetch-popular-casts-by-user
      parameters:
        - description: FID of user whose feed you want to create
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkCastsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: 10 most popular casts
      tags:
        - Feed
  /v2/farcaster/feed/user/replies_and_recasts/:
    get:
      description: Fetch recent replies and recasts for a given user FID; sorted by most recent first
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-replies-and-recasts-for-user
      operationId: fetch-replies-and-recasts-for-user
      parameters:
        - description: FID of user whose replies and recasts you want to fetch
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Filter to fetch only replies or recasts
          in: query
          name: filter
          schema:
            default: all
            enum:
              - replies
              - recasts
              - all
            example: replies
            type: string
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            example: 30
            format: int32
            maximum: 50
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
        - description: Providing this will return a feed that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Replies and recasts
      tags:
        - Feed
  /v2/farcaster/fname/availability/:
    get:
      description: Check if a given fname is available
      externalDocs:
        url: https://docs.neynar.com/reference/is-fname-available
      operationId: is-fname-available
      parameters:
        - in: query
          name: fname
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FnameAvailabilityResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Check fname availability
      tags:
        - fname
  /v2/farcaster/followers/:
    get:
      description: Returns a list of followers for a specific FID.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-user-followers
      operationId: fetch-user-followers
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: User who's profile you are looking at
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Providing this will return a list of followers that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Sort type for fetch followers. Default is `desc_chron`
          in: query
          name: sort_type
          schema:
            enum:
              - desc_chron
              - algorithmic
            example: desc_chron
            type: string
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 30
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FollowersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Followers
      tags:
        - Follows
  /v2/farcaster/followers/reciprocal/:
    get:
      description: Returns users who the given FID follows and they follow the FID back (reciprocal following relationship)
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-user-reciprocal-followers
      operationId: fetch-user-reciprocal-followers
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - in: query
          name: limit
          schema:
            default: 25
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor
          in: query
          name: cursor
          schema:
            type: string
        - in: query
          name: sort_type
          schema:
            default: algorithmic
            enum:
              - desc_chron
              - algorithmic
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  next:
                    $ref: '#/components/schemas/NextCursor'
                  users:
                    items:
                      $ref: '#/components/schemas/ReciprocalFollower'
                    type: array
                required:
                  - users
                  - next
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Reciprocal Followers
      tags:
        - Follows
  /v2/farcaster/followers/relevant/:
    get:
      description: Returns a list of relevant followers for a specific FID. This usually shows on a profile as "X, Y and Z follow this user".
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-relevant-followers
      operationId: fetch-relevant-followers
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: User who's profile you are looking at
          in: query
          name: target_fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: The FID of the user to customize this response for. Providing this will also return a list of followers that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          required: true
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RelevantFollowersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Relevant followers
      tags:
        - Follows
  /v2/farcaster/following/:
    get:
      description: Fetch a list of users who a given user is following. Can optionally include a viewer_fid and sort_type.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-user-following
      operationId: fetch-user-following
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: FID of the user whose following you want to fetch.
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Providing this will return a list of users that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            example: 3
            minimum: 1
            type: integer
        - description: Optional parameter to sort the users based on different criteria.
          in: query
          name: sort_type
          schema:
            enum:
              - desc_chron
              - algorithmic
            example: desc_chron
            type: string
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FollowersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Following
      tags:
        - Follows
  /v2/farcaster/following/suggested/:
    get:
      description: Fetch a list of suggested users to follow. Used to help users discover new users to follow
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-follow-suggestions
      operationId: fetch-follow-suggestions
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: FID of the user whose following you want to fetch.
          in: query
          name: fid
          required: true
          schema:
            type: integer
        - description: Providing this will return a list of users that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Suggest Follows
      tags:
        - Follows
  /v2/farcaster/frame/catalog/:
    get:
      description: A curated list of featured mini apps
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-frame-catalog
      operationId: fetch-frame-catalog
      parameters:
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 100
            example: 100
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor
          in: query
          name: cursor
          schema:
            type: string
        - description: Time window used to calculate the change in trending score for each mini app, used to sort mini app results
          in: query
          name: time_window
          schema:
            default: 7d
            enum:
              - 1h
              - 6h
              - 12h
              - 24h
              - 7d
            example: 7d
            title: MiniAppTimeWindow
            type: string
        - description: 'Comma separated list of categories to include in the results. Includes all if left blank. Example: categories=games,social OR categories=games&categories=social'
          in: query
          name: categories
          schema:
            example:
              - games
              - social
            items:
              enum:
                - games
                - social
                - finance
                - utility
                - productivity
                - health-fitness
                - news-media
                - music
                - shopping
                - education
                - developer-tools
                - entertainment
                - art-creativity
              title: FrameCategory
              type: string
            type: array
        - description: List of blockchain networks by which to filter results.  Mini apps included in the results will specify at least one of the supplied networks or specify none. The list can be provided as comma-separated string or array.
          in: query
          name: networks
          schema:
            example:
              - ethereum
              - base
              - solana
            items:
              description: Networks supported by mini apps
              enum:
                - ethereum
                - base
                - arbitrum
                - arbitrum-sepolia
                - base-sepolia
                - degen
                - gnosis
                - optimism
                - optimism-sepolia
                - polygon
                - ethereum-sepolia
                - zora
                - unichain
                - monad-testnet
                - celo
                - solana
              example: base
              type: string
            title: MiniappNetworksSchema
            type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FrameCatalogResponse'
          description: Success
      summary: Mini apps catalog
      tags:
        - Frame
  /v2/farcaster/frame/notification_tokens/:
    get:
      description: Returns a list of notifications tokens related to a mini app
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-notification-tokens
      operationId: fetch-notification-tokens
      parameters:
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 20
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Comma separated list of FIDs, up to 100 at a time. If you pass in FIDs, you will get back the notification tokens for those FIDs. If you don't pass in FIDs, you will get back all the notification tokens for the mini app.
          in: query
          name: fids
          schema:
            example: 194, 191, 6131
            type: string
            x-accept-as: integer
            x-comma-separated: true
        - description: Pagination cursor
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FrameNotificationTokens'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: List of mini app notification tokens
      tags:
        - Frame
  /v2/farcaster/frame/notifications/:
    get:
      description: Retrieve notification delivery and opened stats for notification campaigns
      externalDocs:
        url: https://docs.neynar.com/reference/get-notification-campaign-stats
      operationId: get-notification-campaign-stats
      parameters:
        - description: An ID of a specific notification campaign to query
          in: query
          name: campaign_id
          schema:
            format: uuid
            type: string
        - description: The number of results to return
          in: query
          name: limit
          schema:
            default: 100
            maximum: 1000
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  next:
                    $ref: '#/components/schemas/NextCursor'
                  notificationCampaigns:
                    items:
                      $ref: '#/components/schemas/NotificationCampaign'
                    type: array
                required:
                  - notificationCampaigns
                  - next
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ZodError'
                  - $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Get notification campaign stats
      tags:
        - Frame
    post:
      description: Send notifications to interactors of a mini app. By default every broadcast is delivered synchronously and returns 200 with aggregate counts. When the `ASYNC_NOTIFICATIONS_ENABLED` server flag is on, broadcasts with more than 100 notification tokens are queued and return 202 with a campaign_id instead; poll the campaign stats endpoint for progress. Small broadcasts always stay synchronous.
      externalDocs:
        url: https://docs.neynar.com/reference/publish-frame-notifications
      operationId: publish-frame-notifications
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendFrameNotificationsReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendFrameNotificationsResponse'
          description: Success
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueuedFrameNotificationsResponse'
          description: '202'
        '400':
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ZodError'
                  - $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unprocessable Content
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Send notifications
      tags:
        - Frame
  /v2/farcaster/frame/relevant/:
    get:
      description: Fetch a list of mini apps relevant to the user based on casts by users with strong affinity score for the user
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-relevant-frames
      operationId: fetch-relevant-frames
      parameters:
        - description: FID of the user to fetch relevant mini apps for
          in: query
          name: viewer_fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Time window used to limit statistics used to calculate mini app relevance
          in: query
          name: time_window
          schema:
            default: 7d
            enum:
              - 1h
              - 6h
              - 12h
              - 24h
              - 7d
            example: 7d
            type: string
        - description: List of blockchain networks by which to filter results.  Mini apps included in the results will specify at least one of the supplied networks or specify none. The list can be provided as comma-separated string or array.
          in: query
          name: networks
          schema:
            example:
              - ethereum
              - base
              - solana
            items:
              description: Networks supported by mini apps
              enum:
                - ethereum
                - base
                - arbitrum
                - arbitrum-sepolia
                - base-sepolia
                - degen
                - gnosis
                - optimism
                - optimism-sepolia
                - polygon
                - ethereum-sepolia
                - zora
                - unichain
                - monad-testnet
                - celo
                - solana
              example: base
              type: string
            title: MiniappNetworksSchema
            type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  relevant_frames:
                    items:
                      properties:
                        frame:
                          description: FrameV2 object
                          properties:
                            author:
                              $ref: '#/components/schemas/User'
                            frames_url:
                              description: Launch URL of the mini app
                              type: string
                            image:
                              description: URL of the image
                              type: string
                            manifest:
                              $ref: '#/components/schemas/FarcasterManifest'
                            metadata:
                              properties:
                                html:
                                  $ref: '#/components/schemas/HtmlMetadata'
                              required:
                                - html
                              type: object
                            title:
                              description: Button title of a mini app
                              type: string
                            version:
                              description: Version of the mini app, 'next' for v2, 'vNext' for v1
                              type: string
                          required:
                            - version
                            - image
                            - frames_url
                          type: object
                        remaining_relevant_users:
                          description: Array of remaining relevant users in dehydrated form
                          items:
                            $ref: '#/components/schemas/UserDehydrated'
                          type: array
                        top_relevant_users:
                          description: Array of the most relevant users
                          items:
                            $ref: '#/components/schemas/User'
                          type: array
                      required:
                        - frame
                        - top_relevant_users
                        - remaining_relevant_users
                      type: object
                    type: array
                required:
                  - relevant_frames
                type: object
          description: Success
      summary: Relevant mini apps
      tags:
        - Frame
  /v2/farcaster/frame/search/:
    get:
      description: Search for mini apps based on a query string
      externalDocs:
        url: https://docs.neynar.com/reference/search-frames
      operationId: search-frames
      parameters:
        - description: Query string to search for mini apps
          in: query
          name: q
          required: true
          schema:
            maxLength: 32
            type: string
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 20
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor
          in: query
          name: cursor
          schema:
            type: string
        - description: List of blockchain networks by which to filter results.  Mini apps included in the results will specify at least one of the supplied networks or specify none. The list can be provided as comma-separated string or array.
          in: query
          name: networks
          schema:
            example:
              - ethereum
              - base
              - solana
            items:
              description: Networks supported by mini apps
              enum:
                - ethereum
                - base
                - arbitrum
                - arbitrum-sepolia
                - base-sepolia
                - degen
                - gnosis
                - optimism
                - optimism-sepolia
                - polygon
                - ethereum-sepolia
                - zora
                - unichain
                - monad-testnet
                - celo
                - solana
              example: base
              type: string
            title: MiniappNetworksSchema
            type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FrameCatalogResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Search mini apps
      tags:
        - Frame
  /v2/farcaster/frame/transaction/pay/:
    get:
      description: Retrieves details about a transaction pay mini app by ID
      externalDocs:
        url: https://docs.neynar.com/reference/get-transaction-pay-frame
      operationId: get-transaction-pay-frame
      parameters:
        - description: ID of the transaction mini app to retrieve
          in: query
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionFrameResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Get transaction pay mini app
      tags:
        - Frame
    post:
      description: Creates a new transaction pay mini app that can be used to collect payments through a mini app
      externalDocs:
        url: https://docs.neynar.com/reference/create-transaction-pay-frame
      operationId: create-transaction-pay-frame
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FramePayTransactionReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionFrameResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unauthorized
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Create transaction pay mini app
      tags:
        - Agents
  /v2/farcaster/fungible/owner/relevant/:
    get:
      description: Fetch a list of relevant owners for a on chain asset. If a viewer is provided, only relevant holders will be shown. This usually shows on a fungible asset page as "X, Y, Z and N others you know own this asset".
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-relevant-fungible-owners
      operationId: fetch-relevant-fungible-owners
      parameters:
        - description: Contract address of the fungible asset
          in: query
          name: contract_address
          required: true
          schema:
            example: '0x0db510e79909666d6dec7f5e49370838c16d950f'
            type: string
        - description: Network of the fungible asset.
          in: query
          name: network
          required: true
          schema:
            enum:
              - ethereum
              - optimism
              - base
              - arbitrum
            title: FungibleOwnerRelevantNetwork
            type: string
        - description: If you provide a viewer_fid, the response will include token holders from the user's network, respecting their mutes and blocks and including viewer_context; if not provided, the response will show top token holders across the network—both sets can be combined to generate a longer list if desired.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RelevantFungibleOwnersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Relevant owners
      tags:
        - Onchain
  /v2/farcaster/fungible/owner/relevant/bulk:
    get:
      description: Fetch relevant owners for multiple on chain assets in a single request, up to 10 contract addresses at a time.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-bulk-relevant-fungible-owners
      operationId: fetch-bulk-relevant-fungible-owners
      parameters:
        - description: Comma separated list of contract addresses, up to 10 at a time
          in: query
          name: contract_addresses
          required: true
          schema:
            example: 0x0db510e79909666d6dec7f5e49370838c16d950f,0x4ed4e862860bed51a9570b96d89af5e1b0efefed
            type: string
            x-comma-separated: true
        - description: Network of the fungible assets.
          in: query
          name: network
          required: true
          schema:
            enum:
              - ethereum
              - optimism
              - base
              - arbitrum
            type: string
        - description: If you provide a viewer_fid, the response will include token holders from the user's network, respecting their mutes and blocks and including viewer_context.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkRelevantFungibleOwnersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Bulk relevant owners
      tags:
        - Onchain
  /v2/farcaster/fungible/send/:
    post:
      description: Send fungibles in bulk to several farcaster users. A funded wallet is to required use this API. React out to us on the Neynar channel on farcaster to get your wallet address.
      externalDocs:
        url: https://docs.neynar.com/reference/send-fungibles-to-users
      operationId: send-fungibles-to-users
      parameters:
        - $ref: '#/components/parameters/WalletIdHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionSendFungiblesReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionSendFungiblesResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Send fungibles
      tags:
        - Onchain
  /v2/farcaster/fungible/trades/:
    get:
      description: Get recent trades for a specific fungible within a timeframe. Returns trades ordered by timestamp (most recent first).
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-fungible-trades
      operationId: fetch-fungible-trades
      parameters:
        - description: A blockchain network e.g. "ethereum", "optimism", "base", "arbitrum", "robinhood"
          in: query
          name: network
          required: true
          schema:
            enum:
              - ethereum
              - optimism
              - base
              - arbitrum
              - robinhood
            title: Network
            type: string
        - description: Contract address
          in: query
          name: address
          required: true
          schema:
            type: string
        - description: Time window for trades e.g. "1h", "6h", "12h", "24h", "7d"
          in: query
          name: time_window
          schema:
            default: 24h
            enum:
              - 1h
              - 6h
              - 12h
              - 24h
              - 7d
            type: string
        - description: Minimum USD amount to filter trades
          in: query
          name: min_amount_usd
          schema:
            type: number
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  object:
                    enum:
                      - fungible_trades
                    type: string
                  trades:
                    items:
                      properties:
                        object:
                          enum:
                            - trade
                          type: string
                        pool:
                          properties:
                            address:
                              type: string
                            object:
                              enum:
                                - pool
                              type: string
                            protocol_family:
                              type: string
                            protocol_version:
                              type: string
                          required:
                            - object
                            - address
                          type: object
                        trader:
                          $ref: '#/components/schemas/UserDehydrated'
                        transaction:
                          properties:
                            hash:
                              type: string
                            net_transfer:
                              properties:
                                object:
                                  enum:
                                    - net_transfer
                                  type: string
                                receiving_fungible:
                                  $ref: '#/components/schemas/FungibleBalance'
                                sending_fungible:
                                  $ref: '#/components/schemas/FungibleBalance'
                              required:
                                - object
                                - receiving_fungible
                                - sending_fungible
                              type: object
                            network:
                              properties:
                                name:
                                  type: string
                                object:
                                  enum:
                                    - network
                                  type: string
                              required:
                                - object
                                - name
                              type: object
                          required:
                            - hash
                            - network
                            - net_transfer
                          type: object
                      required:
                        - object
                        - trader
                        - transaction
                      type: object
                    type: array
                required:
                  - object
                  - trades
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Get fungible trades
      tags:
        - Onchain
  /v2/farcaster/fungible/trending/:
    get:
      description: Fetch trending fungibles based on buy activity from watched addresses. Returns fungibles ranked by USD buy volume and buy count within the specified time window.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-trending-fungibles
      operationId: fetch-trending-fungibles
      parameters:
        - description: A blockchain network e.g. "ethereum", "optimism", "base", "arbitrum", "robinhood"
          in: query
          name: network
          required: true
          schema:
            enum:
              - ethereum
              - optimism
              - base
              - arbitrum
              - robinhood
            title: Network
            type: string
        - description: Time window for trending calculations e.g. "1h", "6h", "12h", "24h", "7d"
          in: query
          name: time_window
          schema:
            default: 24h
            enum:
              - 1h
              - 6h
              - 12h
              - 24h
              - 7d
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  trending:
                    items:
                      properties:
                        fungible:
                          properties:
                            address:
                              description: The contract address of the token
                              type: string
                            decimals:
                              description: The number of decimals the token uses
                              type: integer
                            logo:
                              description: The logo URL of the token
                              nullable: true
                              type: string
                            name:
                              description: The token name e.g. "Ethereum"
                              type: string
                            network:
                              $ref: '#/components/schemas/Network'
                            object:
                              enum:
                                - fungible
                              type: string
                            price:
                              properties:
                                in_usd:
                                  type: string
                              required:
                                - in_usd
                              type: object
                            symbol:
                              description: The token symbol e.g. "ETH"
                              type: string
                            total_supply:
                              description: The total supply of the token
                              nullable: true
                              type: string
                          required:
                            - object
                            - network
                            - name
                            - symbol
                            - address
                            - decimals
                            - total_supply
                            - logo
                          type: object
                        object:
                          enum:
                            - trending_fungible
                          type: string
                      required:
                        - object
                        - fungible
                      type: object
                    type: array
                required:
                  - trending
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Trending fungibles
      tags:
        - Onchain
  /v2/farcaster/fungibles/:
    get:
      description: Fetch details for fungible assets identified by fungible identifiers.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-fungibles
      operationId: fetch-fungibles
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Comma-separated fungible identifiers
          in: query
          name: fungibles
          required: true
          schema:
            example: eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913,eip155:8453/erc20:0x2f6c17fa9f9bc3600346ab4e48c0701e1d5962ae
            type: string
        - description: Optional FID of the viewer to personalize cast count filtering
          in: query
          name: viewer_fid
          schema:
            type: number
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FungiblesResponseSchema'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Fetch fungibles
      tags:
        - Onchain
  /v2/farcaster/login/authorize/:
    get:
      deprecated: true
      description: 'Fetch authorization url (Fetched authorized url useful for SIWN login operation) DEPRECATED: Sign In With Neynar is being retired. Use Neynar-managed signers instead: https://docs.neynar.com/docs/integrate-managed-signers'
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-authorization-url
      operationId: fetch-authorization-url
      parameters:
        - in: query
          name: client_id
          required: true
          schema:
            format: uuid
            type: string
        - in: query
          name: response_type
          required: true
          schema:
            enum:
              - code
            title: AuthorizationUrlResponseType
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationUrlResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unauthorized
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Gone
      summary: Fetch authorization url
      tags:
        - Signer
  /v2/farcaster/login/nonce/:
    get:
      description: Nonce to sign a message
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-nonce
      operationId: fetch-nonce
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NonceResponse'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unauthorized
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Fetch nonce
      tags:
        - Login
  /v2/farcaster/message/:
    post:
      description: Publish a message to farcaster. The message must be signed by a signer managed by the developer. Use the @farcaster/core library to construct and sign the message. Use the Message.toJSON method on the signed message and pass the JSON in the body of this POST request.
      externalDocs:
        url: https://docs.neynar.com/reference/publish-message-to-farcaster
      operationId: publish-message-to-farcaster
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublishMessageReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublishMessageResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Publish message
      tags:
        - Signer
  /v2/farcaster/mute/:
    delete:
      description: Deletes a mute for a given FID. This is an allowlisted API, reach out if you want access.
      externalDocs:
        url: https://docs.neynar.com/reference/delete-mute
      operationId: delete-mute
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MuteReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MuteResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Unmute FID
      tags:
        - Mute
    post:
      description: Adds a mute for a given FID. This is an allowlisted API, reach out if you want access.
      externalDocs:
        url: https://docs.neynar.com/reference/publish-mute
      operationId: publish-mute
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MuteReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MuteResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Mute FID
      tags:
        - Mute
  /v2/farcaster/mute/list/:
    get:
      description: Fetches all FIDs that a user has muted.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-mute-list
      operationId: fetch-mute-list
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: The user's FID (identifier)
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 20
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MuteListResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Muted FIDs of user
      tags:
        - Mute
  /v2/farcaster/nft/deploy/erc721/:
    post:
      description: Deploy a new ERC-721A (series) NFT collection.
      externalDocs:
        url: https://docs.neynar.com/reference/deploy-erc721
      operationId: deploy-erc721
      parameters:
        - $ref: '#/components/parameters/WalletIdHeader'
      requestBody:
        content:
          application/json:
            schema:
              properties:
                description:
                  type: string
                external_link:
                  type: string
                image:
                  type: string
                max_supply:
                  default: 0
                  description: Max supply (0 = unlimited)
                  maximum: 281474976710655
                  minimum: 0
                  type: integer
                mint_config:
                  properties:
                    end_timestamp:
                      description: Unix timestamp (defaults to no end date)
                      maximum: 281474976710655
                      minimum: 0
                      type: integer
                    max_per_tx:
                      default: 0
                      description: Max tokens per transaction (0 = unlimited)
                      maximum: 281474976710655
                      minimum: 0
                      type: integer
                    max_per_wallet:
                      default: 0
                      description: Max tokens per wallet (0 = unlimited)
                      maximum: 281474976710655
                      minimum: 0
                      type: integer
                    price_per_token:
                      default: '0'
                      description: Price per token in wei (0 = free mint)
                      pattern: ^\d{1,57}$
                      type: string
                    start_timestamp:
                      description: Unix timestamp (defaults to current time)
                      maximum: 281474976710655
                      minimum: 0
                      type: integer
                  type: object
                name:
                  maxLength: 255
                  minLength: 1
                  type: string
                network:
                  enum:
                    - base
                    - optimism
                    - base-sepolia
                  type: string
                royalty_bps:
                  default: 0
                  description: Royalty in basis points (500 = 5%, max 2500 = 25%)
                  maximum: 2500
                  minimum: 0
                  type: integer
                royalty_recipient:
                  description: Defaults to creator wallet
                  example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
                  pattern: ^0x[a-fA-F0-9]{40}$
                  type: string
                symbol:
                  maxLength: 32
                  minLength: 1
                  type: string
              required:
                - network
                - name
                - symbol
              type: object
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                properties:
                  collection:
                    properties:
                      address:
                        $ref: '#/components/schemas/EthAddress'
                      name:
                        type: string
                      network:
                        enum:
                          - base
                          - optimism
                          - base-sepolia
                        type: string
                      symbol:
                        type: string
                      transaction_hash:
                        pattern: ^0x[a-fA-F0-9]{64}$
                        type: string
                      type:
                        enum:
                          - ERC721
                        type: string
                    required:
                      - type
                      - network
                      - address
                      - name
                      - symbol
                      - transaction_hash
                    type: object
                  object:
                    enum:
                      - nft_collection
                    type: string
                required:
                  - object
                  - collection
                type: object
          description: '201'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Deploy ERC-721 collection
      tags:
        - Onchain
  /v2/farcaster/nft/image/:
    post:
      description: Generate a new image or edit existing images using AI. Returns a publicly accessible URL to the generated image.
      externalDocs:
        url: https://docs.neynar.com/reference/generate-image
      operationId: generate-image
      parameters:
        - $ref: '#/components/parameters/WalletIdHeader'
      requestBody:
        content:
          application/json:
            schema:
              properties:
                format:
                  default: png
                  description: 'Output image format (default: png)'
                  enum:
                    - png
                    - jpeg
                    - webp
                  type: string
                height:
                  default: 1024
                  description: 'Output image height in pixels (default: 1024)'
                  maximum: 4096
                  minimum: 1
                  type: integer
                high_fidelity:
                  default: false
                  description: 'Use the high-fidelity model (slower but more detailed). Default: false.'
                  type: boolean
                prompt:
                  description: Text prompt describing the image to generate
                  minLength: 1
                  type: string
                source_image_urls:
                  description: Optional array of source image URLs to edit or use as reference (max 5)
                  items:
                    format: uri
                    type: string
                  maxItems: 5
                  type: array
                width:
                  default: 1024
                  description: 'Output image width in pixels (default: 1024)'
                  maximum: 4096
                  minimum: 1
                  type: integer
              required:
                - prompt
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  image_url:
                    format: uri
                    type: string
                required:
                  - image_url
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Generate an NFT image
      tags:
        - Onchain
  /v2/farcaster/nft/metadata/token:
    post:
      description: Uploads metadata JSON to S3 for one or more tokens on a deployed contract. Requires contract ownership via the wallet header.
      externalDocs:
        url: https://docs.neynar.com/reference/upload-token-metadata
      operationId: upload-token-metadata
      parameters:
        - $ref: '#/components/parameters/WalletIdHeader'
      requestBody:
        content:
          application/json:
            schema:
              properties:
                contract_address:
                  description: Ethereum address
                  example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
                  pattern: ^0x[a-fA-F0-9]{40}$
                  title: EthAddress
                  type: string
                network:
                  enum:
                    - base
                    - optimism
                    - base-sepolia
                  type: string
                tokens:
                  items:
                    properties:
                      metadata:
                        properties:
                          animation_url:
                            type: string
                          attributes:
                            items:
                              properties:
                                display_type:
                                  enum:
                                    - number
                                    - boost_number
                                    - boost_percentage
                                    - date
                                  type: string
                                max_value:
                                  type: number
                                trait_type:
                                  type: string
                                value:
                                  oneOf:
                                    - type: string
                                    - type: number
                              required:
                                - trait_type
                                - value
                              type: object
                            type: array
                          background_color:
                            pattern: ^[0-9a-fA-F]{6}$
                            type: string
                          description:
                            type: string
                          external_url:
                            type: string
                          image:
                            type: string
                          name:
                            type: string
                          youtube_url:
                            type: string
                        required:
                          - name
                          - image
                        type: object
                      token_id:
                        type: string
                    required:
                      - token_id
                      - metadata
                    type: object
                  maxItems: 200
                  minItems: 1
                  type: array
              required:
                - network
                - contract_address
                - tokens
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  tokens:
                    items:
                      oneOf:
                        - properties:
                            token_id:
                              type: string
                            uri:
                              type: string
                          required:
                            - token_id
                            - uri
                          type: object
                        - properties:
                            error:
                              type: string
                            token_id:
                              type: string
                          required:
                            - token_id
                            - error
                          type: object
                    type: array
                required:
                  - tokens
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZodError'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Upload NFT token metadata
      tags:
        - Onchain
  /v2/farcaster/nft/mint/:
    get:
      description: Simulates mint calldata for the given recipients, contract, and network. Useful for previewing calldata and ABI before minting.
      externalDocs:
        url: https://docs.neynar.com/reference/simulate-nft-mint
      operationId: simulate-nft-mint
      parameters:
        - description: JSON array of recipients (same structure as POST).
          in: query
          name: recipients
          required: true
          schema:
            type: string
        - description: Ethereum address
          in: query
          name: nft_contract_address
          required: true
          schema:
            example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
            pattern: ^0x[a-fA-F0-9]{40}$
            title: EthAddress
            type: string
        - description: Network to mint on.
          in: query
          name: network
          required: true
          schema:
            enum:
              - base
              - optimism
              - base-sepolia
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimulateNftMintResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZodError'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Simulate NFT mint calldata
      tags:
        - Onchain
    post:
      description: Mints an NFT to one or more recipients on a specified network and contract, using a configured server wallet. Contact us to set up your wallet configuration if you don't have one.
      externalDocs:
        url: https://docs.neynar.com/reference/mint-nft
      operationId: mint-nft
      parameters:
        - $ref: '#/components/parameters/WalletIdHeader'
      requestBody:
        content:
          application/json:
            schema:
              description: Request body for NFT minting operation.
              properties:
                async:
                  description: If true, returns immediately after sending the transaction.
                  example: false
                  type: boolean
                contract_address:
                  description: Ethereum address
                  example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
                  pattern: ^0x[a-fA-F0-9]{40}$
                  title: EthAddress
                  type: string
                network:
                  description: Network to mint on.
                  enum:
                    - base
                    - optimism
                    - base-sepolia
                  example: base
                  type: string
                recipients:
                  description: List of recipients to mint to (1-200 recipients allowed).
                  items:
                    anyOf:
                      - properties:
                          address:
                            description: Ethereum address
                            example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
                            pattern: ^0x[a-fA-F0-9]{40}$
                            title: EthAddress
                            type: string
                          fid:
                            not: {}
                          quantity:
                            default: 1
                            description: Quantity to mint (must be at least 1). Defaults to 1.
                            example: 1
                            minimum: 1
                            type: integer
                        required:
                          - address
                        type: object
                      - properties:
                          address:
                            not: {}
                          fid:
                            description: The unique identifier of a farcaster user or app (unsigned integer)
                            example: 3
                            format: int32
                            minimum: 0
                            title: Fid
                            type: integer
                          quantity:
                            default: 1
                            description: Quantity to mint (must be at least 1). Defaults to 1.
                            example: 1
                            minimum: 1
                            type: integer
                        required:
                          - fid
                        type: object
                    description: NFT mint recipient. Exactly one of "address" or "fid" must be set.
                  maxItems: 200
                  minItems: 1
                  type: array
              required:
                - network
                - contract_address
                - recipients
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                description: Response for NFT minting operation.
                properties:
                  transactions:
                    description: Array of per-recipient mint results (success or error).
                    items:
                      oneOf:
                        - description: Successful mint transaction.
                          properties:
                            receipt:
                              description: Transaction receipt (if async is false).
                              nullable: true
                              properties:
                                block_number:
                                  type: string
                                gas_used:
                                  type: string
                                status:
                                  type: string
                              required:
                                - status
                                - gas_used
                                - block_number
                              type: object
                            recipient:
                              description: Resolved mint recipient.
                              properties:
                                address:
                                  $ref: '#/components/schemas/EthAddress'
                                fid:
                                  $ref: '#/components/schemas/Fid'
                                quantity:
                                  minimum: 1
                                  type: integer
                                tokens:
                                  description: Minted token IDs parsed from Transfer events (sync mode only).
                                  items:
                                    properties:
                                      token_id:
                                        type: string
                                    required:
                                      - token_id
                                    type: object
                                  type: array
                              required:
                                - address
                                - quantity
                              type: object
                            transaction_hash:
                              $ref: '#/components/schemas/PrefixedHexString'
                          required:
                            - recipient
                            - transaction_hash
                          type: object
                        - description: Failed mint for a single recipient.
                          properties:
                            error:
                              description: Error message for this recipient.
                              example: No supported mint project detected
                              type: string
                            recipient:
                              description: Mint recipient that failed.
                              properties:
                                address:
                                  $ref: '#/components/schemas/EthAddress'
                                fid:
                                  $ref: '#/components/schemas/Fid'
                                quantity:
                                  minimum: 1
                                  type: integer
                              required:
                                - quantity
                              type: object
                          required:
                            - recipient
                            - error
                          type: object
                    type: array
                required:
                  - transactions
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZodError'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unauthorized
        '402':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Payment Required
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Mint NFT(s)
      tags:
        - Onchain
  /v2/farcaster/notifications/:
    get:
      description: Returns a list of notifications for a specific FID.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-all-notifications
      operationId: fetch-all-notifications
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: FID of the user you you want to fetch notifications for. The response will respect this user's mutes and blocks.
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Notification type to fetch. Comma separated values of follows, recasts, likes, mentions, replies.
          in: query
          name: type
          schema:
            items:
              enum:
                - follows
                - recasts
                - likes
                - mentions
                - replies
                - quotes
              type: string
            type: array
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 15
            example: 15
            format: int32
            maximum: 25
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: For user
      tags:
        - Notifications
  /v2/farcaster/notifications/channel/:
    get:
      description: Returns a list of notifications for a user in specific channels
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-channel-notifications-for-user
      operationId: fetch-channel-notifications-for-user
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: FID of the user you you want to fetch notifications for. The response will respect this user's mutes and blocks.
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Comma separated channel_ids (find list of all channels here - https://docs.neynar.com/reference/list-all-channels)
          in: query
          name: channel_ids
          required: true
          schema:
            example: neynar,farcaster
            type: string
            x-comma-separated: true
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 15
            example: 15
            format: int32
            maximum: 25
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: For user by channel
      tags:
        - Notifications
  /v2/farcaster/notifications/parent_url/:
    get:
      description: Returns a list of notifications for a user in specific parent_urls
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-notifications-by-parent-url-for-user
      operationId: fetch-notifications-by-parent-url-for-user
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: FID of the user you you want to fetch notifications for. The response will respect this user's mutes and blocks.
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Comma separated parent_urls
          in: query
          name: parent_urls
          required: true
          schema:
            example: chain://eip155:1/erc721:0xd4498134211baad5846ce70ce04e7c4da78931cc
            type: string
            x-comma-separated: true
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 15
            example: 15
            format: int32
            maximum: 25
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: For user by parent_urls
      tags:
        - Notifications
  /v2/farcaster/notifications/seen/:
    post:
      description: |-
        Mark notifications as seen.
        You can choose one of two authorization methods, either:
          1. Provide a valid signer_uuid in the request body (Most common)
          2. Provide a valid, signed "Bearer" token in the request's `Authorization` header similar to the
             approach described [here](https://docs.farcaster.xyz/reference/warpcast/api#authentication)
      externalDocs:
        url: https://docs.neynar.com/reference/mark-notifications-as-seen
      operationId: mark-notifications-as-seen
      parameters:
        - $ref: '#/components/parameters/AuthorizationHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkNotificationsAsSeenReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Mark as seen
      tags:
        - Notifications
  /v2/farcaster/reaction/:
    delete:
      description: "Delete a reaction (like or recast) to a cast \n(In order to delete a reaction `signer_uuid` must be approved)"
      externalDocs:
        url: https://docs.neynar.com/reference/delete-reaction
      operationId: delete-reaction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReactionReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Delete reaction
      tags:
        - Reaction
    post:
      description: "Post a reaction (like or recast) to a given cast \n(In order to post a reaction `signer_uuid` must be approved)"
      externalDocs:
        url: https://docs.neynar.com/reference/publish-reaction
      operationId: publish-reaction
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReactionReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Post a reaction
      tags:
        - Reaction
  /v2/farcaster/reactions/cast/:
    get:
      description: Fetches reactions for a given cast
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-cast-reactions
      operationId: fetch-cast-reactions
      parameters:
        - in: query
          name: hash
          required: true
          schema:
            example: '0x71d5225f77e0164388b1d4c120825f3a2c1f131c'
            pattern: ^(0x)?[a-fA-F0-9]{40}$
            type: string
        - description: "Customize which reaction types the request should search for. This is a comma-separated string that can include the following values: 'likes' and 'recasts'. By default api returns both. To select multiple types, use a comma-separated list of these values."
          in: query
          name: types
          required: true
          schema:
            items:
              enum:
                - all
                - likes
                - recasts
              title: ReactionsType
              type: string
            type: array
        - description: Providing this will return a list of reactions that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            example: 30
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReactionsCastResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Reactions for cast
      tags:
        - Reaction
  /v2/farcaster/reactions/user/:
    get:
      description: Fetches reactions for a given user
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-user-reactions
      operationId: fetch-user-reactions
      parameters:
        - description: The unique identifier of a farcaster user or app (unsigned integer)
          in: query
          name: fid
          required: true
          schema:
            example: 3
            format: int32
            minimum: 0
            title: Fid
            type: integer
        - description: Providing this will return a list of reactions that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Type of reaction to fetch (likes or recasts or all)
          in: query
          name: type
          required: true
          schema:
            enum:
              - all
              - likes
              - recasts
            type: string
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            example: 30
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReactionsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Reactions for user
      tags:
        - Reaction
  /v2/farcaster/signer/:
    get:
      description: Gets information status of a signer by passing in a signer_uuid (Use post API to generate a signer)
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-signer
      operationId: lookup-signer
      parameters:
        - description: |-
            UUID of the signer.
            `signer_uuid` is paired with API key, can't use a `uuid` made with a different API key.
          in: query
          name: signer_uuid
          required: true
          schema:
            example: 19d0c5fd-9b33-4a48-a0e2-bc7b0555baec
            title: SignerUUID
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Signer'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Status
      tags:
        - Signer
    post:
      description: "Creates a signer and returns the signer status. \n\n**Note**: While tesing please reuse the signer, it costs money to approve a signer."
      externalDocs:
        url: https://docs.neynar.com/reference/create-signer
      operationId: create-signer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Signer'
          description: Success
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Create signer
      tags:
        - Signer
  /v2/farcaster/signer/developer_managed/:
    get:
      description: Fetches the status of a developer managed signer by public key
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-developer-managed-signer
      operationId: lookup-developer-managed-signer
      parameters:
        - description: Ed25519 public key
          in: query
          name: public_key
          required: true
          schema:
            example: '0x3daa8f99c5f760688a3c9f95716ed93dee5ed5d7722d776b7c4deac957755f22'
            pattern: ^0x[a-fA-F0-9]{64}$
            title: Ed25519PublicKey
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperManagedSigner'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Status by public key
      tags:
        - Signer
  /v2/farcaster/signer/developer_managed/signed_key/:
    post:
      description: Registers an signed key and returns the developer managed signer status with an approval url.
      externalDocs:
        url: https://docs.neynar.com/reference/register-signed-key-for-developer-managed-signer
      operationId: register-signed-key-for-developer-managed-signer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterDeveloperManagedSignedKeyReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeveloperManagedSigner'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Register Signed Key
      tags:
        - Signer
  /v2/farcaster/signer/list/:
    get:
      description: Fetches a list of signers for a custody address
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-signers
      operationId: fetch-signers
      parameters:
        - description: A Sign-In with Ethereum (SIWE) message that the user's Ethereum wallet signs. This message includes details such as the domain, address, statement, URI, nonce, and other relevant information following the EIP-4361 standard. It should be structured and URL-encoded.
          in: query
          name: message
          required: true
          schema:
            example: example.com%20wants%20you%20to%20sign%20in%20with%20your%20Ethereum%20account%3A%5Cn0x23A...F232%5Cn%5CnSign%20in%20to%20continue.%5Cn%5CnURI%3A%20example.com%5CnVersion%3A%201%5CnChain%20ID%3A%201%5CnNonce%3A%20xyz123%5CnIssued%20At%3A%202021-09-01T14%3A52%3A07Z
            type: string
        - description: The digital signature produced by signing the provided SIWE message with the user's Ethereum private key. This signature is used to verify the authenticity of the message and the identity of the signer.
          in: query
          name: signature
          required: true
          schema:
            example: 0x25f8...1cf
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignerListResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unauthorized
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: List signers
      tags:
        - Signer
  /v2/farcaster/signer/signed_key/:
    post:
      description: Registers an app FID, deadline and a signature. Returns the signer status with an approval url.
      externalDocs:
        url: https://docs.neynar.com/reference/register-signed-key
      operationId: register-signed-key
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterSignerKeyReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Signer'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Register Signed Key
      tags:
        - Signer
  /v2/farcaster/storage/allocations/:
    get:
      description: Fetches storage allocations for a given user
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-user-storage-allocations
      operationId: lookup-user-storage-allocations
      parameters:
        - description: The unique identifier of a farcaster user or app (unsigned integer)
          in: query
          name: fid
          required: true
          schema:
            example: 3
            format: int32
            minimum: 0
            title: Fid
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageAllocationsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Allocation of user
      tags:
        - Storage
  /v2/farcaster/storage/buy/:
    post:
      description: |-
        This api will help you rent units of storage for an year for a specific FID.
        A storage unit lets you store 5000 casts, 2500 reactions and 2500 links. Requires x-wallet-id header.
      externalDocs:
        url: https://docs.neynar.com/reference/buy-storage
      operationId: buy-storage
      parameters:
        - $ref: '#/components/parameters/WalletIdHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BuyStorageReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageAllocationsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZodError'
          description: Bad Request
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictErrorRes'
          description: Conflict
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Buy storage
      tags:
        - Storage
  /v2/farcaster/storage/usage/:
    get:
      description: Fetches storage usage for a given user
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-user-storage-usage
      operationId: lookup-user-storage-usage
      parameters:
        - description: The unique identifier of a farcaster user or app (unsigned integer)
          in: query
          name: fid
          required: true
          schema:
            example: 3
            format: int32
            minimum: 0
            title: Fid
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageUsageResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Usage of user
      tags:
        - Storage
  /v2/farcaster/topic/trending/:
    get:
      description: Returns a list of trending topics for casts.
      externalDocs:
        url: https://docs.neynar.com/reference/list-trending-topics
      operationId: list-trending-topics
      parameters:
        - description: Number of topics to fetch.
          in: query
          name: limit
          schema:
            default: 10
            example: 10
            format: int32
            maximum: 25
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrendingTopicsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Fetch trending topics
      tags:
        - Topic
  /v2/farcaster/user/:
    patch:
      description: "Update user profile \n(In order to update user's profile `signer_uuid` must be approved)"
      externalDocs:
        url: https://docs.neynar.com/reference/update-user
      operationId: update-user
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
        '207':
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      properties:
                        message:
                          type: string
                      required:
                        - message
                      type: object
                    type: array
                  success:
                    type: boolean
                required:
                  - success
                  - errors
                type: object
          description: '207'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Update user profile
      tags:
        - User
    post:
      description: "Register account on farcaster. Optionally provide x-wallet-id header to use your own wallet. \n\n**Note:** This API must be called within 10 minutes of the fetch FID API call (i.e., /v2/farcaster/user/fid). Otherwise, Neynar will assign this FID to another available user."
      externalDocs:
        url: https://docs.neynar.com/reference/register-account
      operationId: register-account
      parameters:
        - $ref: '#/components/parameters/WalletIdHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterUserReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterUserResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictErrorRes'
          description: Conflict
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Register new account
      tags:
        - User
  /v2/farcaster/user/balance/:
    get:
      description: Fetches the token balances of a user given their FID
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-user-balance
      operationId: fetch-user-balance
      parameters:
        - description: FID of the user to fetch
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Comma separated list of networks to fetch balances for
          in: query
          name: networks
          required: true
          schema:
            items:
              description: A blockchain network supported for user balance queries e.g. "ethereum", "optimism", "base", "arbitrum"
              enum:
                - ethereum
                - optimism
                - base
                - arbitrum
              title: UserBalanceSupportedNetwork
              type: string
            type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Token balance
      tags:
        - Onchain
  /v2/farcaster/user/best_friends/:
    get:
      description: Returns the best friends of a user ranked by mutual affinity score based on interactions with each other.
      externalDocs:
        url: https://docs.neynar.com/reference/get-user-best-friends
      operationId: get-user-best-friends
      parameters:
        - description: The FID of the user
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 3
            example: 5
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BestFriendsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZodError'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Best friends
      tags:
        - User
  /v2/farcaster/user/bulk-by-address/:
    get:
      description: |-
        Fetches all users based on multiple Ethereum or Solana addresses.

        Each farcaster user has a custody Ethereum address and optionally verified Ethereum or Solana addresses. This endpoint returns all users that have any of the given addresses as their custody or verified Ethereum or Solana addresses.

        A custody address can be associated with only 1 farcaster user at a time but a verified address can be associated with multiple users.
        You can pass in Ethereum and Solana addresses, comma separated, in the same request. The response will contain users associated with the given addresses.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-bulk-users-by-eth-or-sol-address
      operationId: fetch-bulk-users-by-eth-or-sol-address
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Comma separated list of Ethereum or Solana addresses, up to 350 at a time
          in: query
          name: addresses
          required: true
          schema:
            example: 0xa6a8736f18f383f1cc2d938576933e5ea7df01a1,0x7cac817861e5c3384753403fb6c0c556c204b1ce
            type: string
            x-comma-separated: true
        - description: "Customize which address types the request should search for. This is a comma-separated string that can include the following values: 'custody_address' and 'verified_address'. By default api returns both. To select multiple types, use a comma-separated list of these values."
          in: query
          name: address_types
          schema:
            items:
              enum:
                - custody_address
                - verified_address
              title: BulkUserAddressType
              type: string
            type: array
        - in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUsersByAddressResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
      summary: By Eth or Sol addresses
      tags:
        - User
  /v2/farcaster/user/bulk/:
    get:
      description: Fetches information about multiple users based on FIDs
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-bulk-users
      operationId: fetch-bulk-users
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Comma separated list of FIDs, up to 100 at a time
          in: query
          name: fids
          required: true
          schema:
            example: 194, 191, 6131
            type: string
            x-accept-as: integer
            x-comma-separated: true
        - in: query
          name: viewer_fid
          schema:
            example: 3
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUsersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: By FIDs
      tags:
        - User
  /v2/farcaster/user/by_location/:
    get:
      description: Fetches a list of users given a location
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-users-by-location
      operationId: fetch-users-by-location
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Latitude of the location
          in: query
          name: latitude
          required: true
          schema:
            example: 37.77
            type: number
        - description: Longitude of the location
          in: query
          name: longitude
          required: true
          schema:
            example: -122.41
            type: number
        - description: FID of the user viewing the feed. Providing this will return a list of users that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            example: 3
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            example: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: By location
      tags:
        - User
  /v2/farcaster/user/by_username/:
    get:
      description: Fetches a single hydrated user object given a username
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-user-by-username
      operationId: lookup-user-by-username
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: Username of the user to fetch
          in: query
          name: username
          required: true
          schema:
            example: neynar
            type: string
        - in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: By username
      tags:
        - User
  /v2/farcaster/user/by_x_username/:
    get:
      description: Fetches the users who have verified the specified X (Twitter) username
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-users-by-x-username
      operationId: lookup-users-by-x-username
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - description: X (Twitter) username to search for, without the @ symbol
          in: query
          name: x_username
          required: true
          schema:
            type: string
        - description: FID of the viewer for contextual information like follows and blocks
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUsersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: By X username
      tags:
        - User
  /v2/farcaster/user/channels/:
    get:
      description: Returns a list of all channels with their details that a FID follows.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-user-channels
      operationId: fetch-user-channels
      parameters:
        - description: The FID of the user.
          in: query
          name: fid
          required: true
          schema:
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelListResponse'
          description: Success
      summary: Following
      tags:
        - Channel
  /v2/farcaster/user/custody-address/:
    get:
      description: Lookup a user by custody-address
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-user-by-custody-address
      operationId: lookup-user-by-custody-address
      parameters:
        - description: Custody Address associated with mnemonic
          in: query
          name: custody_address
          required: true
          schema:
            example: '0xd1b702203b1b3b641a699997746bd4a12d157909'
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
      summary: By custody-address
      tags:
        - User
  /v2/farcaster/user/fid/:
    get:
      description: Fetches FID to [assign it to new user](https://docs.neynar.com/reference/register-account).
      externalDocs:
        url: https://docs.neynar.com/reference/get-fresh-account-fid
      operationId: get-fresh-account-FID
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - $ref: '#/components/parameters/WalletIdHeader'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserFIDResponse'
          description: Success
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Fetch fresh FID
      tags:
        - User
  /v2/farcaster/user/follow/:
    delete:
      description: "Unfollow a user \n(In order to unfollow a user `signer_uuid` must be approved)"
      externalDocs:
        url: https://docs.neynar.com/reference/unfollow-user
      operationId: unfollow-user
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FollowReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkFollowResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Unfollow user
      tags:
        - User
    post:
      description: "Follow a user \n(In order to follow a user `signer_uuid` must be approved)"
      externalDocs:
        url: https://docs.neynar.com/reference/follow-user
      operationId: follow-user
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FollowReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkFollowResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Follow user
      tags:
        - User
  /v2/farcaster/user/interactions/:
    get:
      description: Returns a list of interactions between two users
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-user-interactions
      operationId: fetch-user-interactions
      parameters:
        - description: Comma separated list of two FIDs
          in: query
          name: fids
          required: true
          schema:
            example: 194, 191
            type: string
            x-accept-as: integer
            x-comma-separated: true
        - description: Comma seperated list of Interaction type to fetch
          in: query
          name: type
          schema:
            items:
              enum:
                - follows
                - recasts
                - likes
                - mentions
                - replies
                - quotes
              type: string
            type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  interactions:
                    items:
                      $ref: '#/components/schemas/Notification'
                    type: array
                required:
                  - interactions
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: User interactions
      tags:
        - Agents
  /v2/farcaster/user/memberships/list/:
    get:
      description: Returns a list of all channels with their details that an FID is a member of. Data may have a delay of up to 1 hour.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-user-channel-memberships
      operationId: fetch-user-channel-memberships
      parameters:
        - description: The FID of the user.
          in: query
          name: fid
          required: true
          schema:
            example: 3
            minimum: 1
            type: integer
        - description: Number of results to fetch
          in: query
          name: limit
          schema:
            default: 20
            example: 30
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelMemberListResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Member of
      tags:
        - Channel
  /v2/farcaster/user/register/:
    post:
      description: 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.
      externalDocs:
        url: https://docs.neynar.com/reference/register-account-onchain
      operationId: register-account-onchain
      parameters:
        - $ref: '#/components/parameters/WalletIdHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterUserOnChainReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterUserOnChainResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Register Farcaster account onchain
      tags:
        - Onchain
  /v2/farcaster/user/search/:
    get:
      description: Search for Usernames
      externalDocs:
        url: https://docs.neynar.com/reference/search-user
      operationId: search-user
      parameters:
        - $ref: '#/components/parameters/NeynarExperimentalHeader'
        - in: query
          name: q
          required: true
          schema:
            example: r
            type: string
        - description: Providing this will return search results that respects this user's mutes and blocks and includes `viewer_context`.
          in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: Number of users to fetch
          in: query
          name: limit
          schema:
            default: 5
            example: 10
            format: int32
            maximum: 10
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSearchResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Search for Usernames
      tags:
        - User
  /v2/farcaster/user/subscribed_to/:
    get:
      description: Fetch what FIDs and contracts a FID is subscribed to.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-subscribed-to-for-fid
      operationId: fetch-subscribed-to-for-fid
      parameters:
        - description: The unique identifier of a farcaster user or app (unsigned integer)
          in: query
          name: fid
          required: true
          schema:
            example: 3
            format: int32
            minimum: 0
            title: Fid
            type: integer
        - in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: The provider of the subscription.
          in: query
          name: subscription_provider
          required: true
          schema:
            enum:
              - fabric_stp
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscribedToResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Subscribed to
      tags:
        - Subscribers
  /v2/farcaster/user/subscribers/:
    get:
      description: Fetch subscribers for a given FID's contracts. Doesn't return addresses that don't have an FID.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-subscribers-for-fid
      operationId: fetch-subscribers-for-fid
      parameters:
        - description: The unique identifier of a farcaster user or app (unsigned integer)
          in: query
          name: fid
          required: true
          schema:
            example: 3
            format: int32
            minimum: 0
            title: Fid
            type: integer
        - in: query
          name: viewer_fid
          schema:
            minimum: 1
            type: integer
        - description: The provider of the subscription.
          in: query
          name: subscription_provider
          required: true
          schema:
            enum:
              - fabric_stp
              - paragraph
            example: fabric_stp
            title: SubscriptionProviders
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscribersResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Subscribers of a user
      tags:
        - Subscribers
  /v2/farcaster/user/subscriptions_created/:
    get:
      description: Fetch created subscriptions for a given FID's.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-subscriptions-for-fid
      operationId: fetch-subscriptions-for-fid
      parameters:
        - description: The unique identifier of a farcaster user or app (unsigned integer)
          in: query
          name: fid
          required: true
          schema:
            example: 3
            format: int32
            minimum: 0
            title: Fid
            type: integer
        - description: The provider of the subscription.
          in: query
          name: subscription_provider
          required: true
          schema:
            enum:
              - fabric_stp
            title: SubscriptionProvider
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionsResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Subscriptions created by FID
      tags:
        - Subscribers
  /v2/farcaster/user/verification/:
    delete:
      description: "Removes verification for an eth address for the user \n(In order to delete verification `signer_uuid` must be approved)"
      externalDocs:
        url: https://docs.neynar.com/reference/delete-verification
      operationId: delete-verification
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveVerificationReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
      summary: Delete verification
      tags:
        - User
    post:
      description: "Adds verification for an eth address or contract for the user \n(In order to add verification `signer_uuid` must be approved)"
      externalDocs:
        url: https://docs.neynar.com/reference/publish-verification
      operationId: publish-verification
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddVerificationReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResponse'
          description: Success
      summary: Add verification
      tags:
        - User
  /v2/farcaster/user/verifications/:
    get:
      description: Fetch all Ethereum and Solana verified addresses for a Farcaster user. Use this endpoint to identify which wallets are associated with which Farcaster applications for the specified user.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-verifications
      operationId: fetch-verifications
      parameters:
        - description: FID of the user whose verifications to fetch
          in: query
          name: fid
          required: true
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  verifications:
                    items:
                      $ref: '#/components/schemas/Verification'
                    type: array
                required:
                  - verifications
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Fetch verifications
      tags:
        - User
  /v2/farcaster/webhook/:
    delete:
      description: Delete a webhook
      externalDocs:
        url: https://docs.neynar.com/reference/delete-webhook
      operationId: delete-webhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookDeleteReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
          description: Success
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
      summary: Delete a webhook
      tags:
        - Webhook
    get:
      description: Fetch a webhook
      externalDocs:
        url: https://docs.neynar.com/reference/lookup-webhook
      operationId: lookup-webhook
      parameters:
        - in: query
          name: webhook_id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
          description: Success
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
      summary: Fetch a webhook
      tags:
        - Webhook
    patch:
      description: Update webhook active status
      externalDocs:
        url: https://docs.neynar.com/reference/update-webhook-active-status
      operationId: update-webhook-active-status
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookPatchReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Update webhook status
      tags:
        - Webhook
    post:
      description: Create a webhook
      externalDocs:
        url: https://docs.neynar.com/reference/publish-webhook
      operationId: publish-webhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookPostReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
      summary: Create a webhook
      tags:
        - Webhook
    put:
      description: Update a webhook
      externalDocs:
        url: https://docs.neynar.com/reference/update-webhook
      operationId: update-webhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookPutReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Update a webhook
      tags:
        - Webhook
  /v2/farcaster/webhook/list/:
    get:
      description: Fetch a list of webhooks associated to a user
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-webhooks
      operationId: fetch-webhooks
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookListResponse'
          description: Success
      summary: Associated webhooks of user
      tags:
        - Webhook
  /v2/fungible/:
    post:
      description: |-
        Creates a new token.
        This is an allowlisted API, reach out if you want access.
      externalDocs:
        url: https://docs.neynar.com/reference/deploy-fungible
      operationId: deploy-fungible
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/DeployFungibleReqBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeployFungibleResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Deploy fungible
      tags:
        - Onchain
  /v2/onchain/token/balances:
    get:
      description: Fetch all token balances for a wallet address across multiple networks. Results are paginated.
      externalDocs:
        url: https://docs.neynar.com/reference/get-wallet-balances
      operationId: get-wallet-balances
      parameters:
        - description: Comma-separated list of networks to query. Each value must be a valid network (ethereum, optimism, base, arbitrum, robinhood).
          in: query
          name: networks
          required: true
          schema:
            example: base
            type: string
            x-comma-separated: true
        - description: Wallet address
          in: query
          name: address
          required: true
          schema:
            example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
            pattern: ^0x[a-fA-F0-9]{40}$
            type: string
        - description: Number of results to return (max 100)
          in: query
          name: limit
          schema:
            default: 50
            example: 50
            format: int32
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  balances:
                    items:
                      properties:
                        address:
                          description: Token contract address
                          example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
                          pattern: ^0x[a-fA-F0-9]{40}$
                          type: string
                        balance:
                          description: Raw token balance
                          example: '1000000000'
                          type: string
                        balance_usd:
                          description: Balance value in USD
                          example: '1000.50'
                          nullable: true
                          type: string
                        decimals:
                          description: Token decimals
                          example: 6
                          type: integer
                        image_url:
                          description: Token logo URL
                          example: https://example.com/token.png
                          nullable: true
                          type: string
                        name:
                          description: Token name
                          example: USD Coin
                          type: string
                        network:
                          $ref: '#/components/schemas/Network'
                        price_usd:
                          description: Token price in USD
                          example: '1.00'
                          nullable: true
                          type: string
                        symbol:
                          description: Token symbol
                          example: USDC
                          type: string
                      required:
                        - network
                        - address
                        - name
                        - symbol
                        - decimals
                        - balance
                        - balance_usd
                        - price_usd
                        - image_url
                      type: object
                    type: array
                  next:
                    properties:
                      cursor:
                        description: Pagination cursor for next page, null if no more results
                        nullable: true
                        type: string
                    required:
                      - cursor
                    type: object
                required:
                  - balances
                  - next
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Get wallet token balances
      tags:
        - Onchain
  /v2/onchain/token/metadata:
    get:
      description: Fetch metadata for a specific token including price, market data, and basic information. Data is fetched from onchain-indexer with fallback to third-party providers.
      externalDocs:
        url: https://docs.neynar.com/reference/get-token-metadata
      operationId: get-token-metadata
      parameters:
        - description: A blockchain network e.g. "ethereum", "optimism", "base", "arbitrum", "robinhood"
          in: query
          name: network
          required: true
          schema:
            enum:
              - ethereum
              - optimism
              - base
              - arbitrum
              - robinhood
            title: Network
            type: string
        - description: Token contract address
          in: query
          name: address
          required: true
          schema:
            example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
            pattern: ^0x[a-fA-F0-9]{40}$
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  token:
                    properties:
                      address:
                        description: Token contract address
                        example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
                        pattern: ^0x[a-fA-F0-9]{40}$
                        type: string
                      decimals:
                        description: Token decimals
                        example: 6
                        type: integer
                      description:
                        description: Token description
                        example: USDC is a fully collateralized US dollar stablecoin
                        nullable: true
                        type: string
                      fdv:
                        description: Fully diluted valuation in USD
                        example: '25000000000'
                        nullable: true
                        type: string
                      holder_count:
                        description: Number of token holders
                        example: 1500000
                        nullable: true
                        type: integer
                      image_url:
                        description: Token logo URL
                        example: https://example.com/token.png
                        nullable: true
                        type: string
                      liquidity:
                        description: Total liquidity in USD
                        example: '500000000'
                        nullable: true
                        type: string
                      market_cap:
                        description: Market capitalization in USD
                        example: '25000000000'
                        nullable: true
                        type: string
                      name:
                        description: Token name
                        example: USD Coin
                        type: string
                      network:
                        $ref: '#/components/schemas/Network'
                      price_change_24h_pct:
                        description: 24-hour price change percentage
                        example: -1.2
                        nullable: true
                        type: number
                      price_change_6h_pct:
                        description: 6-hour price change percentage
                        example: 0.5
                        nullable: true
                        type: number
                      price_source:
                        description: Source of price data
                        enum:
                          - onchain
                          - coingecko
                        example: onchain
                        nullable: true
                        type: string
                      price_updated_at:
                        description: Timestamp when price data was last updated (milliseconds)
                        example: 1707177600000
                        nullable: true
                        type: integer
                      price_usd:
                        description: Token price in USD
                        example: '1.00'
                        nullable: true
                        type: string
                      symbol:
                        description: Token symbol
                        example: USDC
                        type: string
                      total_supply:
                        description: Total token supply
                        example: '1000000000000'
                        nullable: true
                        type: string
                      volume_24h:
                        description: 24-hour trading volume in USD
                        example: '150000000'
                        nullable: true
                        type: string
                      volume_6h:
                        description: 6-hour trading volume in USD
                        example: '50000000'
                        nullable: true
                        type: string
                    required:
                      - network
                      - address
                      - name
                      - symbol
                      - decimals
                      - total_supply
                      - image_url
                      - price_usd
                      - market_cap
                      - fdv
                      - liquidity
                      - volume_6h
                      - volume_24h
                      - price_change_6h_pct
                      - price_change_24h_pct
                      - holder_count
                      - description
                      - price_updated_at
                      - price_source
                    type: object
                required:
                  - token
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Get token metadata
      tags:
        - Onchain
  /v2/onchain/token/metadata/batch:
    get:
      description: Fetch metadata for multiple tokens in a single request. Provide comma-separated networks and addresses in the same order. Maximum 100 tokens per request.
      externalDocs:
        url: https://docs.neynar.com/reference/batch-get-token-metadata
      operationId: batch-get-token-metadata
      parameters:
        - description: Comma-separated list of blockchain networks. Each value must be a valid network (ethereum, optimism, base, arbitrum, robinhood).
          in: query
          name: networks
          required: true
          schema:
            example: base
            type: string
            x-comma-separated: true
        - description: Comma-separated list of token contract addresses corresponding to each network
          in: query
          name: addresses
          required: true
          schema:
            example: 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
            type: string
            x-comma-separated: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  tokens:
                    items:
                      nullable: true
                      properties:
                        address:
                          description: Token contract address
                          example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
                          pattern: ^0x[a-fA-F0-9]{40}$
                          type: string
                        decimals:
                          description: Token decimals
                          example: 6
                          type: integer
                        description:
                          description: Token description
                          example: USDC is a fully collateralized US dollar stablecoin
                          nullable: true
                          type: string
                        fdv:
                          description: Fully diluted valuation in USD
                          example: '25000000000'
                          nullable: true
                          type: string
                        holder_count:
                          description: Number of token holders
                          example: 1500000
                          nullable: true
                          type: integer
                        image_url:
                          description: Token logo URL
                          example: https://example.com/token.png
                          nullable: true
                          type: string
                        liquidity:
                          description: Total liquidity in USD
                          example: '500000000'
                          nullable: true
                          type: string
                        market_cap:
                          description: Market capitalization in USD
                          example: '25000000000'
                          nullable: true
                          type: string
                        name:
                          description: Token name
                          example: USD Coin
                          type: string
                        network:
                          $ref: '#/components/schemas/Network'
                        price_change_24h_pct:
                          description: 24-hour price change percentage
                          example: -1.2
                          nullable: true
                          type: number
                        price_change_6h_pct:
                          description: 6-hour price change percentage
                          example: 0.5
                          nullable: true
                          type: number
                        price_source:
                          description: Source of price data
                          enum:
                            - onchain
                            - coingecko
                          example: onchain
                          nullable: true
                          type: string
                        price_updated_at:
                          description: Timestamp when price data was last updated (milliseconds)
                          example: 1707177600000
                          nullable: true
                          type: integer
                        price_usd:
                          description: Token price in USD
                          example: '1.00'
                          nullable: true
                          type: string
                        symbol:
                          description: Token symbol
                          example: USDC
                          type: string
                        total_supply:
                          description: Total token supply
                          example: '1000000000000'
                          nullable: true
                          type: string
                        volume_24h:
                          description: 24-hour trading volume in USD
                          example: '150000000'
                          nullable: true
                          type: string
                        volume_6h:
                          description: 6-hour trading volume in USD
                          example: '50000000'
                          nullable: true
                          type: string
                      required:
                        - network
                        - address
                        - name
                        - symbol
                        - decimals
                        - total_supply
                        - image_url
                        - price_usd
                        - market_cap
                        - fdv
                        - liquidity
                        - volume_6h
                        - volume_24h
                        - price_change_6h_pct
                        - price_change_24h_pct
                        - holder_count
                        - description
                        - price_updated_at
                        - price_source
                      type: object
                    type: array
                required:
                  - tokens
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Batch get token metadata
      tags:
        - Onchain
  /v2/signature/x402/:
    post:
      description: Create a signature for a given x402 resource using the specified wallet.
      externalDocs:
        url: https://docs.neynar.com/reference/create-x402-signature
      operationId: create-x402-signature
      parameters:
        - $ref: '#/components/parameters/WalletIdHeader'
        - in: header
          name: x-api-key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                payment_requirements:
                  properties:
                    accepts:
                      items:
                        properties:
                          asset:
                            description: Ethereum address
                            example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
                            pattern: ^0x[a-fA-F0-9]{40}$
                            title: EthAddress
                            type: string
                          description:
                            type: string
                          extra:
                            additionalProperties: {}
                            nullable: true
                            type: object
                          maxAmountRequired:
                            type: string
                          maxTimeoutSeconds:
                            type: number
                          mimeType:
                            type: string
                          network:
                            enum:
                              - base
                              - base-sepolia
                            type: string
                          outputSchema:
                            additionalProperties: {}
                            nullable: true
                            type: object
                          payTo:
                            description: Ethereum address
                            example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
                            pattern: ^0x[a-fA-F0-9]{40}$
                            title: EthAddress
                            type: string
                          resource:
                            format: uri
                            type: string
                          scheme:
                            enum:
                              - exact
                            type: string
                        required:
                          - scheme
                          - network
                          - maxAmountRequired
                          - asset
                          - payTo
                          - resource
                          - description
                          - maxTimeoutSeconds
                        type: object
                      minItems: 1
                      type: array
                    x402Version:
                      anyOf:
                        - enum:
                            - 1
                          type: number
                        - enum:
                            - 2
                          type: number
                  required:
                    - x402Version
                    - accepts
                  type: object
              required:
                - payment_requirements
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  network:
                    enum:
                      - base
                      - base-sepolia
                    type: string
                  payload:
                    properties:
                      authorization:
                        properties:
                          from:
                            $ref: '#/components/schemas/EthAddress'
                          nonce:
                            pattern: ^0x[a-fA-F0-9]{64}$
                            type: string
                          to:
                            $ref: '#/components/schemas/EthAddress'
                          validAfter:
                            type: string
                          validBefore:
                            type: string
                          value:
                            type: string
                        required:
                          - from
                          - to
                          - value
                          - validAfter
                          - validBefore
                          - nonce
                        type: object
                      signature:
                        pattern: ^0x[a-fA-F0-9]{130}$
                        type: string
                    required:
                      - signature
                      - authorization
                    type: object
                  scheme:
                    enum:
                      - exact
                    type: string
                  x402Version:
                    anyOf:
                      - enum:
                          - 1
                        type: number
                      - enum:
                          - 2
                        type: number
                required:
                  - x402Version
                  - scheme
                  - network
                  - payload
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Create x402 signature
      tags:
        - Onchain
  /v2/signature/x402/siwx:
    post:
      description: Create a Sign-In-With-X payload for a wallet-backed x402 resource.
      externalDocs:
        url: https://docs.neynar.com/reference/create-x402-siwx
      operationId: create-x402-siwx
      parameters:
        - $ref: '#/components/parameters/WalletIdHeader'
        - in: header
          name: x-api-key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                chainId:
                  anyOf:
                    - enum:
                        - 8453
                      type: number
                    - enum:
                        - 84532
                      type: number
                  default: 8453
                resource:
                  format: uri
                  type: string
              required:
                - resource
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  address:
                    $ref: '#/components/schemas/EthAddress'
                  chainId:
                    anyOf:
                      - enum:
                          - 8453
                        type: number
                      - enum:
                          - 84532
                        type: number
                  message:
                    type: string
                  signature:
                    pattern: ^0x[a-fA-F0-9]{130}$
                    type: string
                  timestamp:
                    type: number
                required:
                  - address
                  - message
                  - signature
                  - timestamp
                  - chainId
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Forbidden
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      summary: Create x402 Sign-In-With-X payload
      tags:
        - Onchain
  /v2/stp/subscription_check/:
    get:
      description: Check if a wallet address is subscribed to a given STP (Hypersub) contract.
      externalDocs:
        url: https://docs.neynar.com/reference/fetch-subscription-check
      operationId: fetch-subscription-check
      parameters:
        - description: Comma separated list of Ethereum addresses, up to 350 at a time
          in: query
          name: addresses
          required: true
          schema:
            example: 0xedd3783e8c7c52b80cfbd026a63c207edc9cbee7,0x5a927ac639636e534b678e81768ca19e2c6280b7
            type: string
            x-comma-separated: true
        - description: Ethereum address of the STP contract
          in: query
          name: contract_address
          required: true
          schema:
            example: '0x76ad4cb9ac51c09f4d9c2cadcea75c9fa9074e5b'
            type: string
        - description: Chain ID of the STP contract
          in: query
          name: chain_id
          required: true
          schema:
            example: '8453'
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionCheckResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
      summary: Hypersub subscription check
      tags:
        - Subscribers
  /v2/studio/credit-drops/:
    get:
      description: Returns the most recent credit drop for the authenticated user. Returns the drop regardless of claimed/expired status.
      externalDocs:
        url: https://docs.neynar.com/reference/get-credit-drop
      operationId: get-credit-drop
      parameters:
        - description: Farcaster ID of the user
          in: query
          name: fid
          required: true
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  allowance_expires_at:
                    description: 'Timestamp at which the drop stops contributing to the effective CU limit. Stamped by the credit-drop job at insert time (default: created_at + 24h).'
                    format: date-time
                    type: string
                  claimed:
                    description: Whether the credit drop has been claimed
                    type: boolean
                  created_at:
                    description: When the credit drop was generated
                    format: date-time
                    type: string
                  credits_remaining:
                    description: reward_amount - credits_used, clamped at 0. Spendable only until allowance_expires_at.
                    nullable: true
                    type: number
                  credits_used:
                    description: Portion of this drop already consumed against STUDIO CU usage (incremented by the CU sync). Forfeited at allowance_expires_at if unused.
                    type: number
                  expired:
                    description: Whether the credit drop's allowance window has closed (NOW() >= allowance_expires_at). Once true, the drop no longer contributes to the effective CU limit; any unused portion is forfeited.
                    type: boolean
                  percentile_score:
                    description: Percentile rank within 7-day global distribution
                    maximum: 1
                    minimum: 0
                    nullable: true
                    type: number
                  raw_score:
                    description: Raw quality score from 0 to 1
                    maximum: 1
                    minimum: 0
                    nullable: true
                    type: number
                  reward_amount:
                    description: Credit reward amount
                    nullable: true
                    type: number
                required:
                  - created_at
                  - raw_score
                  - percentile_score
                  - reward_amount
                  - claimed
                  - credits_used
                  - credits_remaining
                  - allowance_expires_at
                  - expired
                type: object
          description: Success
        '402':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - message
                  - code
                type: object
          description: Payment Required
        '404':
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                required:
                  - message
                type: object
          description: Resource not found
      security:
        - ApiKeyAuth: []
      summary: Get most recent credit drop
      tags:
        - studio
  /v2/studio/credit-drops/claim:
    post:
      description: Claims the most recent credit drop for the authenticated user. The drop's allowance is surfaced dynamically until expires_at and does not mutate extra_credits. Only drops created within the past 24 hours can be claimed.
      externalDocs:
        url: https://docs.neynar.com/reference/claim-credit-drop
      operationId: claim-credit-drop
      requestBody:
        content:
          application/json:
            schema:
              properties:
                fid:
                  description: Farcaster ID of the user
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
              required:
                - fid
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  claimed:
                    enum:
                      - true
                    type: boolean
                  new_extra_credits:
                    description: New total extra credits balance
                    type: number
                  reward_amount:
                    description: Amount of credits added
                    type: number
                required:
                  - claimed
                  - reward_amount
                  - new_extra_credits
                type: object
          description: Success
        '402':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - message
                  - code
                type: object
          description: Payment Required
        '404':
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                required:
                  - message
                type: object
          description: Resource not found
        '409':
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                required:
                  - message
                type: object
          description: Conflict
        '410':
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                required:
                  - message
                type: object
          description: Gone
      security:
        - ApiKeyAuth: []
      summary: Claim credit drop
      tags:
        - studio
  /v2/studio/deployment/:
    delete:
      description: 'Deletes a specific miniapp generator deployment or all deployments for a FID. If deployment_id or name is provided, deletes single deployment. If only FID is provided, deletes all deployments for that FID. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/delete-deployment
      operationId: delete-deployment
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID (UUID). If provided, deletes this specific deployment.
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                name:
                  description: Kubernetes deployment name. If not provided and deployment_id not provided, all deployments for the FID will be deleted
                  type: string
                namespace:
                  description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
                  type: string
              required:
                - fid
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  deletedCount:
                    type: number
                  success:
                    type: boolean
                required:
                  - success
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Delete deployment(s)
      tags:
        - studio
    get:
      description: 'Lists all miniapp generator deployments for a user. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/list-deployments
      operationId: list-deployments
      parameters:
        - description: Farcaster ID of the user. Required for non-admin users. Studio admins can omit to query all deployments.
          in: query
          name: fid
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
        - description: Maximum number of deployments to return. Defaults to 50, max 1000.
          in: query
          name: limit
          schema:
            default: 50
            maximum: 1000
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Number of deployments to skip for pagination. Defaults to 0.
          in: query
          name: offset
          schema:
            default: 0
            minimum: 0
            type: integer
        - description: Search string to filter deployments by name, display name, or FID.
          in: query
          name: query
          schema:
            type: string
        - description: Field to sort deployments by. Defaults to updated_at (most recently updated first).
          in: query
          name: sort_by
          schema:
            default: updated_at
            enum:
              - created_at
              - updated_at
            type: string
        - description: Include deleted deployments in the response. Defaults to false.
          in: query
          name: include_deleted
          schema:
            default: false
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    created_at:
                      description: Creation timestamp
                      format: date-time
                      type: string
                    deleted_at:
                      description: Deletion timestamp
                      format: date-time
                      nullable: true
                      type: string
                    dev_server_state:
                      description: 'Dev server process state: stopped, starting, running, crashed, or hung'
                      enum:
                        - stopped
                        - starting
                        - running
                        - crashed
                        - hung
                      type: string
                    display_name:
                      description: Display name for the project
                      type: string
                    generated_app_exists:
                      description: Whether a generated app exists in the deployment
                      type: boolean
                    generated_app_serving:
                      description: Whether the generated app is currently serving
                      type: boolean
                    github_url:
                      description: GitHub repository SSH URL
                      type: string
                    has_database:
                      description: Whether the deployment has a Neon database configured
                      type: boolean
                    id:
                      description: Deployment ID
                      type: string
                    is_ready:
                      description: Deployment is ready to serve app and accept prompts
                      type: boolean
                    name:
                      description: Kubernetes deployment name
                      type: string
                    namespace:
                      description: Kubernetes namespace
                      type: string
                    production_app_status:
                      description: Production app deployment status from Vercel
                      properties:
                        created_at:
                          description: Deployment creation timestamp (Unix ms)
                          type: number
                        deployment_state:
                          description: Deployment state (e.g., READY, BUILDING, ERROR)
                          type: string
                        deployment_url:
                          description: Vercel deployment URL
                          type: string
                        project_id:
                          description: Vercel project ID
                          type: string
                        target:
                          description: Deployment target (e.g., production, preview)
                          type: string
                      required:
                        - project_id
                        - deployment_url
                        - deployment_state
                        - created_at
                      type: object
                    updated_at:
                      description: Last update timestamp
                      format: date-time
                      nullable: true
                      type: string
                    url:
                      description: Public URL for the deployment
                      format: uri
                      type: string
                  required:
                    - id
                    - deleted_at
                    - updated_at
                    - created_at
                    - namespace
                    - name
                    - is_ready
                    - generated_app_exists
                    - generated_app_serving
                  type: object
                type: array
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: List deployments
      tags:
        - studio
    post:
      description: 'Creates and deploys an instance of the miniapp generator for a user. Requires authentication via API key in the request header. Note: app creation is disabled as Neynar Studio is being discontinued; this endpoint now returns 403. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/create-deployment
      operationId: create-deployment
      requestBody:
        content:
          application/json:
            schema:
              properties:
                display_name:
                  description: Display name for the deployment
                  type: string
                env:
                  additionalProperties:
                    type: string
                  description: Environment variables for the deployment
                  type: object
                fid:
                  description: Farcaster ID of the user
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
              required:
                - fid
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  created_at:
                    description: Creation timestamp
                    format: date-time
                    type: string
                  deleted_at:
                    description: Deletion timestamp
                    format: date-time
                    nullable: true
                    type: string
                  dev_server_state:
                    description: 'Dev server process state: stopped, starting, running, crashed, or hung'
                    enum:
                      - stopped
                      - starting
                      - running
                      - crashed
                      - hung
                    type: string
                  display_name:
                    description: Display name for the project
                    type: string
                  generated_app_exists:
                    description: Whether a generated app exists in the deployment
                    type: boolean
                  generated_app_serving:
                    description: Whether the generated app is currently serving
                    type: boolean
                  github_url:
                    description: GitHub repository SSH URL
                    type: string
                  has_database:
                    description: Whether the deployment has a Neon database configured
                    type: boolean
                  id:
                    description: Deployment ID
                    type: string
                  is_ready:
                    description: Deployment is ready to serve app and accept prompts
                    type: boolean
                  name:
                    description: Kubernetes deployment name
                    type: string
                  namespace:
                    description: Kubernetes namespace
                    type: string
                  production_app_status:
                    description: Production app deployment status from Vercel
                    properties:
                      created_at:
                        description: Deployment creation timestamp (Unix ms)
                        type: number
                      deployment_state:
                        description: Deployment state (e.g., READY, BUILDING, ERROR)
                        type: string
                      deployment_url:
                        description: Vercel deployment URL
                        type: string
                      project_id:
                        description: Vercel project ID
                        type: string
                      target:
                        description: Deployment target (e.g., production, preview)
                        type: string
                    required:
                      - project_id
                      - deployment_url
                      - deployment_state
                      - created_at
                    type: object
                  updated_at:
                    description: Last update timestamp
                    format: date-time
                    nullable: true
                    type: string
                  url:
                    description: Public URL for the deployment
                    format: uri
                    type: string
                required:
                  - id
                  - deleted_at
                  - updated_at
                  - created_at
                  - namespace
                  - name
                  - is_ready
                  - generated_app_exists
                  - generated_app_serving
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Create a miniapp generator deployment
      tags:
        - studio
  /v2/studio/deployment/account-association:
    get:
      description: Retrieves the account-association.json file from a miniapp deployment, which contains the JFS-signed domain association. Requires API key authentication.
      externalDocs:
        url: https://docs.neynar.com/reference/get-account-association
      operationId: get-account-association
      parameters:
        - description: Deployment ID
          in: query
          name: deployment_id
          schema:
            format: uuid
            type: string
        - description: Kubernetes namespace name
          in: query
          name: namespace
          schema:
            type: string
        - description: Kubernetes deployment name
          in: query
          name: name
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  header:
                    description: Base64URL encoded JFS header
                    type: string
                  payload:
                    description: Base64URL encoded JFS payload
                    type: string
                  signature:
                    description: Base64URL encoded JFS signature
                    type: string
                required:
                  - header
                  - payload
                  - signature
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Get account association of a miniapp
      tags:
        - studio
    post:
      description: 'Associates a generated miniapp with a Farcaster account using a JFS-signed domain association. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/associate-deployment
      operationId: associate-deployment
      requestBody:
        content:
          application/json:
            schema:
              properties:
                account_association:
                  description: Signed domain association linking this deployment to a Farcaster account
                  properties:
                    header:
                      description: Base64URL encoded JFS header
                      type: string
                    payload:
                      description: Base64URL encoded JFS payload
                      type: string
                    signature:
                      description: Base64URL encoded JFS signature
                      type: string
                  required:
                    - header
                    - payload
                    - signature
                  type: object
                deployment_id:
                  description: Deployment ID (UUID). Required if name not provided.
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user; if not provided, namespace must be provided
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                name:
                  description: Kubernetes deployment name. Required if deployment_id not provided.
                  type: string
                namespace:
                  description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
                  type: string
              required:
                - account_association
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Status message from the miniapp generator
                    type: string
                  success:
                    type: boolean
                required:
                  - success
                  - message
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Set account association
      tags:
        - studio
  /v2/studio/deployment/build:
    post:
      description: 'Runs Next.js build process for the generated app. If build fails, automatically calls a build-fixer agent to resolve errors. Streams build output and agent responses via Server-Sent Events. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/build
      operationId: build
      requestBody:
        content:
          application/json:
            schema:
              properties:
                build_type:
                  default: vercel
                  description: Build tool to use. "vercel" runs vercel build for production deployment. "npm" runs npm run build for dev server recovery.
                  enum:
                    - npm
                    - vercel
                  type: string
                deployment_id:
                  description: Deployment ID
                  format: uuid
                  type: string
                name:
                  description: Kubernetes deployment name
                  type: string
                namespace:
                  description: Kubernetes namespace
                  type: string
              type: object
        required: true
      responses:
        '200':
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '409':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Conflict
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Build generated app with automatic error fixing
      tags:
        - studio
  /v2/studio/deployment/by-name-and-fid:
    get:
      description: "Fetches info about a miniapp generator deployment by its deployment_id or name and creator's Farcaster ID. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call."
      externalDocs:
        url: https://docs.neynar.com/reference/get-deployment
      operationId: get-deployment
      parameters:
        - description: Deployment ID (UUID). Required if name not provided.
          in: query
          name: deployment_id
          schema:
            format: uuid
            type: string
        - description: Farcaster ID of the user; if not provided, namespace must be provided
          in: query
          name: fid
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
        - description: Kubernetes deployment name. Required if deployment_id not provided.
          in: query
          name: name
          schema:
            type: string
        - description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
          in: query
          name: namespace
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  created_at:
                    description: Creation timestamp
                    format: date-time
                    type: string
                  deleted_at:
                    description: Deletion timestamp
                    format: date-time
                    nullable: true
                    type: string
                  dev_server_state:
                    description: 'Dev server process state: stopped, starting, running, crashed, or hung'
                    enum:
                      - stopped
                      - starting
                      - running
                      - crashed
                      - hung
                    type: string
                  display_name:
                    description: Display name for the project
                    type: string
                  generated_app_exists:
                    description: Whether a generated app exists in the deployment
                    type: boolean
                  generated_app_serving:
                    description: Whether the generated app is currently serving
                    type: boolean
                  github_url:
                    description: GitHub repository SSH URL
                    type: string
                  has_database:
                    description: Whether the deployment has a Neon database configured
                    type: boolean
                  id:
                    description: Deployment ID
                    type: string
                  is_ready:
                    description: Deployment is ready to serve app and accept prompts
                    type: boolean
                  name:
                    description: Kubernetes deployment name
                    type: string
                  namespace:
                    description: Kubernetes namespace
                    type: string
                  production_app_status:
                    description: Production app deployment status from Vercel
                    properties:
                      created_at:
                        description: Deployment creation timestamp (Unix ms)
                        type: number
                      deployment_state:
                        description: Deployment state (e.g., READY, BUILDING, ERROR)
                        type: string
                      deployment_url:
                        description: Vercel deployment URL
                        type: string
                      project_id:
                        description: Vercel project ID
                        type: string
                      target:
                        description: Deployment target (e.g., production, preview)
                        type: string
                    required:
                      - project_id
                      - deployment_url
                      - deployment_state
                      - created_at
                    type: object
                  updated_at:
                    description: Last update timestamp
                    format: date-time
                    nullable: true
                    type: string
                  url:
                    description: Public URL for the deployment
                    format: uri
                    type: string
                required:
                  - id
                  - deleted_at
                  - updated_at
                  - created_at
                  - namespace
                  - name
                  - is_ready
                  - generated_app_exists
                  - generated_app_serving
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Get deployment info
      tags:
        - studio
  /v2/studio/deployment/conversations:
    get:
      description: 'Lists all conversations for a specific deployment. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/list-conversations
      operationId: list-conversations
      parameters:
        - description: Deployment ID (UUID). If provided, filters conversations to this deployment only.
          in: query
          name: deployment_id
          schema:
            format: uuid
            type: string
        - description: Farcaster ID of the user. Required for non-admin users. Studio admins can omit to query all conversations.
          in: query
          name: fid
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
        - description: Kubernetes deployment name. If provided, filters conversations to this deployment only.
          in: query
          name: name
          schema:
            type: string
        - description: Include deleted conversations in the response. Defaults to false.
          in: query
          name: include_deleted
          schema:
            default: false
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  conversations:
                    description: List of conversations
                    items:
                      properties:
                        admin:
                          description: Whether the conversation is an admin conversation
                          type: boolean
                        created_at:
                          description: Creation timestamp
                          format: date-time
                          type: string
                        deployment_id:
                          description: Deployment ID
                          format: uuid
                          type: string
                        id:
                          description: Conversation ID
                          format: uuid
                          type: string
                        last_message_preview:
                          description: Preview of the last user message (truncated to ~80 chars)
                          nullable: true
                          type: string
                        title:
                          description: AI-generated title summarizing the conversation topic
                          nullable: true
                          type: string
                        updated_at:
                          description: Last update timestamp
                          format: date-time
                          type: string
                      required:
                        - id
                        - created_at
                        - updated_at
                        - deployment_id
                        - admin
                        - title
                        - last_message_preview
                      type: object
                    type: array
                required:
                  - conversations
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: List conversations for a deployment
      tags:
        - studio
  /v2/studio/deployment/conversations/messages:
    get:
      description: 'Retrieves messages in a specific conversation with cursor-based pagination (newest first). Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/get-conversation-messages
      operationId: get-conversation-messages
      parameters:
        - description: Deployment ID (UUID). Required if name not provided.
          in: query
          name: deployment_id
          schema:
            format: uuid
            type: string
        - description: Farcaster ID of the user; if not provided, namespace must be provided
          in: query
          name: fid
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
        - description: Kubernetes deployment name. Required if deployment_id not provided.
          in: query
          name: name
          schema:
            type: string
        - description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
          in: query
          name: namespace
          schema:
            type: string
        - description: Conversation ID
          in: query
          name: conversation_id
          required: true
          schema:
            format: uuid
            type: string
        - description: Include deleted messages in the response. Defaults to false.
          in: query
          name: include_deleted
          schema:
            default: false
            type: boolean
        - description: Maximum number of messages to return per page. Defaults to 50, max 100.
          in: query
          name: limit
          schema:
            default: 50
            maximum: 100
            minimum: 1
            type: integer
          x-is-limit-param: true
        - description: Pagination cursor for fetching older messages. Omit to start from most recent.
          in: query
          name: cursor
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  messages:
                    description: List of messages
                    items:
                      properties:
                        conversation_id:
                          description: Conversation ID
                          format: uuid
                          type: string
                        created_at:
                          description: Creation timestamp
                          format: date-time
                          type: string
                        id:
                          description: Message ID
                          format: uuid
                          type: string
                        message:
                          description: Message content
                          type: string
                        origin:
                          description: Message origin
                          enum:
                            - user
                            - system
                            - admin
                          type: string
                        subtype:
                          description: Message subtype
                          type: string
                        type:
                          description: Message type
                          type: string
                      required:
                        - id
                        - created_at
                        - conversation_id
                        - message
                        - origin
                      type: object
                    type: array
                  next:
                    $ref: '#/components/schemas/NextCursor'
                required:
                  - messages
                  - next
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Get messages in a conversation
      tags:
        - studio
  /v2/studio/deployment/database/provision:
    post:
      description: Provisions a Neon PostgreSQL database for the deployment, or validates and attaches a user-provided (BYO) connection string. Idempotent — returns success if already provisioned.
      externalDocs:
        url: https://docs.neynar.com/reference/provision
      operationId: provision
      requestBody:
        content:
          application/json:
            schema:
              properties:
                connection_string:
                  description: Optional BYO PostgreSQL connection string. If omitted, a Neon database is auto-provisioned.
                  type: string
                deployment_id:
                  description: Deployment ID (UUID)
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
              required:
                - deployment_id
                - fid
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  alreadyProvisioned:
                    description: True if the database was already provisioned
                    type: boolean
                  success:
                    enum:
                      - true
                    type: boolean
                required:
                  - success
                  - alreadyProvisioned
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Provision a database for a deployment
      tags:
        - studio
  /v2/studio/deployment/database/query:
    post:
      description: Query data from a table with pagination and sorting.
      externalDocs:
        url: https://docs.neynar.com/reference/query-table
      operationId: query-table
      requestBody:
        content:
          application/json:
            schema:
              properties:
                columns:
                  description: Columns to select (defaults to all)
                  items:
                    type: string
                  type: array
                deployment_id:
                  description: Deployment ID (UUID)
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user. Required for non-admin users.
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                limit:
                  description: 'Maximum rows to return (default: 100, max: 1000)'
                  maximum: 1000
                  minimum: 1
                  type: number
                offset:
                  description: Number of rows to skip
                  minimum: 0
                  type: number
                orderBy:
                  description: Column to sort by
                  type: string
                orderDirection:
                  description: Sort direction
                  enum:
                    - asc
                    - desc
                  type: string
                table:
                  description: Table name to query
                  minLength: 1
                  type: string
              required:
                - deployment_id
                - table
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  columns:
                    description: Column metadata
                    items:
                      properties:
                        name:
                          description: Column name
                          type: string
                        type:
                          description: Column data type
                          type: string
                      required:
                        - name
                        - type
                      type: object
                    type: array
                  hasMore:
                    description: Whether more rows are available
                    type: boolean
                  limit:
                    description: Applied limit
                    type: number
                  offset:
                    description: Applied offset
                    type: number
                  rows:
                    description: Query result rows
                    items:
                      additionalProperties: {}
                      type: object
                    type: array
                  totalCount:
                    description: Total number of rows in table
                    type: number
                required:
                  - columns
                  - rows
                  - totalCount
                  - limit
                  - offset
                  - hasMore
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Query table data
      tags:
        - studio
  /v2/studio/deployment/database/sql:
    post:
      description: Executes a raw SQL query against the deployment database. Only SELECT, WITH, and EXPLAIN queries are allowed. Admin access required.
      externalDocs:
        url: https://docs.neynar.com/reference/execute-sql
      operationId: execute-sql
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID (UUID)
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID (optional for admins)
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                sql:
                  description: SQL query to execute
                  maxLength: 10000
                  minLength: 1
                  type: string
              required:
                - deployment_id
                - sql
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  columns:
                    description: Column metadata
                    items:
                      properties:
                        name:
                          description: Column name
                          type: string
                        type:
                          description: Column data type
                          type: string
                      required:
                        - name
                        - type
                      type: object
                    type: array
                  executionTimeMs:
                    description: Query execution time in milliseconds
                    type: number
                  rowCount:
                    description: Number of rows returned
                    type: number
                  rows:
                    description: Query result rows
                    items:
                      additionalProperties: {}
                      type: object
                    type: array
                required:
                  - columns
                  - rows
                  - rowCount
                  - executionTimeMs
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Execute raw SQL query (admin only)
      tags:
        - studio
  /v2/studio/deployment/database/tables:
    get:
      description: Lists all tables and views in the deployment database, excluding system tables.
      externalDocs:
        url: https://docs.neynar.com/reference/list-tables
      operationId: list-tables
      parameters:
        - description: Deployment ID (UUID)
          in: query
          name: deployment_id
          required: true
          schema:
            format: uuid
            type: string
        - description: Farcaster ID of the user. Required for non-admin users.
          in: query
          name: fid
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  tables:
                    description: List of tables
                    items:
                      properties:
                        name:
                          description: Table name
                          type: string
                        rowCountEstimate:
                          description: Estimated row count from statistics
                          nullable: true
                          type: number
                        schema:
                          description: Schema name
                          type: string
                        type:
                          description: Table type
                          enum:
                            - BASE TABLE
                            - VIEW
                          type: string
                      required:
                        - name
                        - schema
                        - type
                        - rowCountEstimate
                      type: object
                    type: array
                required:
                  - tables
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: List all tables in deployment database
      tags:
        - studio
  /v2/studio/deployment/database/tables/{table_name}/rows:
    delete:
      description: Deletes rows matching the WHERE conditions. WHERE clause is required to prevent accidental bulk deletes.
      externalDocs:
        url: https://docs.neynar.com/reference/delete-rows
      operationId: delete-rows
      parameters:
        - in: path
          name: table_name
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID (UUID)
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user. Required for non-admin users.
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                limit:
                  description: 'Maximum rows to delete (default: 1000)'
                  maximum: 1000
                  minimum: 1
                  type: number
                where:
                  additionalProperties: {}
                  description: WHERE conditions (equality only, required)
                  type: object
              required:
                - deployment_id
                - where
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  deletedCount:
                    description: Number of rows deleted
                    type: number
                required:
                  - deletedCount
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Delete rows from table
      tags:
        - studio
    patch:
      description: Updates rows matching the WHERE conditions. WHERE clause is required to prevent accidental bulk updates.
      externalDocs:
        url: https://docs.neynar.com/reference/update-rows
      operationId: update-rows
      parameters:
        - in: path
          name: table_name
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID (UUID)
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user. Required for non-admin users.
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                limit:
                  description: 'Maximum rows to update (default: 1000)'
                  maximum: 1000
                  minimum: 1
                  type: number
                set:
                  additionalProperties: {}
                  description: Column values to update
                  type: object
                where:
                  additionalProperties: {}
                  description: WHERE conditions (equality only, required)
                  type: object
              required:
                - deployment_id
                - set
                - where
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  updatedCount:
                    description: Number of rows updated
                    type: number
                required:
                  - updatedCount
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Update rows in table
      tags:
        - studio
    post:
      description: Inserts one or more rows into the specified table. Returns the inserted rows with generated values.
      externalDocs:
        url: https://docs.neynar.com/reference/insert-rows
      operationId: insert-rows
      parameters:
        - in: path
          name: table_name
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID (UUID)
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user. Required for non-admin users.
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                rows:
                  description: Rows to insert (max 100)
                  items:
                    additionalProperties: {}
                    type: object
                  maxItems: 100
                  minItems: 1
                  type: array
              required:
                - deployment_id
                - rows
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  insertedCount:
                    description: Number of rows inserted
                    type: number
                  rows:
                    description: Inserted rows with generated values
                    items:
                      additionalProperties: {}
                      type: object
                    type: array
                required:
                  - insertedCount
                  - rows
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Insert rows into table
      tags:
        - studio
  /v2/studio/deployment/database/tables/{table_name}/schema:
    get:
      description: Retrieves the complete schema for a table including columns, indexes, and foreign keys.
      externalDocs:
        url: https://docs.neynar.com/reference/get-table-schema
      operationId: get-table-schema
      parameters:
        - in: path
          name: table_name
          required: true
          schema:
            type: string
        - description: Deployment ID (UUID)
          in: query
          name: deployment_id
          required: true
          schema:
            format: uuid
            type: string
        - description: Farcaster ID of the user. Required for non-admin users.
          in: query
          name: fid
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  columns:
                    description: Table columns
                    items:
                      properties:
                        defaultValue:
                          description: Default value expression
                          nullable: true
                          type: string
                        isPrimaryKey:
                          description: Whether the column is part of primary key
                          type: boolean
                        name:
                          description: Column name
                          type: string
                        nullable:
                          description: Whether the column allows NULL values
                          type: boolean
                        position:
                          description: Ordinal position in table
                          type: number
                        type:
                          description: Column data type
                          type: string
                      required:
                        - name
                        - type
                        - nullable
                        - defaultValue
                        - isPrimaryKey
                        - position
                      type: object
                    type: array
                  foreignKeys:
                    description: Foreign key relationships
                    items:
                      properties:
                        columnName:
                          description: Local column name
                          type: string
                        constraintName:
                          description: Constraint name
                          type: string
                        referencedColumn:
                          description: Referenced column name
                          type: string
                        referencedTable:
                          description: Referenced table name
                          type: string
                      required:
                        - constraintName
                        - columnName
                        - referencedTable
                        - referencedColumn
                      type: object
                    type: array
                  indexes:
                    description: Table indexes
                    items:
                      properties:
                        columns:
                          description: Columns in the index
                          items:
                            type: string
                          type: array
                        isPrimary:
                          description: Whether this is the primary key index
                          type: boolean
                        isUnique:
                          description: Whether the index enforces uniqueness
                          type: boolean
                        name:
                          description: Index name
                          type: string
                      required:
                        - name
                        - columns
                        - isUnique
                        - isPrimary
                      type: object
                    type: array
                  primaryKeyColumns:
                    description: Primary key column names
                    items:
                      type: string
                    type: array
                  tableName:
                    description: Table name
                    type: string
                required:
                  - tableName
                  - columns
                  - indexes
                  - foreignKeys
                  - primaryKeyColumns
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Get table schema
      tags:
        - studio
  /v2/studio/deployment/dev-status:
    get:
      description: 'Retrieves the dev-status.json file from a miniapp deployment, which tracks the progress of app development phases. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/get-dev-status
      operationId: get-dev-status
      parameters:
        - description: Deployment ID
          in: query
          name: deployment_id
          schema:
            format: uuid
            type: string
        - description: Kubernetes namespace name
          in: query
          name: namespace
          schema:
            type: string
        - description: Kubernetes deployment name
          in: query
          name: name
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                oneOf:
                  - properties:
                      ready_to_publish:
                        type: boolean
                      schema_version:
                        enum:
                          - 0
                        type: number
                    required:
                      - schema_version
                      - ready_to_publish
                    type: object
                  - additionalProperties: {}
                    properties:
                      completed_at:
                        nullable: true
                        type: string
                      current_phase:
                        type: number
                      last_updated_at:
                        nullable: true
                        type: string
                      metadata:
                        additionalProperties: {}
                        type: object
                      phases:
                        additionalProperties:
                          additionalProperties: {}
                          properties: {}
                          type: object
                        type: object
                      ready_to_publish:
                        type: boolean
                      schema_version:
                        enum:
                          - 1
                        type: number
                      started_at:
                        nullable: true
                        type: string
                    required:
                      - schema_version
                      - ready_to_publish
                      - current_phase
                      - started_at
                      - last_updated_at
                      - completed_at
                      - phases
                      - metadata
                    type: object
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Get dev status of a miniapp
      tags:
        - studio
  /v2/studio/deployment/export-zip:
    get:
      description: "Downloads the generated miniapp source code as a binary ZIP archive (Content-Type: application/zip). Requires a paid Studio subscription (GROWTH, STUDIO_PLUS, STUDIO_MAX, or INTERNAL). If the deployment is running, the ZIP reflects the live working tree; otherwise it is served from the deployment's GitHub backup (last published state). The 200 response body is a raw binary stream, not JSON."
      externalDocs:
        url: https://docs.neynar.com/reference/export-zip
      operationId: export-zip
      parameters:
        - description: Deployment ID (UUID). Required if name not provided.
          in: query
          name: deployment_id
          schema:
            format: uuid
            type: string
        - description: Farcaster ID of the user; if not provided, namespace must be provided
          in: query
          name: fid
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
        - description: Kubernetes deployment name. Required if deployment_id not provided.
          in: query
          name: name
          schema:
            type: string
        - description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
          in: query
          name: namespace
          schema:
            type: string
      responses:
        '200':
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '402':
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - message
                  - code
                type: object
          description: Payment Required
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Export deployment source code as ZIP
      tags:
        - studio
  /v2/studio/deployment/file:
    get:
      description: 'Retrieves the contents of a specific file from the generated app. Requires Studio admin authentication or FID ownership validation. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/get-deployment-file
      operationId: get-deployment-file
      parameters:
        - description: Deployment ID (UUID). Required if name not provided.
          in: query
          name: deployment_id
          schema:
            format: uuid
            type: string
        - description: Farcaster ID of the user; if not provided, namespace must be provided
          in: query
          name: fid
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
        - description: Kubernetes deployment name. Required if deployment_id not provided.
          in: query
          name: name
          schema:
            type: string
        - description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
          in: query
          name: namespace
          schema:
            type: string
        - description: File path relative to gen/
          in: query
          name: file_path
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  content:
                    description: File contents
                    type: string
                  path:
                    description: File path relative to gen/
                    type: string
                required:
                  - content
                  - path
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Get deployment file contents
      tags:
        - studio
  /v2/studio/deployment/files:
    get:
      description: 'Lists files in a directory of the generated app. Requires Studio admin authentication or FID ownership validation. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/list-deployment-files
      operationId: list-deployment-files
      parameters:
        - description: Deployment ID (UUID). Required if name not provided.
          in: query
          name: deployment_id
          schema:
            format: uuid
            type: string
        - description: Farcaster ID of the user; if not provided, namespace must be provided
          in: query
          name: fid
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
        - description: Kubernetes deployment name. Required if deployment_id not provided.
          in: query
          name: name
          schema:
            type: string
        - description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
          in: query
          name: namespace
          schema:
            type: string
        - description: Directory path relative to gen/ (defaults to root)
          in: query
          name: directory
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  files:
                    description: List of files and directories
                    items:
                      properties:
                        is_directory:
                          description: Whether this is a directory
                          type: boolean
                        name:
                          description: File or directory name
                          type: string
                        path:
                          description: Full path relative to gen/
                          type: string
                      required:
                        - name
                        - path
                        - is_directory
                      type: object
                    type: array
                required:
                  - files
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: List deployment files
      tags:
        - studio
  /v2/studio/deployment/prompt/stream:
    post:
      description: 'Sends a prompt to a specific miniapp generator deployment and returns a streaming response using Server-Sent Events. The response is a continuous stream of Server-Sent Events, not a single JSON payload. Each event contains a JSON object with type, message, and other fields specific to the message type. Requires authentication via API key in the request header. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/prompt-deployment-stream
      operationId: prompt-deployment-stream
      requestBody:
        content:
          application/json:
            schema:
              properties:
                conversation_id:
                  description: Optional conversation ID to continue an existing chat. If not provided, a new conversation will be created.
                  format: uuid
                  type: string
                deployment_id:
                  description: Deployment ID (UUID). Required if name not provided.
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user; if not provided, namespace must be provided
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                images:
                  description: Optional images for multimodal messages. Each image is base64-encoded.
                  items:
                    properties:
                      data:
                        description: Base64-encoded image data or data URL (data:image/png;base64,...)
                        type: string
                      mediaType:
                        description: MIME type of the image, e.g. image/png
                        enum:
                          - image/jpeg
                          - image/png
                          - image/gif
                          - image/webp
                        type: string
                    required:
                      - mediaType
                      - data
                    type: object
                  type: array
                name:
                  description: Kubernetes deployment name. Required if deployment_id not provided.
                  type: string
                namespace:
                  description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
                  type: string
                prompt:
                  description: Prompt string to send to the deployment
                  type: string
                session_id:
                  description: Optional Claude SDK session ID to resume an existing Claude Code session. Enables session-based conversation continuity.
                  type: string
                system_prompt_variant:
                  description: System prompt variant to use. Defaults to stable if not provided.
                  enum:
                    - canary
                    - beta
                    - stable
                  type: string
              required:
                - prompt
              type: object
        required: true
      responses:
        '200':
          description: Success
        '202':
          content:
            application/json:
              schema:
                properties:
                  conversation_id:
                    description: The conversation ID
                    format: uuid
                    type: string
                  queued:
                    description: Indicates the message was queued to the active session
                    enum:
                      - true
                    type: boolean
                  session_id:
                    description: The session ID the message was queued to
                    type: string
                required:
                  - queued
                  - session_id
                  - conversation_id
                type: object
          description: '202'
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '413':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Content Too Large
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Prompt a deployment with streaming response
      tags:
        - studio
  /v2/studio/deployment/recover:
    post:
      description: 'Attempts to recover a broken dev server. Phase 1: reads dev server error logs and sends them to an AI agent for fixing, then waits for HMR to auto-rebuild. Phase 2: if HMR fails, falls back to a full npm build with AI retry loop. Streams progress events via Server-Sent Events. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/recover
      operationId: recover
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID
                  format: uuid
                  type: string
                name:
                  description: Kubernetes deployment name
                  type: string
                namespace:
                  description: Kubernetes namespace
                  type: string
              type: object
        required: true
      responses:
        '200':
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '409':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Conflict
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Recover dev server with two-phase strategy
      tags:
        - studio
  /v2/studio/deployment/secrets/:
    delete:
      description: Deletes environment variables (secrets) from a deployment.
      externalDocs:
        url: https://docs.neynar.com/reference/delete-secrets
      operationId: delete-secrets
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID to delete secrets from
                  format: uuid
                  type: string
                ids:
                  description: Secret IDs to delete
                  items:
                    type: string
                  minItems: 1
                  type: array
              required:
                - deployment_id
                - ids
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  success:
                    enum:
                      - true
                    type: boolean
                required:
                  - success
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Delete deployment secrets
      tags:
        - studio
    get:
      description: Retrieves all secrets for a deployment.
      externalDocs:
        url: https://docs.neynar.com/reference/list-secrets
      operationId: list-secrets
      parameters:
        - description: Deployment ID to list secrets for
          in: query
          name: deployment_id
          required: true
          schema:
            format: uuid
            type: string
        - description: Optional filter by environment variable name
          in: query
          name: key
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  secrets:
                    items:
                      properties:
                        id:
                          description: Environment variable ID
                          type: string
                        key:
                          description: Environment variable name
                          type: string
                        preview:
                          description: Masked preview of the secret value (e.g. "sk_l…t1b3")
                          type: string
                        type:
                          description: Whether this is a system-managed or user-defined variable
                          enum:
                            - system
                            - user
                          type: string
                      required:
                        - key
                        - id
                        - type
                      type: object
                    type: array
                  success:
                    enum:
                      - true
                    type: boolean
                required:
                  - success
                  - secrets
                type: object
          description: Success
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: List deployment secrets
      tags:
        - studio
    post:
      description: Upsert secrets for a deployment.
      externalDocs:
        url: https://docs.neynar.com/reference/upsert-secrets
      operationId: upsert-secrets
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID to add secrets to
                  format: uuid
                  type: string
                secrets:
                  description: Secrets to create
                  items:
                    properties:
                      key:
                        description: Environment variable name
                        type: string
                      value:
                        description: Environment variable value
                        type: string
                    required:
                      - key
                      - value
                    type: object
                  minItems: 1
                  type: array
              required:
                - deployment_id
                - secrets
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  success:
                    enum:
                      - true
                    type: boolean
                required:
                  - success
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorRes'
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Upsert deployment secrets
      tags:
        - studio
  /v2/studio/deployment/session/cancel:
    post:
      description: 'Cancels an in-progress Claude Code session for a deployment. Safe to call even if no session is active — returns cancelled: false in that case.'
      externalDocs:
        url: https://docs.neynar.com/reference/cancel-session
      operationId: cancel-session
      requestBody:
        content:
          application/json:
            schema:
              properties:
                conversation_id:
                  description: The conversation ID of the session to cancel
                  format: uuid
                  type: string
                deployment_id:
                  description: Deployment ID (UUID). Required if name not provided.
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user; if not provided, namespace must be provided
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                name:
                  description: Kubernetes deployment name. Required if deployment_id not provided.
                  type: string
                namespace:
                  description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
                  type: string
              required:
                - conversation_id
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  cancelled:
                    description: Whether an active session was found and cancelled
                    type: boolean
                required:
                  - cancelled
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Cancel an active Claude session for a deployment
      tags:
        - studio
  /v2/studio/deployment/start:
    post:
      description: 'Starts the Next.js development server for the generated miniapp. Requires Studio admin authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/start-app
      operationId: start-app
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID (UUID). Required if name not provided.
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user; if not provided, namespace must be provided
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                name:
                  description: Kubernetes deployment name. Required if deployment_id not provided.
                  type: string
                namespace:
                  description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
                  type: string
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Status message
                    type: string
                  success:
                    type: boolean
                required:
                  - success
                  - message
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '408':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Request Timeout
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Start generated miniapp
      tags:
        - studio
  /v2/studio/deployment/stop:
    post:
      description: 'Stops the Next.js development server for the generated miniapp. Requires Studio admin authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/stop-app
      operationId: stop-app
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID (UUID). Required if name not provided.
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user; if not provided, namespace must be provided
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                name:
                  description: Kubernetes deployment name. Required if deployment_id not provided.
                  type: string
                namespace:
                  description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
                  type: string
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    description: Status message
                    type: string
                  success:
                    type: boolean
                required:
                  - success
                  - message
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Stop generated miniapp
      tags:
        - studio
  /v2/studio/deployment/upload-image:
    post:
      description: 'Uploads an image file to the generated miniapp public folder. The image will be accessible as a static asset on the deployed miniapp. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/upload-image
      operationId: upload-image
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  filename:
                    description: Uploaded filename
                    type: string
                  message:
                    description: Status message
                    type: string
                  success:
                    description: Whether the upload was successful
                    type: boolean
                  url:
                    description: URL path to access the image
                    type: string
                required:
                  - success
                  - message
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Upload image to deployment
      tags:
        - studio
  /v2/studio/deployment/upload-image-url:
    post:
      description: 'Downloads an image from the provided URL and saves it to the generated miniapp public folder. The image will be accessible as a static asset on the deployed miniapp. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/upload-image-url
      operationId: upload-image-url
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID (UUID). Required if name not provided.
                  format: uuid
                  type: string
                fid:
                  description: Farcaster ID of the user; if not provided, namespace must be provided
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                name:
                  description: Kubernetes deployment name. Required if deployment_id not provided.
                  type: string
                namespace:
                  description: Optional Kubernetes namespace. If not provided, will query for the active namespace for the given FID.
                  type: string
                url:
                  description: URL of the image to download
                  format: uri
                  type: string
              required:
                - url
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  filename:
                    description: Uploaded filename
                    type: string
                  message:
                    description: Status message
                    type: string
                  success:
                    description: Whether the upload was successful
                    type: boolean
                  url:
                    description: URL path to access the image
                    type: string
                required:
                  - success
                  - message
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Upload image from URL to deployment
      tags:
        - studio
  /v2/studio/usage/report:
    post:
      description: Called by miniapp-generator instances to report Claude SDK usage. Idempotent — duplicate submissions (same idempotency_key) are accepted but not double-counted.
      externalDocs:
        url: https://docs.neynar.com/reference/report-studio-usage
      operationId: report-studio-usage
      requestBody:
        content:
          application/json:
            schema:
              properties:
                compute_units:
                  description: Compute units to add (must be positive)
                  exclusiveMinimum: true
                  minimum: 0
                  type: integer
                deployment_id:
                  type: string
                developer_uuid:
                  format: uuid
                  type: string
                idempotency_key:
                  description: UUID from the Claude SDK result message
                  format: uuid
                  type: string
                session_id:
                  description: Claude session ID for audit trail
                  type: string
              required:
                - idempotency_key
                - developer_uuid
                - deployment_id
                - compute_units
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  accepted:
                    enum:
                      - true
                    type: boolean
                  duplicate:
                    type: boolean
                required:
                  - accepted
                  - duplicate
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Report studio compute unit usage
      tags:
        - studio
  /v2/studio/vercel/:
    post:
      description: 'Publishes the generated miniapp to Vercel via GitHub. Creates a GitHub repository, pushes code, creates a Vercel project linked to GitHub, and triggers deployment. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/deploy-to-vercel
      operationId: deploy-to-vercel
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID (UUID). Required if name not provided.
                  format: uuid
                  type: string
                env:
                  additionalProperties:
                    type: string
                  description: Environment variables for the Vercel deployment
                  type: object
                fid:
                  description: Farcaster ID of the user; if not provided, namespace must be provided
                  example: 3
                  format: int32
                  minimum: 0
                  type: integer
                name:
                  description: Deployment name (used for both GitHub repo and Vercel project). Required if deployment_id not provided.
                  type: string
                namespace:
                  description: Kubernetes namespace name
                  type: string
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  deployment_url:
                    description: URL of the deployed Vercel app
                    type: string
                  production_url:
                    description: Production URL under neynar.app domain
                    type: string
                  project_id:
                    description: Vercel project ID
                    type: string
                  success:
                    description: Whether the deployment succeeded
                    type: boolean
                required:
                  - success
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Resource not found
        '409':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Conflict
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Deploy miniapp to Vercel
      tags:
        - studio
  /v2/studio/vercel/domain:
    put:
      description: "Assigns a custom *.neynar.app subdomain to the user's deployed miniapp. The new domain is added to the Vercel project alongside the existing auto-assigned domain. The productionDomain in the database is updated to the custom domain. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call."
      externalDocs:
        url: https://docs.neynar.com/reference/assign-custom-domain
      operationId: assign-custom-domain
      parameters:
        - description: Farcaster ID of the requesting user
          in: query
          name: fid
          required: true
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              properties:
                deployment_id:
                  description: Deployment ID (UUID) of the miniapp
                  format: uuid
                  type: string
                subdomain:
                  description: The desired subdomain (without .neynar.app suffix). Must be 3-63 characters, lowercase alphanumeric and hyphens only.
                  maxLength: 63
                  minLength: 3
                  pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
                  type: string
              required:
                - deployment_id
                - subdomain
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  domain:
                    description: The full assigned domain (e.g., myapp.neynar.app)
                    type: string
                  previous_domain:
                    description: The previous production domain, if any
                    type: string
                  success:
                    enum:
                      - true
                    type: boolean
                required:
                  - success
                  - domain
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Resource not found
        '409':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Conflict
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Assign a custom subdomain to a deployed miniapp
      tags:
        - studio
  /v2/studio/vercel/domain/check:
    get:
      description: 'Checks whether a custom *.neynar.app subdomain is available for assignment. Validates format, checks reserved names, and verifies no other active deployment is using it. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/check-domain-availability
      operationId: check-domain-availability
      parameters:
        - description: Farcaster ID of the requesting user
          in: query
          name: fid
          required: true
          schema:
            example: 3
            format: int32
            minimum: 0
            type: integer
        - description: The desired subdomain (without .neynar.app suffix). Must be 3-63 characters, lowercase alphanumeric and hyphens only.
          in: query
          name: subdomain
          required: true
          schema:
            maxLength: 63
            minLength: 3
            pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  available:
                    description: Whether the subdomain is available
                    type: boolean
                  domain:
                    description: The full domain (e.g., myapp.neynar.app)
                    type: string
                  reason:
                    description: Reason why the subdomain is unavailable (e.g., "reserved", "taken")
                    type: string
                required:
                  - available
                  - domain
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Check if a custom subdomain is available
      tags:
        - studio
  /v2/studio/vercel/logs:
    get:
      description: 'Retrieves the build logs for a Vercel deployment. Useful for debugging failed deployments. Requires Studio admin authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/vercel-deployment-logs
      operationId: vercel-deployment-logs
      parameters:
        - description: Deployment ID (UUID). Required if name not provided.
          in: query
          name: deployment_id
          schema:
            format: uuid
            type: string
        - description: Farcaster ID of the user
          in: query
          name: fid
          schema:
            minimum: 0
            type: integer
        - description: K8s Namespace name
          in: query
          name: namespace
          schema:
            type: string
        - description: Deployment name used to identify the Vercel project. Required if deployment_id not provided.
          in: query
          name: name
          schema:
            type: string
        - description: Maximum number of log events to return. Defaults to 100.
          in: query
          name: limit
          schema:
            default: 100
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  logs:
                    description: Array of log events
                    items:
                      properties:
                        created:
                          description: Timestamp of the log event
                          type: number
                        date:
                          description: Date of the log event
                          type: number
                        text:
                          description: Log text content
                          type: string
                        type:
                          description: Event type (stdout, stderr, etc.)
                          type: string
                      required:
                        - type
                        - created
                        - date
                      type: object
                    type: array
                  success:
                    description: Whether the request succeeded
                    type: boolean
                required:
                  - success
                  - logs
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Bad Request
        '403':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Get Vercel deployment build logs
      tags:
        - studio
  /v2/studio/vercel/status:
    get:
      description: 'Retrieves the status of a Vercel deployment for a miniapp. Looks up the Vercel project ID from the deployment and queries Vercel API for deployment status. Requires API key authentication. Note: Studio CU is tracked based on LLM token usage, not per API call.'
      externalDocs:
        url: https://docs.neynar.com/reference/vercel-deployment-status
      operationId: vercel-deployment-status
      parameters:
        - description: Deployment ID (UUID). Required if name not provided.
          in: query
          name: deployment_id
          schema:
            format: uuid
            type: string
        - description: Farcaster ID of the user; if not provided, namespace must be provided
          in: query
          name: fid
          schema:
            minimum: 0
            type: integer
        - description: K8s Namespace name
          in: query
          name: namespace
          schema:
            type: string
        - description: Deployment name used to identify the Vercel project. Required if deployment_id not provided.
          in: query
          name: name
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  created_at:
                    description: Timestamp when deployment was created
                    type: number
                  deployment_state:
                    description: Current state of the deployment
                    type: string
                  deployment_url:
                    description: URL of the deployed Vercel app
                    type: string
                  project_id:
                    description: Vercel project ID
                    type: string
                  success:
                    description: Whether the request succeeded
                    type: boolean
                  target:
                    description: Deployment target environment
                    type: string
                required:
                  - success
                type: object
          description: Success
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Resource not found
        '500':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                  success:
                    enum:
                      - false
                    type: boolean
                required:
                  - success
                  - error
                type: object
          description: Server Error
      security:
        - ApiKeyAuth: []
      summary: Get Vercel deployment status
      tags:
        - studio
components:
  parameters:
    AuthorizationHeader:
      description: Optional Bearer token for certain endpoints. The token format is described [here](https://docs.farcaster.xyz/reference/warpcast/api#authentication).
      in: header
      name: Authorization
      schema:
        example: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
        type: string
      x-is-global-header: true
    NeynarExperimentalHeader:
      description: Enables experimental features including filtering based on the Neynar score. See [docs](https://neynar.notion.site/Experimental-Features-1d2655195a8b80eb98b4d4ae7b76ae4a) for more details.
      in: header
      name: x-neynar-experimental
      schema:
        default: false
        type: boolean
      x-is-global-header: true
    WalletIdHeader:
      description: Wallet ID to use for transactions
      in: header
      name: x-wallet-id
      required: true
      schema:
        type: string
      x-is-global-header: true
  schemas:
    AddVerificationReqBody:
      properties:
        address:
          $ref: '#/components/schemas/EthAddress'
        block_hash:
          example: '0x191905a9201170abb55f4c90a4cc968b44c1b71cdf3db2764b775c93e7e22b29'
          type: string
        chain_id:
          $ref: '#/components/schemas/VerificationChainId'
        eth_signature:
          example: '0x2fc09da1f4dcb723fefb91f77932c249c418c0af00c66ed92ee1f35002c80d6a1145280c9f361d207d28447f8f7463366840d3a9309036cf6954afd1fd331beb1b'
          type: string
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
        verification_type:
          $ref: '#/components/schemas/VerificationType'
      required:
        - signer_uuid
        - address
        - block_hash
        - eth_signature
      title: AddVerificationReqBody
      type: object
    AddressBalance:
      description: The token balances associated with a wallet address
      properties:
        object:
          enum:
            - address_balance
          type: string
        token_balances:
          items:
            $ref: '#/components/schemas/TokenBalance'
          type: array
        verified_address:
          properties:
            address:
              description: The wallet address
              type: string
            network:
              $ref: '#/components/schemas/Network'
          required:
            - address
            - network
          type: object
      required:
        - object
        - verified_address
        - token_balances
      title: AddressBalance
      type: object
    AppHostGetEventResponse:
      properties:
        event:
          description: |-
            Legacy event type corresponding to the requested event type:
            - frame_added: User adds a mini app to their account
            - frame_removed: User removes a mini app from their account
            - notifications_enabled: User enables notifications for a mini app
            - notifications_disabled: User disables notifications for a mini app
          type: string
        notificationDetails:
          description: Details for notification setup, only present when event is notifications_enabled
          properties:
            token:
              description: Token to use when sending notifications to this user
              type: string
            url:
              description: URL endpoint for sending notifications
              type: string
          required:
            - url
            - token
          type: object
      required:
        - event
      title: AppHostGetEventResponse
      type: object
    AppHostPostEventReqBody:
      anyOf:
        - $ref: '#/components/schemas/SignedMessageBody'
        - $ref: '#/components/schemas/SignerUuidBody'
      description: Request body for app host events. Can either provide a signed_message or a signer_uuid with event details.
      title: AppHostPostEventReqBody
    AppHostPostEventResponse:
      properties:
        message:
          example: Successfully processed event
          type: string
        success:
          example: true
          type: boolean
      required:
        - success
      title: AppHostPostEventResponse
      type: object
    AppHostUserStateResponse:
      properties:
        notifications_enabled:
          description: List of domains for which notifications are enabled for this user
          items:
            properties:
              domain:
                description: Domain of the mini app
                type: string
              status:
                description: Status of notifications for this domain (usually 'valid')
                type: string
              updated_at:
                description: When the notification preference was last updated
                format: date-time
                type: string
            required:
              - domain
              - status
              - updated_at
            type: object
          type: array
      required:
        - notifications_enabled
      title: AppHostUserStateResponse
      type: object
    AuthorizationUrlResponse:
      properties:
        authorization_url:
          format: uri
          type: string
      required:
        - authorization_url
      title: AuthorizationUrlResponse
      type: object
    BalanceResponse:
      properties:
        user_balance:
          properties:
            address_balances:
              items:
                $ref: '#/components/schemas/AddressBalance'
              type: array
            object:
              enum:
                - user_balance
              type: string
            user:
              $ref: '#/components/schemas/UserDehydrated'
          required:
            - object
            - user
            - address_balances
          type: object
      title: BalanceResponse
      type: object
    BanListResponse:
      properties:
        bans:
          items:
            $ref: '#/components/schemas/BanRecord'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - bans
        - next
      title: BanListResponse
      type: object
    BanRecord:
      properties:
        banned:
          $ref: '#/components/schemas/User'
        banned_at:
          format: date-time
          type: string
        object:
          enum:
            - ban
          type: string
      required:
        - object
        - banned_at
      title: BanRecord
      type: object
    BanReqBody:
      properties:
        fids:
          items:
            $ref: '#/components/schemas/Fid'
          type: array
      required:
        - fids
      title: BanReqBody
      type: object
    BanResponse:
      properties:
        message:
          nullable: true
          type: string
        success:
          example: true
          type: boolean
      required:
        - success
      title: BanResponse
      type: object
    BestFriendsResponse:
      properties:
        next:
          $ref: '#/components/schemas/NextCursor'
        users:
          items:
            properties:
              fid:
                type: integer
              mutual_affinity_score:
                type: number
              username:
                type: string
            required:
              - fid
              - mutual_affinity_score
              - username
            type: object
          type: array
      required:
        - users
      title: BestFriendsResponse
      type: object
    BlockListResponse:
      properties:
        blocks:
          items:
            $ref: '#/components/schemas/BlockRecord'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - blocks
        - next
      title: BlockListResponse
      type: object
    BlockRecord:
      properties:
        blocked:
          $ref: '#/components/schemas/User'
        blocked_at:
          format: date-time
          type: string
        blocker:
          $ref: '#/components/schemas/User'
        object:
          enum:
            - block
          type: string
      required:
        - object
        - blocked_at
      title: BlockRecord
      type: object
    BlockReqBody:
      properties:
        blocked_fid:
          $ref: '#/components/schemas/Fid'
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
      required:
        - signer_uuid
        - blocked_fid
      title: BlockReqBody
      type: object
    BulkCastsResponse:
      properties:
        casts:
          items:
            $ref: '#/components/schemas/Cast'
          type: array
      required:
        - casts
      title: BulkCastsResponse
      type: object
    BulkFollowResponse:
      properties:
        details:
          items:
            $ref: '#/components/schemas/FollowResponse'
          type: array
        success:
          type: boolean
      required:
        - success
        - details
      title: BulkFollowResponse
      type: object
    BulkRelevantFungibleOwnersResponse:
      additionalProperties:
        properties:
          all_relevant_fungible_owners_dehydrated:
            items:
              $ref: '#/components/schemas/UserDehydrated'
            type: array
          top_relevant_fungible_owners_hydrated:
            items:
              $ref: '#/components/schemas/User'
            type: array
        required:
          - top_relevant_fungible_owners_hydrated
          - all_relevant_fungible_owners_dehydrated
        type: object
      title: BulkRelevantFungibleOwnersResponse
      type: object
    BulkUsersByAddressResponse:
      anyOf:
        - additionalProperties:
            items:
              $ref: '#/components/schemas/User'
            type: array
      title: BulkUsersByAddressResponse
      type: object
    BulkUsersResponse:
      properties:
        users:
          items:
            $ref: '#/components/schemas/User'
          type: array
      required:
        - users
      title: BulkUsersResponse
      type: object
    BuyStorageReqBody:
      properties:
        fid:
          description: The unique identifier of a farcaster user or app (unsigned integer)
          example: 1
          format: int32
          minimum: 1
          type: integer
        idem:
          $ref: '#/components/schemas/Idem'
        units:
          description: |-
            Number of storage units to buy.
            A storage unit lets you store 5000 casts, 2500 reactions and 2500 links.
          example: 1
          minimum: 1
          type: integer
      required:
        - fid
      title: BuyStorageReqBody
      type: object
    Cast:
      properties:
        app:
          allOf:
            - $ref: '#/components/schemas/UserDehydrated'
          nullable: true
        author:
          $ref: '#/components/schemas/User'
        author_channel_context:
          $ref: '#/components/schemas/ChannelUserContext'
        channel:
          allOf:
            - $ref: '#/components/schemas/ChannelOrChannelDehydrated'
          nullable: true
        embeds:
          items:
            $ref: '#/components/schemas/Embed'
          type: array
        hash:
          type: string
        mentioned_channels:
          items:
            $ref: '#/components/schemas/ChannelDehydrated'
          type: array
        mentioned_channels_ranges:
          description: |-
            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.
          items:
            $ref: '#/components/schemas/TextRange'
          type: array
        mentioned_profiles:
          items:
            $ref: '#/components/schemas/User'
          type: array
        mentioned_profiles_ranges:
          description: |-
            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.
          items:
            $ref: '#/components/schemas/TextRange'
          type: array
        object:
          enum:
            - cast
          type: string
        parent_author:
          properties:
            fid:
              allOf:
                - $ref: '#/components/schemas/Fid'
              nullable: true
          required:
            - fid
          type: object
        parent_hash:
          nullable: true
          type: string
        parent_url:
          nullable: true
          type: string
        reactions:
          $ref: '#/components/schemas/CastReactions'
        replies:
          $ref: '#/components/schemas/CastReplies'
        root_parent_url:
          nullable: true
          type: string
        text:
          type: string
        thread_hash:
          nullable: true
          type: string
        timestamp:
          format: date-time
          type: string
        type:
          $ref: '#/components/schemas/CastNotificationType'
        viewer_context:
          $ref: '#/components/schemas/CastViewerContext'
      required:
        - object
        - hash
        - parent_hash
        - parent_url
        - root_parent_url
        - parent_author
        - author
        - text
        - timestamp
        - embeds
        - reactions
        - replies
        - thread_hash
        - mentioned_profiles
        - mentioned_profiles_ranges
        - mentioned_channels
        - mentioned_channels_ranges
        - channel
      title: Cast
      type: object
    CastAndConversations:
      properties:
        app:
          allOf:
            - $ref: '#/components/schemas/UserDehydrated'
          nullable: true
        author:
          $ref: '#/components/schemas/User'
        author_channel_context:
          $ref: '#/components/schemas/ChannelUserContext'
        channel:
          allOf:
            - $ref: '#/components/schemas/ChannelOrChannelDehydrated'
          nullable: true
        direct_replies:
          description: 'note: This is recursive. It contains the direct replies to the cast and their direct replies up to n reply_depth.'
          items:
            $ref: '#/components/schemas/CastAndConversationsRef'
          type: array
        embeds:
          items:
            $ref: '#/components/schemas/Embed'
          type: array
        hash:
          type: string
        mentioned_channels:
          items:
            $ref: '#/components/schemas/ChannelDehydrated'
          type: array
        mentioned_channels_ranges:
          description: |-
            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.
          items:
            $ref: '#/components/schemas/TextRange'
          type: array
        mentioned_profiles:
          items:
            $ref: '#/components/schemas/User'
          type: array
        mentioned_profiles_ranges:
          description: |-
            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.
          items:
            $ref: '#/components/schemas/TextRange'
          type: array
        object:
          enum:
            - cast
          type: string
        parent_author:
          properties:
            fid:
              allOf:
                - $ref: '#/components/schemas/Fid'
              nullable: true
          required:
            - fid
          type: object
        parent_hash:
          nullable: true
          type: string
        parent_url:
          nullable: true
          type: string
        reactions:
          $ref: '#/components/schemas/CastReactions'
        replies:
          $ref: '#/components/schemas/CastReplies'
        root_parent_url:
          nullable: true
          type: string
        text:
          type: string
        thread_hash:
          nullable: true
          type: string
        timestamp:
          format: date-time
          type: string
        type:
          $ref: '#/components/schemas/CastNotificationType'
        viewer_context:
          $ref: '#/components/schemas/CastViewerContext'
      required:
        - object
        - hash
        - parent_hash
        - parent_url
        - root_parent_url
        - parent_author
        - author
        - text
        - timestamp
        - embeds
        - reactions
        - replies
        - thread_hash
        - mentioned_profiles
        - mentioned_profiles_ranges
        - mentioned_channels
        - mentioned_channels_ranges
        - channel
        - direct_replies
      title: CastAndConversations
      type: object
    CastAndConversationsRef:
      description: Reference to CastAndConversations to avoid circular reference
      properties:
        app:
          allOf:
            - $ref: '#/components/schemas/UserDehydrated'
          nullable: true
        author:
          $ref: '#/components/schemas/User'
        author_channel_context:
          $ref: '#/components/schemas/ChannelUserContext'
        channel:
          allOf:
            - $ref: '#/components/schemas/ChannelOrChannelDehydrated'
          nullable: true
        direct_replies:
          description: 'note: This is recursive. It contains the direct replies to the cast and their direct replies up to n reply_depth.'
          items:
            properties: {}
            type: object
          type: array
        embeds:
          items:
            $ref: '#/components/schemas/Embed'
          type: array
        hash:
          type: string
        mentioned_channels:
          items:
            $ref: '#/components/schemas/ChannelDehydrated'
          type: array
        mentioned_channels_ranges:
          description: |-
            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.
          items:
            $ref: '#/components/schemas/TextRange'
          type: array
        mentioned_profiles:
          items:
            $ref: '#/components/schemas/User'
          type: array
        mentioned_profiles_ranges:
          description: |-
            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.
          items:
            $ref: '#/components/schemas/TextRange'
          type: array
        object:
          enum:
            - cast
          type: string
        parent_author:
          properties:
            fid:
              allOf:
                - $ref: '#/components/schemas/Fid'
              nullable: true
          required:
            - fid
          type: object
        parent_hash:
          nullable: true
          type: string
        parent_url:
          nullable: true
          type: string
        reactions:
          $ref: '#/components/schemas/CastReactions'
        replies:
          $ref: '#/components/schemas/CastReplies'
        root_parent_url:
          nullable: true
          type: string
        text:
          type: string
        thread_hash:
          nullable: true
          type: string
        timestamp:
          format: date-time
          type: string
        type:
          $ref: '#/components/schemas/CastNotificationType'
        viewer_context:
          $ref: '#/components/schemas/CastViewerContext'
      required:
        - object
        - hash
        - parent_hash
        - parent_url
        - root_parent_url
        - parent_author
        - author
        - text
        - timestamp
        - embeds
        - reactions
        - replies
        - thread_hash
        - mentioned_profiles
        - mentioned_profiles_ranges
        - mentioned_channels
        - mentioned_channels_ranges
        - channel
        - direct_replies
      title: CastAndConversationsRef
      type: object
    CastDehydrated:
      properties:
        app:
          allOf:
            - $ref: '#/components/schemas/UserDehydrated'
          nullable: true
        author:
          $ref: '#/components/schemas/UserDehydrated'
        hash:
          type: string
        object:
          enum:
            - cast_dehydrated
          type: string
      required:
        - object
        - hash
      title: CastDehydrated
      type: object
    CastEmbedCrawlResponse:
      properties:
        metadata:
          $ref: '#/components/schemas/EmbedUrlMetadata'
      required:
        - metadata
      title: CastEmbedCrawlResponse
      type: object
    CastEmbedded:
      properties:
        app:
          allOf:
            - $ref: '#/components/schemas/UserDehydrated'
          nullable: true
        author:
          $ref: '#/components/schemas/UserDehydrated'
        channel:
          allOf:
            - $ref: '#/components/schemas/ChannelDehydrated'
          nullable: true
        embeds:
          items:
            $ref: '#/components/schemas/EmbedDeep'
          type: array
        hash:
          type: string
        parent_author:
          properties:
            fid:
              allOf:
                - $ref: '#/components/schemas/Fid'
              nullable: true
          required:
            - fid
          type: object
        parent_hash:
          nullable: true
          type: string
        parent_url:
          nullable: true
          type: string
        root_parent_url:
          nullable: true
          type: string
        text:
          type: string
        timestamp:
          format: date-time
          type: string
      required:
        - hash
        - parent_hash
        - parent_url
        - root_parent_url
        - parent_author
        - author
        - text
        - timestamp
        - embeds
        - channel
      title: CastEmbedded
      type: object
    CastId:
      deprecated: true
      description: '[DEPRECATED: Use "cast" key instead]'
      properties:
        fid:
          $ref: '#/components/schemas/Fid'
        hash:
          type: string
      required:
        - fid
        - hash
      title: CastId
      type: object
    CastNotificationType:
      description: The notification type of a cast.
      enum:
        - cast-mention
        - cast-reply
      title: CastNotificationType
      type: string
    CastParent:
      description: parent_url of the channel the cast is in, or hash of the cast
      title: CastParent
      type: string
    CastReactions:
      properties:
        likes:
          deprecated: true
          description: This has been deprecated and will always be an empty array. The property will be removed in the future
          items:
            $ref: '#/components/schemas/ReactionLike'
          type: array
        likes_count:
          format: int32
          type: integer
        recasts:
          deprecated: true
          description: This has been deprecated and will always be an empty array. The property will be removed in the future
          items:
            $ref: '#/components/schemas/ReactionRecast'
          type: array
        recasts_count:
          format: int32
          type: integer
      required:
        - likes
        - recasts
        - likes_count
        - recasts_count
      title: CastReactions
      type: object
    CastReplies:
      properties:
        count:
          format: int32
          type: integer
      required:
        - count
      title: CastReplies
      type: object
    CastResponse:
      properties:
        cast:
          $ref: '#/components/schemas/Cast'
      required:
        - cast
      title: CastResponse
      type: object
    CastViewerContext:
      description: Adds context on interactions the viewer has made with the cast.
      properties:
        liked:
          description: Indicates if the viewer liked the cast.
          type: boolean
        recasted:
          description: Indicates if the viewer recasted the cast.
          type: boolean
      required:
        - liked
        - recasted
      title: CastViewerContext
      type: object
    CastsMetrics:
      properties:
        cast_count:
          format: int32
          type: integer
        resolution_in_seconds:
          format: int32
          type: integer
        start:
          format: date-time
          type: string
      required:
        - start
        - resolution_in_seconds
        - cast_count
      title: CastsMetrics
      type: object
    CastsMetricsResponse:
      properties:
        metrics:
          items:
            $ref: '#/components/schemas/CastsMetrics'
          type: array
      required:
        - metrics
      title: CastsMetricsResponse
      type: object
    CastsResponse:
      properties:
        result:
          properties:
            casts:
              items:
                $ref: '#/components/schemas/Cast'
              type: array
          required:
            - casts
          type: object
      required:
        - result
      title: CastsResponse
      type: object
    CastsSearchResponse:
      properties:
        result:
          properties:
            casts:
              items:
                $ref: '#/components/schemas/Cast'
              type: array
            next:
              $ref: '#/components/schemas/NextCursor'
          required:
            - casts
            - next
          type: object
      required:
        - result
      title: CastsSearchResponse
      type: object
    Channel:
      properties:
        created_at:
          format: date-time
          type: string
        description:
          type: string
        description_mentioned_profiles:
          items:
            $ref: '#/components/schemas/UserDehydrated'
          type: array
        description_mentioned_profiles_ranges:
          description: Positions within the text (inclusive start, exclusive end) where each mention occurs.
          items:
            $ref: '#/components/schemas/TextRange'
          type: array
        external_link:
          description: Channel's external link.
          properties:
            title:
              type: string
            url:
              type: string
          type: object
        follower_count:
          description: Number of followers the channel has.
          type: number
        hosts:
          deprecated: true
          items:
            $ref: '#/components/schemas/User'
          type: array
        id:
          type: string
        image_url:
          type: string
        lead:
          $ref: '#/components/schemas/User'
        member_count:
          format: int32
          type: integer
        moderator:
          allOf:
            - $ref: '#/components/schemas/User'
          deprecated: true
          description: Use `lead` instead.
        moderator_fids:
          items:
            $ref: '#/components/schemas/Fid'
          type: array
        name:
          type: string
        object:
          enum:
            - channel
          type: string
        parent_url:
          format: uri
          type: string
        pinned_cast_hash:
          example: '0x71d5225f77e0164388b1d4c120825f3a2c1f131c'
          pattern: ^(0x)?[a-fA-F0-9]{40}$
          type: string
        url:
          type: string
        viewer_context:
          $ref: '#/components/schemas/ChannelUserContext'
      required:
        - id
        - url
        - object
        - created_at
      title: Channel
      type: object
    ChannelActivity:
      properties:
        cast_count_1d:
          type: string
        cast_count_30d:
          type: string
        cast_count_7d:
          type: string
        channel:
          $ref: '#/components/schemas/Channel'
        object:
          enum:
            - channel_activity
          type: string
      required:
        - object
        - cast_count_1d
        - cast_count_7d
        - cast_count_30d
        - channel
      title: ChannelActivity
      type: object
    ChannelDehydrated:
      properties:
        id:
          type: string
        image_url:
          type: string
        name:
          type: string
        object:
          enum:
            - channel_dehydrated
          type: string
        viewer_context:
          $ref: '#/components/schemas/ChannelUserContext'
      required:
        - id
        - name
        - object
      title: ChannelDehydrated
      type: object
    ChannelFollowReqBody:
      properties:
        channel_id:
          $ref: '#/components/schemas/ChannelId'
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
      required:
        - signer_uuid
        - channel_id
      title: ChannelFollowReqBody
      type: object
    ChannelId:
      description: The unique identifier of a farcaster channel
      example: neynar
      title: ChannelId
      type: string
    ChannelListResponse:
      properties:
        channels:
          items:
            $ref: '#/components/schemas/Channel'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - channels
      title: ChannelListResponse
      type: object
    ChannelMember:
      properties:
        channel:
          discriminator:
            mapping:
              channel: '#/components/schemas/Channel'
              channel_dehydrated: '#/components/schemas/ChannelDehydrated'
            propertyName: object
          oneOf:
            - $ref: '#/components/schemas/Channel'
            - $ref: '#/components/schemas/ChannelDehydrated'
          type: object
        object:
          enum:
            - member
          type: string
        role:
          $ref: '#/components/schemas/ChannelMemberRole'
        user:
          discriminator:
            mapping:
              user: '#/components/schemas/User'
              user_dehydrated: '#/components/schemas/UserDehydrated'
            propertyName: object
          oneOf:
            - $ref: '#/components/schemas/UserDehydrated'
            - $ref: '#/components/schemas/User'
          type: object
      required:
        - object
        - role
        - user
        - channel
      title: ChannelMember
      type: object
    ChannelMemberInvite:
      properties:
        channel_id:
          $ref: '#/components/schemas/ChannelId'
        invited:
          $ref: '#/components/schemas/User'
        inviter:
          $ref: '#/components/schemas/User'
        role:
          $ref: '#/components/schemas/ChannelMemberRole'
      required:
        - channel_id
        - role
        - inviter
        - invited
      title: ChannelMemberInvite
      type: object
    ChannelMemberInviteListResponse:
      properties:
        invites:
          items:
            $ref: '#/components/schemas/ChannelMemberInvite'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - invites
      title: ChannelMemberInviteListResponse
      type: object
    ChannelMemberListResponse:
      properties:
        members:
          items:
            $ref: '#/components/schemas/ChannelMember'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - members
        - next
      title: ChannelMemberListResponse
      type: object
    ChannelMemberRole:
      description: The role of a channel member
      enum:
        - member
        - moderator
        - owner
      title: ChannelMemberRole
      type: string
    ChannelOrChannelDehydrated:
      discriminator:
        mapping:
          channel: '#/components/schemas/Channel'
          channel_dehydrated: '#/components/schemas/ChannelDehydrated'
        propertyName: object
      oneOf:
        - $ref: '#/components/schemas/Channel'
        - $ref: '#/components/schemas/ChannelDehydrated'
      title: ChannelOrChannelDehydrated
      type: object
    ChannelResponse:
      properties:
        channel:
          $ref: '#/components/schemas/Channel'
      required:
        - channel
      title: ChannelResponse
      type: object
    ChannelResponseBulk:
      properties:
        channels:
          items:
            $ref: '#/components/schemas/Channel'
          type: array
      required:
        - channels
      title: ChannelResponseBulk
      type: object
    ChannelSearchResponse:
      properties:
        channels:
          items:
            $ref: '#/components/schemas/Channel'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - channels
        - next
      title: ChannelSearchResponse
      type: object
    ChannelUserContext:
      description: Adds context on the viewer's or author's role in the channel.
      properties:
        following:
          description: Indicates if the user is following the channel.
          type: boolean
        role:
          $ref: '#/components/schemas/ChannelMemberRole'
      required:
        - following
      title: ChannelUserContext
      type: object
    ConflictErrorRes:
      description: Details for the conflict error response
      properties:
        code:
          type: string
        key:
          type: string
        message:
          type: string
        property:
          type: string
      required:
        - message
      title: ConflictErrorRes
      type: object
    Conversation:
      properties:
        conversation:
          properties:
            cast:
              $ref: '#/components/schemas/CastAndConversations'
            chronological_parent_casts:
              items:
                $ref: '#/components/schemas/Cast'
              type: array
          required:
            - cast
          type: object
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - conversation
      title: Conversation
      type: object
    ConversationSummary:
      properties:
        summary:
          properties:
            mentioned_profiles:
              description: Users who were mentioned in a conversation thread
              items:
                $ref: '#/components/schemas/User'
              type: array
            participants:
              description: Users who casted in a conversation thread
              items:
                $ref: '#/components/schemas/User'
              type: array
            text:
              description: Summary generated by an LLM
              type: string
          required:
            - text
            - participants
            - mentioned_profiles
          type: object
      required:
        - summary
      title: ConversationSummary
      type: object
    DeleteCastReqBody:
      properties:
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
        target_hash:
          example: '0x71d5225f77e0164388b1d4c120825f3a2c1f131c'
          pattern: ^(0x)?[a-fA-F0-9]{40}$
          type: string
      required:
        - signer_uuid
        - target_hash
      title: DeleteCastReqBody
      type: object
    DeployFungibleReqBody:
      properties:
        factory:
          default: wow
          description: |-
            Factory name
            - wow -> [wow.xyz](https://wow.xyz)
            - clanker -> [clanker.world](https://www.clanker.world)
          enum:
            - wow
            - clanker
          type: string
        metadata[description]:
          description: Description of the token
          type: string
        metadata[discord]:
          description: Discord server link
          type: string
        metadata[media]:
          description: "Media file associated with the token. \nSupported formats are image/jpeg, image/gif and image/png"
          format: binary
          nullable: true
          type: string
        metadata[nsfw]:
          description: Indicates if the token is NSFW (Not Safe For Work).
          enum:
            - 'true'
            - 'false'
          type: string
        metadata[telegram]:
          description: Telegram link
          type: string
        metadata[twitter]:
          description: Twitter profile link
          type: string
        metadata[website_link]:
          description: Website link related to the token
          type: string
        name:
          description: Name of the token
          type: string
        network:
          default: base
          description: Network/Chain name
          enum:
            - base
          type: string
        owner:
          description: Ethereum address of the one who is creating the token
          type: string
        symbol:
          description: Symbol/Ticker for the token
          type: string
      required:
        - owner
        - symbol
        - name
      title: DeployFungibleReqBody
      type: object
    DeployFungibleResponse:
      properties:
        contract:
          properties:
            fungible:
              properties:
                address:
                  description: Contract address of the token
                  type: string
                decimals:
                  description: Decimal precision of the token
                  type: integer
                media:
                  description: URI of the token media
                  type: string
                name:
                  description: Name of the token
                  type: string
                object:
                  example: fungible
                  type: string
                symbol:
                  description: Symbol of the token
                  type: string
              type: object
          type: object
      title: DeployFungibleResponse
      type: object
    DeveloperManagedSigner:
      properties:
        fid:
          $ref: '#/components/schemas/Fid'
        public_key:
          $ref: '#/components/schemas/Ed25519PublicKey'
        signer_approval_url:
          type: string
        status:
          enum:
            - pending_approval
            - approved
            - revoked
          type: string
      required:
        - public_key
        - status
      title: DeveloperManagedSigner
      type: object
    Ed25519PublicKey:
      description: Ed25519 public key
      example: '0x3daa8f99c5f760688a3c9f95716ed93dee5ed5d7722d776b7c4deac957755f22'
      pattern: ^0x[a-fA-F0-9]{64}$
      title: Ed25519PublicKey
      type: string
    Embed:
      anyOf:
        - $ref: '#/components/schemas/EmbedCast'
        - $ref: '#/components/schemas/EmbedUrl'
      title: Embed
    EmbedCast:
      properties:
        cast:
          $ref: '#/components/schemas/CastEmbedded'
        cast_id:
          $ref: '#/components/schemas/CastId'
      required:
        - cast
      title: EmbedCast
      type: object
    EmbedCastDeep:
      properties:
        cast:
          $ref: '#/components/schemas/CastDehydrated'
        cast_id:
          $ref: '#/components/schemas/CastId'
      required:
        - cast
      title: EmbedCastDeep
      type: object
    EmbedDeep:
      anyOf:
        - $ref: '#/components/schemas/EmbedCastDeep'
        - $ref: '#/components/schemas/EmbedUrl'
      title: EmbedDeep
    EmbedUrl:
      properties:
        metadata:
          $ref: '#/components/schemas/EmbedUrlMetadata'
        url:
          type: string
      required:
        - url
      title: EmbedUrl
      type: object
    EmbedUrlMetadata:
      properties:
        _status:
          type: string
        content_length:
          nullable: true
          type: integer
        content_type:
          nullable: true
          type: string
        frame:
          $ref: '#/components/schemas/Frame'
        html:
          $ref: '#/components/schemas/HtmlMetadata'
        image:
          properties:
            height_px:
              type: integer
            width_px:
              type: integer
          type: object
        video:
          properties:
            duration_s:
              type: number
            stream:
              items:
                properties:
                  codec_name:
                    type: string
                  height_px:
                    type: integer
                  width_px:
                    type: integer
                type: object
              type: array
          type: object
      required:
        - _status
      title: EmbedUrlMetadata
      type: object
    EncodedJsonFarcasterSignature:
      description: Encoded JSON Farcaster signature
      properties:
        header:
          type: string
        payload:
          type: string
        signature:
          type: string
      required:
        - header
        - payload
        - signature
      title: EncodedJsonFarcasterSignature
      type: object
    ErrorRes:
      description: Details for the error response
      properties:
        code:
          type: string
        message:
          type: string
        property:
          type: string
        status:
          format: int32
          type: integer
      required:
        - message
      title: ErrorRes
      type: object
    EthAddress:
      description: Ethereum address
      example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
      pattern: ^0x[a-fA-F0-9]{40}$
      title: EthAddress
      type: string
    FarcasterActionReqBody:
      properties:
        action:
          properties:
            payload:
              description: The payload of the action being performed.
              properties: {}
              type: object
            type:
              description: The type of action being performed.
              example: create.user
              type: string
          required:
            - type
          type: object
        base_url:
          description: The base URL of the app on which the action is being performed.
          example: https://example.com
          format: uri
          type: string
        signer_uuid:
          description: The signer_uuid of the user on behalf of whom the action is being performed.
          example: 123e4567-e89b-12d3-a456-426614174000
          format: uuid
          type: string
      required:
        - signer_uuid
        - base_url
        - action
      title: FarcasterActionReqBody
      type: object
    FarcasterFungible:
      properties:
        cast_count:
          description: The total number of comments on the token
          type: integer
        fungible:
          $ref: '#/components/schemas/Fungible'
        object:
          enum:
            - farcaster_fungible
          type: string
      required:
        - object
        - fungible
        - cast_count
      title: FarcasterFungible
      type: object
    FarcasterManifest:
      properties:
        account_association:
          $ref: '#/components/schemas/EncodedJsonFarcasterSignature'
        frame:
          properties:
            button_title:
              type: string
            description:
              description: Detailed description of the configuration
              type: string
            hero_image_url:
              description: URL of the hero image displayed for the configuration
              format: uri
              type: string
            home_url:
              type: string
            icon_url:
              type: string
            image_url:
              type: string
            name:
              type: string
            noindex:
              description: Whether search engines should not index this configuration
              type: boolean
            og_description:
              description: Description used for Open Graph previews
              type: string
            og_image_url:
              description: Image URL used for Open Graph previews
              format: uri
              type: string
            og_title:
              description: Title used for Open Graph previews
              type: string
            primary_category:
              description: Primary category the configuration belongs to
              type: string
            screenshot_urls:
              description: URLs of screenshots showcasing the configuration
              items:
                format: uri
                type: string
              type: array
            splash_background_color:
              type: string
            splash_image_url:
              type: string
            subtitle:
              description: Short subtitle for the configuration
              type: string
            tagline:
              description: Short tagline for the configuration
              type: string
            tags:
              description: Tags associated with the configuration
              items:
                type: string
              type: array
            version:
              enum:
                - '1'
                - 0.0.0
                - 0.0.1
                - next
              type: string
            webhook_url:
              type: string
          required:
            - version
            - name
            - home_url
            - icon_url
          type: object
        miniapp:
          properties:
            button_title:
              type: string
            description:
              description: Detailed description of the configuration
              type: string
            hero_image_url:
              description: URL of the hero image displayed for the configuration
              format: uri
              type: string
            home_url:
              type: string
            icon_url:
              type: string
            image_url:
              type: string
            name:
              type: string
            noindex:
              description: Whether search engines should not index this configuration
              type: boolean
            og_description:
              description: Description used for Open Graph previews
              type: string
            og_image_url:
              description: Image URL used for Open Graph previews
              format: uri
              type: string
            og_title:
              description: Title used for Open Graph previews
              type: string
            primary_category:
              description: Primary category the configuration belongs to
              type: string
            screenshot_urls:
              description: URLs of screenshots showcasing the configuration
              items:
                format: uri
                type: string
              type: array
            splash_background_color:
              type: string
            splash_image_url:
              type: string
            subtitle:
              description: Short subtitle for the configuration
              type: string
            tagline:
              description: Short tagline for the configuration
              type: string
            tags:
              description: Tags associated with the configuration
              items:
                type: string
              type: array
            version:
              enum:
                - '1'
                - 0.0.0
                - 0.0.1
                - next
              type: string
            webhook_url:
              type: string
          required:
            - version
            - name
            - home_url
            - icon_url
          type: object
      required:
        - account_association
      title: FarcasterManifest
      type: object
    FeedResponse:
      properties:
        casts:
          items:
            $ref: '#/components/schemas/Cast'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - casts
        - next
      title: FeedResponse
      type: object
    Fid:
      description: The unique identifier of a farcaster user or app (unsigned integer)
      example: 3
      format: int32
      minimum: 0
      title: Fid
      type: integer
    FnameAvailabilityResponse:
      properties:
        available:
          type: boolean
      required:
        - available
      title: FnameAvailabilityResponse
      type: object
    FollowReqBody:
      properties:
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
        target_fids:
          example:
            - 194
            - 3
          items:
            minimum: 1
            type: integer
          maxItems: 100
          type: array
      required:
        - signer_uuid
        - target_fids
      title: FollowReqBody
      type: object
    FollowResponse:
      properties:
        hash:
          type: string
        success:
          type: boolean
        target_fid:
          $ref: '#/components/schemas/Fid'
      required:
        - success
        - target_fid
        - hash
      title: FollowResponse
      type: object
    Follower:
      properties:
        app:
          $ref: '#/components/schemas/UserDehydrated'
        object:
          enum:
            - follower
          type: string
        user:
          $ref: '#/components/schemas/User'
      required:
        - object
        - user
      title: Follower
      type: object
    FollowerDehydrated:
      properties:
        object:
          enum:
            - follower_dehydrated
          type: string
        user:
          $ref: '#/components/schemas/UserDehydrated'
      required:
        - object
        - user
      title: FollowerDehydrated
      type: object
    FollowersResponse:
      properties:
        next:
          $ref: '#/components/schemas/NextCursor'
        users:
          items:
            $ref: '#/components/schemas/Follower'
          type: array
      required:
        - users
        - next
      title: FollowersResponse
      type: object
    Frame:
      anyOf:
        - $ref: '#/components/schemas/FrameV1'
        - $ref: '#/components/schemas/FrameV2'
      discriminator:
        mapping:
          '1': '#/components/schemas/FrameV2'
          0.0.0: '#/components/schemas/FrameV2'
          0.0.1: '#/components/schemas/FrameV2'
          next: '#/components/schemas/FrameV2'
          vNext: '#/components/schemas/FrameV1'
        propertyName: version
      title: Frame
    FrameActionButton:
      properties:
        action_type:
          $ref: '#/components/schemas/FrameButtonActionType'
        index:
          description: Index of the button
          type: integer
        post_url:
          description: Used specifically for the tx action type to post a successful transaction hash
          type: string
        target:
          description: Target of the button
          type: string
        title:
          description: Title of the button
          type: string
      required:
        - index
        - action_type
      title: FrameActionButton
      type: object
    FrameButtonActionType:
      description: The action type of a mini app button. Action types "mint" & "link" are to be handled on the client side only and so they will produce a no/op for POST /farcaster/frame/action.
      enum:
        - post
        - post_redirect
        - tx
        - link
        - mint
      title: FrameButtonActionType
      type: string
    FrameCatalogResponse:
      properties:
        frames:
          items:
            $ref: '#/components/schemas/FrameV2WithFullAuthor'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - frames
        - next
      title: FrameCatalogResponse
      type: object
    FrameNotificationTokens:
      properties:
        next:
          $ref: '#/components/schemas/NextCursor'
        notification_tokens:
          items:
            properties:
              created_at:
                format: date-time
                type: string
              fid:
                $ref: '#/components/schemas/Fid'
              object:
                enum:
                  - notification_token
                type: string
              status:
                enum:
                  - enabled
                  - disabled
                  - invalid
                type: string
              token:
                type: string
              updated_at:
                format: date-time
                type: string
              url:
                type: string
            type: object
          type: array
      required:
        - notification_tokens
        - next
      title: FrameNotificationTokens
      type: object
    FramePayTransactionReqBody:
      properties:
        config:
          $ref: '#/components/schemas/TransactionFrameConfig'
        idem:
          $ref: '#/components/schemas/Idem'
        transaction:
          properties:
            to:
              $ref: '#/components/schemas/TransactionFrameDestination'
          required:
            - to
          type: object
      required:
        - transaction
        - config
      title: FramePayTransactionReqBody
      type: object
    FrameV1:
      description: Mini app v1 object
      properties:
        buttons:
          items:
            $ref: '#/components/schemas/FrameActionButton'
          type: array
        frames_url:
          description: Launch URL of the mini app
          type: string
        image:
          description: URL of the image
          type: string
        image_aspect_ratio:
          type: string
        input:
          properties:
            text:
              description: Input text for the mini app
              type: string
          type: object
        post_url:
          description: Post URL to take an action on this mini app
          type: string
        state:
          properties:
            serialized:
              description: State for the mini app in a serialized format
              type: string
          type: object
        title:
          type: string
        version:
          description: Version of the mini app, 'next' for v2, 'vNext' for v1
          type: string
      required:
        - version
        - image
        - frames_url
      title: FrameV1
      type: object
    FrameV2:
      description: Mini app v2 object
      properties:
        author:
          $ref: '#/components/schemas/UserDehydrated'
        frames_url:
          description: Launch URL of the mini app
          type: string
        image:
          description: URL of the image
          type: string
        manifest:
          $ref: '#/components/schemas/FarcasterManifest'
        metadata:
          properties:
            html:
              $ref: '#/components/schemas/HtmlMetadata'
          required:
            - html
          type: object
        title:
          description: Button title of a mini app
          type: string
        version:
          description: Version of the mini app, 'next' for v2, 'vNext' for v1
          type: string
      required:
        - version
        - image
        - frames_url
      title: FrameV2
      type: object
    FrameV2WithFullAuthor:
      description: Mini app v2 object with full user object
      properties:
        author:
          $ref: '#/components/schemas/User'
        frames_url:
          description: Launch URL of the mini app
          type: string
        image:
          description: URL of the image
          type: string
        manifest:
          $ref: '#/components/schemas/FarcasterManifest'
        metadata:
          properties:
            html:
              $ref: '#/components/schemas/HtmlMetadata'
          required:
            - html
          type: object
        title:
          description: Button title of a mini app
          type: string
        version:
          description: Version of the mini app, 'next' for v2, 'vNext' for v1
          type: string
      required:
        - version
        - image
        - frames_url
      title: FrameV2WithFullAuthor
      type: object
    Fungible:
      properties:
        address:
          description: The contract address of the token
          type: string
        decimals:
          description: The number of decimals the token uses
          type: integer
        logo:
          description: The logo URL of the token
          nullable: true
          type: string
        name:
          description: The token name e.g. "Ethereum"
          type: string
        network:
          $ref: '#/components/schemas/Network'
        object:
          enum:
            - fungible
          type: string
        symbol:
          description: The token symbol e.g. "ETH"
          type: string
        total_supply:
          description: The total supply of the token
          nullable: true
          type: string
      required:
        - object
        - network
        - name
        - symbol
        - address
        - decimals
        - total_supply
        - logo
      title: Fungible
      type: object
    FungibleBalance:
      properties:
        balance:
          properties:
            in_token:
              type: string
            in_usd:
              nullable: true
              type: number
          required:
            - in_usd
            - in_token
          type: object
        object:
          enum:
            - fungible_balance
          type: string
        token:
          $ref: '#/components/schemas/Fungible'
      required:
        - object
        - token
        - balance
      title: FungibleBalance
      type: object
    FungiblesResponseSchema:
      description: Response containing fungible details
      properties:
        fungibles:
          items:
            $ref: '#/components/schemas/FarcasterFungible'
          type: array
      required:
        - fungibles
      title: FungiblesResponseSchema
      type: object
    HtmlMetadata:
      properties:
        favicon:
          type: string
        modifiedTime:
          type: string
        oembed:
          discriminator:
            mapping:
              link: '#/components/schemas/OembedLinkData'
              photo: '#/components/schemas/OembedPhotoData'
              rich: '#/components/schemas/OembedRichData'
              video: '#/components/schemas/OembedVideoData'
            propertyName: type
          oneOf:
            - $ref: '#/components/schemas/OembedRichData'
            - $ref: '#/components/schemas/OembedVideoData'
            - $ref: '#/components/schemas/OembedPhotoData'
            - $ref: '#/components/schemas/OembedLinkData'
          type: object
        ogArticleAuthor:
          type: string
        ogArticleExpirationTime:
          type: string
        ogArticleModifiedTime:
          type: string
        ogArticlePublishedTime:
          type: string
        ogArticlePublisher:
          type: string
        ogArticleSection:
          type: string
        ogArticleTag:
          type: string
        ogAudio:
          type: string
        ogAudioSecureURL:
          type: string
        ogAudioType:
          type: string
        ogAudioURL:
          type: string
        ogAvailability:
          type: string
        ogDate:
          type: string
        ogDescription:
          type: string
        ogDeterminer:
          type: string
        ogEpisode:
          type: string
        ogImage:
          items:
            $ref: '#/components/schemas/ImageObject'
          type: array
        ogLocale:
          type: string
        ogLocaleAlternate:
          type: string
        ogLogo:
          type: string
        ogMovie:
          type: string
        ogPriceAmount:
          type: string
        ogPriceCurrency:
          type: string
        ogProductAvailability:
          type: string
        ogProductCondition:
          type: string
        ogProductPriceAmount:
          type: string
        ogProductPriceCurrency:
          type: string
        ogProductRetailerItemId:
          type: string
        ogSiteName:
          type: string
        ogTitle:
          type: string
        ogType:
          type: string
        ogUrl:
          type: string
        ogVideo:
          items:
            $ref: '#/components/schemas/VideoObject'
          type: array
        ogVideoActor:
          type: string
        ogVideoActorId:
          type: string
        ogVideoActorRole:
          type: string
        ogVideoDirector:
          type: string
        ogVideoDuration:
          type: string
        ogVideoOther:
          type: string
        ogVideoReleaseDate:
          type: string
        ogVideoSecureURL:
          type: string
        ogVideoSeries:
          type: string
        ogVideoTag:
          type: string
        ogVideoTvShow:
          type: string
        ogVideoWriter:
          type: string
        ogWebsite:
          type: string
        updatedTime:
          type: string
      title: HtmlMetadata
      type: object
    Idem:
      description: "An Idempotency key is a unique identifier for the request.\n**Note:** \n1) This is used to prevent duplicate requests. Use the same idem key on retry attempts.\n2) This should be a unique identifier for each request.\n3) Recommended format is a 16-character string generated by the developer at the time of making this request."
      title: Idem
      type: string
    ImageObject:
      properties:
        alt:
          type: string
        height:
          type: string
        type:
          type: string
        url:
          type: string
        width:
          type: string
      required:
        - url
      title: ImageObject
      type: object
    InviteChannelMemberReqBody:
      properties:
        channel_id:
          $ref: '#/components/schemas/ChannelId'
        fid:
          $ref: '#/components/schemas/Fid'
        role:
          $ref: '#/components/schemas/ChannelMemberRole'
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
      required:
        - signer_uuid
        - channel_id
        - fid
        - role
      title: InviteChannelMemberReqBody
      type: object
    Location:
      description: Coordinates and place names for a location
      properties:
        address:
          $ref: '#/components/schemas/LocationAddress'
        latitude:
          format: double
          maximum: 90
          minimum: -90
          type: number
        longitude:
          format: double
          maximum: 180
          minimum: -180
          type: number
        radius:
          description: The radius in meters for the location search. Any location within this radius will be returned.
          minimum: 0
          type: number
      required:
        - latitude
        - longitude
      title: Location
      type: object
    LocationAddress:
      properties:
        city:
          type: string
        country:
          type: string
        country_code:
          type: string
        state:
          type: string
        state_code:
          type: string
      required:
        - city
        - country
      title: LocationAddress
      type: object
    MarkNotificationsAsSeenReqBody:
      properties:
        signer_uuid:
          description: The UUID of a signer with at least one write permission.  Required unless a valid Authorization Bearer token is provided in the header.
          type: string
        type:
          $ref: '#/components/schemas/NotificationType'
      title: MarkNotificationsAsSeenReqBody
      type: object
    MiniappDomainResponse:
      description: Response containing domain information, metadata, and validation errors if any
      properties:
        created_at:
          description: Creation timestamp
          format: date-time
          type: string
        domain:
          description: Domain name
          type: string
        error_message:
          description: High-level error message if processing failed
          type: string
        fid:
          description: FID associated with the domain
          example: 3
          format: int32
          minimum: 0
          type: integer
        home_url_metadata:
          additionalProperties: {}
          description: Home URL metadata if available
          nullable: true
          type: object
        manifest:
          $ref: '#/components/schemas/FarcasterManifest'
        updated_at:
          description: Last update timestamp
          format: date-time
          type: string
        validation_errors:
          description: Validation errors from processing, if any
          items:
            type: string
          type: array
        was_found:
          description: Whether the domain was found in the table before processing
          type: boolean
        was_refreshed:
          description: Whether the domain was refreshed/updated during this request
          type: boolean
      required:
        - domain
        - fid
        - manifest
        - created_at
        - updated_at
        - was_found
        - was_refreshed
      title: MiniappDomainResponse
      type: object
    MuteListResponse:
      properties:
        mutes:
          items:
            $ref: '#/components/schemas/MuteRecord'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - mutes
        - next
      title: MuteListResponse
      type: object
    MuteRecord:
      properties:
        muted:
          $ref: '#/components/schemas/User'
        muted_at:
          format: date-time
          type: string
        object:
          enum:
            - mute
          type: string
      required:
        - object
        - muted
        - muted_at
      title: MuteRecord
      type: object
    MuteReqBody:
      properties:
        fid:
          $ref: '#/components/schemas/Fid'
        muted_fid:
          $ref: '#/components/schemas/Fid'
      required:
        - fid
        - muted_fid
      title: MuteReqBody
      type: object
    MuteResponse:
      properties:
        message:
          type: string
        success:
          example: true
          type: boolean
      required:
        - success
      title: MuteResponse
      type: object
    Network:
      description: A blockchain network e.g. "ethereum", "optimism", "base", "arbitrum", "robinhood"
      enum:
        - ethereum
        - optimism
        - base
        - arbitrum
        - robinhood
      title: Network
      type: string
    NextCursor:
      description: Returns next cursor
      properties:
        cursor:
          nullable: true
          type: string
      required:
        - cursor
      title: NextCursor
      type: object
    NonceResponse:
      properties:
        nonce:
          description: The nonce value to sign the message
          example: neynarbMi9zSDuOC1GFqixR
          type: string
      required:
        - nonce
      title: NonceResponse
      type: object
    Notification:
      properties:
        cast:
          $ref: '#/components/schemas/Cast'
        count:
          description: The number of notifications of this(follows, likes, recast) type bundled in a single notification.
          format: int32
          type: integer
        follows:
          items:
            $ref: '#/components/schemas/Follower'
          type: array
        most_recent_timestamp:
          format: date-time
          type: string
        object:
          enum:
            - notification
          type: string
        reactions:
          items:
            $ref: '#/components/schemas/ReactionWithUserInfo'
          type: array
        seen:
          type: boolean
        type:
          enum:
            - follows
            - recasts
            - likes
            - mention
            - reply
            - quote
          type: string
      required:
        - object
        - most_recent_timestamp
        - type
        - seen
      title: Notification
      type: object
    NotificationCampaign:
      properties:
        body:
          description: The body text of the notification.
          type: string
        completed_at:
          description: When the campaign reached a terminal state (completed/failed/canceled). Null while still queued or running.
          format: date-time
          nullable: true
          type: string
        created_at:
          format: date-time
          type: string
        id:
          description: The unique identifier for the notification campaign.
          format: uuid
          type: string
        queued_at:
          description: When the campaign was enqueued for async delivery.
          format: date-time
          type: string
        stats:
          $ref: '#/components/schemas/NotificationCampaignStats'
        status:
          description: Lifecycle status of the campaign. Absent on campaigns created before async delivery was introduced.
          enum:
            - queued
            - running
            - completed
            - failed
            - canceled
          type: string
        title:
          description: The title of the notification campaign.
          type: string
      required:
        - id
        - title
        - body
        - created_at
        - stats
      title: NotificationCampaign
      type: object
    NotificationCampaignStats:
      properties:
        error_breakdown:
          description: Detailed breakdown of errors encountered during notification delivery.
          properties:
            delivery_errors:
              additionalProperties:
                format: int32
                type: integer
              description: A record mapping delivery error types to their occurrence counts.
              type: object
            http_errors:
              additionalProperties:
                format: int32
                type: integer
              description: A record mapping HTTP status codes to their occurrence counts.
              type: object
          type: object
        intended_recipient_app_fids:
          description: An array of Farcaster FIDs of intended recipient applications.
          items:
            format: int32
            type: integer
          type: array
        intended_recipient_notification_token_count:
          description: The total number of notification tokens for intended recipients.
          format: int32
          type: integer
        successful_sends:
          description: The number of notifications successfully sent.
          format: int32
          type: integer
        successful_sends_by_app_fid:
          additionalProperties:
            format: int32
            type: integer
          description: A record mapping app FIDs (as strings) to the number of successful sends for that app.
          type: object
        total_opens:
          description: The total number of times notifications from this campaign have been opened.
          format: int32
          type: integer
        total_opens_by_app_fid:
          additionalProperties:
            format: int32
            type: integer
          description: A record mapping app FIDs (as strings) to the number of opens for that app.
          type: object
        unique_opens:
          description: The number of unique recipients who opened a notification from this campaign.
          format: int32
          type: integer
        unique_opens_by_app_fid:
          additionalProperties:
            format: int32
            type: integer
          description: A record mapping app FIDs (as strings) to the number of unique opens for that app.
          type: object
      required:
        - intended_recipient_notification_token_count
        - intended_recipient_app_fids
        - successful_sends
        - successful_sends_by_app_fid
        - total_opens
        - total_opens_by_app_fid
        - unique_opens
        - unique_opens_by_app_fid
        - error_breakdown
      title: NotificationCampaignStats
      type: object
    NotificationCampaignStatus:
      description: Always "queued" for a successful async enqueue.
      enum:
        - queued
        - running
        - completed
        - failed
        - canceled
      title: NotificationCampaignStatus
      type: string
    NotificationType:
      description: The type of notification to mark as seen. If not provided, all notifications will be marked as seen.
      enum:
        - follows
        - recasts
        - likes
        - mentions
        - replies
        - quotes
      title: NotificationType
      type: string
    NotificationsResponse:
      properties:
        next:
          $ref: '#/components/schemas/NextCursor'
        notifications:
          items:
            $ref: '#/components/schemas/Notification'
          type: array
        unseen_notifications_count:
          format: int32
          type: integer
      required:
        - unseen_notifications_count
        - notifications
        - next
      title: NotificationsResponse
      type: object
    OembedLinkData:
      description: Link OEmbed data
      properties:
        author_name:
          description: The name of the author/owner of the resource.
          nullable: true
          type: string
        author_url:
          description: A URL for the author/owner of the resource.
          nullable: true
          type: string
        cache_age:
          description: The suggested cache lifetime for this resource, in seconds. Consumers may choose to use this value or not.
          nullable: true
          type: string
        provider_name:
          description: The name of the resource provider.
          nullable: true
          type: string
        provider_url:
          description: The url of the resource provider.
          nullable: true
          type: string
        thumbnail_height:
          description: The height of the optional thumbnail. If this parameter is present, thumbnail_url and thumbnail_width must also be present.
          nullable: true
          type: number
        thumbnail_url:
          description: A URL to a thumbnail image representing the resource. The thumbnail must respect any maxwidth and maxheight parameters. If this parameter is present, thumbnail_width and thumbnail_height must also be present.
          nullable: true
          type: string
        thumbnail_width:
          description: The width of the optional thumbnail. If this parameter is present, thumbnail_url and thumbnail_height must also be present.
          nullable: true
          type: number
        title:
          description: A text title, describing the resource.
          nullable: true
          type: string
        type:
          enum:
            - link
          type: string
        version:
          nullable: true
          type: string
      required:
        - type
        - version
      title: OembedLinkData
      type: object
    OembedPhotoData:
      description: Photo OEmbed data
      properties:
        author_name:
          description: The name of the author/owner of the resource.
          nullable: true
          type: string
        author_url:
          description: A URL for the author/owner of the resource.
          nullable: true
          type: string
        cache_age:
          description: The suggested cache lifetime for this resource, in seconds. Consumers may choose to use this value or not.
          nullable: true
          type: string
        height:
          description: The height in pixels of the image specified in the url parameter.
          nullable: true
          type: number
        provider_name:
          description: The name of the resource provider.
          nullable: true
          type: string
        provider_url:
          description: The url of the resource provider.
          nullable: true
          type: string
        thumbnail_height:
          description: The height of the optional thumbnail. If this parameter is present, thumbnail_url and thumbnail_width must also be present.
          nullable: true
          type: number
        thumbnail_url:
          description: A URL to a thumbnail image representing the resource. The thumbnail must respect any maxwidth and maxheight parameters. If this parameter is present, thumbnail_width and thumbnail_height must also be present.
          nullable: true
          type: string
        thumbnail_width:
          description: The width of the optional thumbnail. If this parameter is present, thumbnail_url and thumbnail_height must also be present.
          nullable: true
          type: number
        title:
          description: A text title, describing the resource.
          nullable: true
          type: string
        type:
          enum:
            - photo
          type: string
        url:
          description: The source URL of the image. Consumers should be able to insert this URL into an <img> element. Only HTTP and HTTPS URLs are valid.
          nullable: true
          type: string
        version:
          nullable: true
          type: string
        width:
          description: The width in pixels of the image specified in the url parameter.
          nullable: true
          type: number
      required:
        - type
        - version
        - url
      title: OembedPhotoData
      type: object
    OembedRichData:
      description: Rich OEmbed data
      properties:
        author_name:
          description: The name of the author/owner of the resource.
          nullable: true
          type: string
        author_url:
          description: A URL for the author/owner of the resource.
          nullable: true
          type: string
        cache_age:
          description: The suggested cache lifetime for this resource, in seconds. Consumers may choose to use this value or not.
          nullable: true
          type: string
        height:
          description: The height in pixels required to display the HTML.
          nullable: true
          type: number
        html:
          description: The HTML required to display the resource. The HTML should have no padding or margins. Consumers may wish to load the HTML in an off-domain iframe to avoid XSS vulnerabilities. The markup should be valid XHTML 1.0 Basic.
          nullable: true
          type: string
        provider_name:
          description: The name of the resource provider.
          nullable: true
          type: string
        provider_url:
          description: The url of the resource provider.
          nullable: true
          type: string
        thumbnail_height:
          description: The height of the optional thumbnail. If this parameter is present, thumbnail_url and thumbnail_width must also be present.
          nullable: true
          type: number
        thumbnail_url:
          description: A URL to a thumbnail image representing the resource. The thumbnail must respect any maxwidth and maxheight parameters. If this parameter is present, thumbnail_width and thumbnail_height must also be present.
          nullable: true
          type: string
        thumbnail_width:
          description: The width of the optional thumbnail. If this parameter is present, thumbnail_url and thumbnail_height must also be present.
          nullable: true
          type: number
        title:
          description: A text title, describing the resource.
          nullable: true
          type: string
        type:
          enum:
            - rich
          type: string
        version:
          nullable: true
          type: string
        width:
          description: The width in pixels required to display the HTML.
          nullable: true
          type: number
      required:
        - type
        - version
        - html
      title: OembedRichData
      type: object
    OembedVideoData:
      description: Video OEmbed data
      properties:
        author_name:
          description: The name of the author/owner of the resource.
          nullable: true
          type: string
        author_url:
          description: A URL for the author/owner of the resource.
          nullable: true
          type: string
        cache_age:
          description: The suggested cache lifetime for this resource, in seconds. Consumers may choose to use this value or not.
          nullable: true
          type: string
        height:
          description: The height in pixels required to display the HTML.
          nullable: true
          type: number
        html:
          description: The HTML required to embed a video player. The HTML should have no padding or margins. Consumers may wish to load the HTML in an off-domain iframe to avoid XSS vulnerabilities.
          nullable: true
          type: string
        provider_name:
          description: The name of the resource provider.
          nullable: true
          type: string
        provider_url:
          description: The url of the resource provider.
          nullable: true
          type: string
        thumbnail_height:
          description: The height of the optional thumbnail. If this parameter is present, thumbnail_url and thumbnail_width must also be present.
          nullable: true
          type: number
        thumbnail_url:
          description: A URL to a thumbnail image representing the resource. The thumbnail must respect any maxwidth and maxheight parameters. If this parameter is present, thumbnail_width and thumbnail_height must also be present.
          nullable: true
          type: string
        thumbnail_width:
          description: The width of the optional thumbnail. If this parameter is present, thumbnail_url and thumbnail_height must also be present.
          nullable: true
          type: number
        title:
          description: A text title, describing the resource.
          nullable: true
          type: string
        type:
          enum:
            - video
          type: string
        version:
          nullable: true
          type: string
        width:
          description: The width in pixels required to display the HTML.
          nullable: true
          type: number
      required:
        - type
        - version
        - html
      title: OembedVideoData
      type: object
    OperationResponse:
      properties:
        message:
          type: string
        success:
          type: boolean
      title: OperationResponse
      type: object
    PostCastReqBody:
      properties:
        channel_id:
          description: Channel ID of the channel where the cast is to be posted. e.g. neynar, farcaster, warpcast
          example: neynar
          type: string
        embeds:
          items:
            $ref: '#/components/schemas/PostCastReqBodyEmbeds'
          maxItems: 2
          type: array
        idem:
          $ref: '#/components/schemas/Idem'
        parent:
          $ref: '#/components/schemas/CastParent'
        parent_author_fid:
          $ref: '#/components/schemas/Fid'
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
        text:
          type: string
      required:
        - signer_uuid
      title: PostCastReqBody
      type: object
    PostCastReqBodyEmbeds:
      additionalProperties: false
      anyOf:
        - additionalProperties: false
          properties:
            cast_id:
              $ref: '#/components/schemas/PostCastReqBodyEmbedsCastIdProperties'
          required:
            - cast_id
          type: object
        - additionalProperties: false
          properties:
            castId:
              $ref: '#/components/schemas/PostCastReqBodyEmbedsCastIdProperties'
          required:
            - castId
          type: object
        - additionalProperties: false
          properties:
            url:
              type: string
          required:
            - url
          type: object
      title: PostCastReqBodyEmbeds
    PostCastReqBodyEmbedsCastIdProperties:
      properties:
        fid:
          $ref: '#/components/schemas/Fid'
        hash:
          type: string
      required:
        - hash
        - fid
      title: PostCastReqBodyEmbedsCastIdProperties
      type: object
    PostCastResponse:
      properties:
        cast:
          properties:
            author:
              properties:
                fid:
                  $ref: '#/components/schemas/Fid'
              required:
                - fid
              type: object
            hash:
              example: '0x71d5225f77e0164388b1d4c120825f3a2c1f131c'
              pattern: ^(0x)?[a-fA-F0-9]{40}$
              type: string
            text:
              type: string
          required:
            - hash
            - author
            - text
          type: object
        success:
          type: boolean
      required:
        - success
        - cast
      title: PostCastResponse
      type: object
    PrefixedHexString:
      description: Hexadecimal number expressed as string with '0x' prefix
      pattern: ^0x[a-fA-F0-9]+$
      title: PrefixedHexString
      type: string
    Protocol:
      description: 'Blockchain protocol for the linked wallet: evm for Ethereum/EVM-compatible chains (Base, Optimism, etc.) and solana for Solana'
      enum:
        - evm
        - solana
      example: evm
      title: Protocol
      type: string
    PublishMessageReqBody:
      properties: {}
      title: PublishMessageReqBody
      type: object
    PublishMessageResponse:
      properties: {}
      title: PublishMessageResponse
      type: object
    QueuedFrameNotificationsResponse:
      properties:
        campaign_id:
          description: The unique identifier for the notification campaign.
          format: uuid
          type: string
        status:
          $ref: '#/components/schemas/NotificationCampaignStatus'
      required:
        - campaign_id
        - status
      title: QueuedFrameNotificationsResponse
      type: object
    ReactionForCast:
      properties:
        app:
          $ref: '#/components/schemas/UserDehydrated'
        object:
          enum:
            - likes
            - recasts
          type: string
        reaction_timestamp:
          format: date-time
          type: string
        reaction_type:
          $ref: '#/components/schemas/ReactionType'
        user:
          $ref: '#/components/schemas/User'
      required:
        - reaction_type
        - reaction_timestamp
        - object
        - user
      title: ReactionForCast
      type: object
    ReactionLike:
      properties:
        fid:
          $ref: '#/components/schemas/Fid'
        fname:
          type: string
      required:
        - fid
        - fname
      title: ReactionLike
      type: object
    ReactionRecast:
      properties:
        fid:
          $ref: '#/components/schemas/Fid'
        fname:
          type: string
      required:
        - fid
        - fname
      title: ReactionRecast
      type: object
    ReactionReqBody:
      properties:
        idem:
          $ref: '#/components/schemas/Idem'
        reaction_type:
          $ref: '#/components/schemas/ReactionType'
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
        target:
          description: Target cast hash (hex string starting with 0x) OR a valid URL.
          example: 0x3702ec1b298bb7ac6f00346432d959ad7b05b9a8 -OR- http://neynar.com/
          type: string
        target_author_fid:
          $ref: '#/components/schemas/Fid'
      required:
        - signer_uuid
        - reaction_type
        - target
      title: ReactionReqBody
      type: object
    ReactionType:
      enum:
        - like
        - recast
      title: ReactionType
      type: string
    ReactionWithCastInfo:
      properties:
        app:
          $ref: '#/components/schemas/UserDehydrated'
        cast:
          $ref: '#/components/schemas/Cast'
        object:
          enum:
            - likes
            - recasts
          type: string
        reaction_timestamp:
          format: date-time
          type: string
        reaction_type:
          enum:
            - like
            - recast
          type: string
        user:
          $ref: '#/components/schemas/UserDehydrated'
      required:
        - reaction_type
        - cast
        - reaction_timestamp
        - object
        - user
      title: ReactionWithCastInfo
      type: object
    ReactionWithUserInfo:
      properties:
        cast:
          $ref: '#/components/schemas/CastDehydrated'
        object:
          enum:
            - likes
            - recasts
          type: string
        user:
          $ref: '#/components/schemas/User'
      required:
        - object
        - cast
        - user
      title: ReactionWithUserInfo
      type: object
    ReactionsCastResponse:
      properties:
        next:
          $ref: '#/components/schemas/NextCursor'
        reactions:
          items:
            $ref: '#/components/schemas/ReactionForCast'
          type: array
      required:
        - reactions
        - next
      title: ReactionsCastResponse
      type: object
    ReactionsResponse:
      properties:
        next:
          $ref: '#/components/schemas/NextCursor'
        reactions:
          items:
            $ref: '#/components/schemas/ReactionWithCastInfo'
          type: array
      required:
        - reactions
        - next
      title: ReactionsResponse
      type: object
    ReciprocalFollower:
      properties:
        object:
          enum:
            - reciprocal_follower
          type: string
        timestamp:
          format: date-time
          type: string
        user:
          $ref: '#/components/schemas/User'
      required:
        - object
        - user
        - timestamp
      title: ReciprocalFollower
      type: object
    RegisterAuthAddressDeveloperManagedSignedKeyReqBody:
      properties:
        address:
          $ref: '#/components/schemas/EthAddress'
        app_fid:
          $ref: '#/components/schemas/Fid'
        deadline:
          description: unix timestamp in seconds that controls how long the signed key request is valid for. (24 hours from now is recommended)
          type: integer
        redirect_url:
          description: |-
            Url to redirect to after the signer is approved.
            **Note** : This should only be used when requesting a signer from a native mobile application.
          type: string
        signature:
          description: Signature generated by the custody address of the app. Signed data includes app_fid, deadline, 32 bytes padded auth address. [Refer guide for more details.](https://docs.neynar.com/docs/auth-address-signature-generation)
          example: '0x16161933625ac90b7201625bfea0d816de0449ea1802d97a38c53eef3c9c0c424fefbc5c6fb5eabe3d4f161a36d18cda585cff7e77c677c5d34a9c87e68ede011c'
          pattern: ^0x[a-fA-F0-9]+$
          type: string
        sponsor:
          $ref: '#/components/schemas/SignedKeyRequestSponsor'
      required:
        - address
        - app_fid
        - deadline
        - signature
      title: RegisterAuthAddressDeveloperManagedSignedKeyReqBody
      type: object
    RegisterDeveloperManagedSignedKeyReqBody:
      properties:
        app_fid:
          $ref: '#/components/schemas/Fid'
        deadline:
          description: unix timestamp in seconds that controls how long the signed key request is valid for. (24 hours from now is recommended)
          type: integer
        public_key:
          $ref: '#/components/schemas/Ed25519PublicKey'
        redirect_url:
          description: |-
            Url to redirect to after the signer is approved.
            **Note** : This should only be used when requesting a signer from a native mobile application.
          type: string
        signature:
          description: Signature generated by the custody address of the app. Signed data includes app_fid, deadline, signer's public key
          example: '0x7867e84cb6a64bf6e1954e52884133f1114eb3fd97f63ff55fa76c77c80beb6434eea9d3736b59caa3130d63121177acc752dc8a2561e9edf700642f390f92d11b'
          type: string
        sponsor:
          $ref: '#/components/schemas/SignedKeyRequestSponsor'
      required:
        - public_key
        - signature
        - app_fid
        - deadline
      title: RegisterDeveloperManagedSignedKeyReqBody
      type: object
    RegisterSignerKeyReqBody:
      properties:
        app_fid:
          $ref: '#/components/schemas/Fid'
        deadline:
          description: unix timestamp in seconds that controls how long the signed key request is valid for. (24 hours from now is recommended)
          type: integer
        redirect_url:
          description: |-
            Url to redirect to after the signer is approved.
            **Note** : This should only be used when requesting a signer from a native mobile application.
          type: string
        signature:
          description: Signature generated by the custody address of the app. Signed data includes app_fid, deadline, signer's public key
          type: string
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
        sponsor:
          $ref: '#/components/schemas/SignedKeyRequestSponsor'
      required:
        - signer_uuid
        - signature
        - app_fid
        - deadline
      title: RegisterSignerKeyReqBody
      type: object
    RegisterUserOnChainReqBody:
      properties:
        idem:
          description: "An Idempotency key is a unique identifier for the request.\n**Note:** \n1) Pre-registration calls must be idempotent when using idempotency keys.\n2) This is used to prevent duplicate requests. Use the same idem key on retry attempts.\n3) This should be a unique identifier for each request.\n4) Recommended format is a 16-character string generated by the developer at the time of making this request."
          type: string
        pre_registration_calls:
          items:
            properties:
              allow_failure:
                default: false
                description: 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.
                type: boolean
              data:
                description: Call data payload (hex-encoded)
                pattern: ^0x[a-fA-F0-9]+$
                type: string
              target:
                description: Must be on the allowed contract allowlist. Contact support for more details.
                example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
                pattern: ^0x[a-fA-F0-9]{40}$
                type: string
              value:
                default: 0
                description: 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.
                minimum: 0
                type: integer
            required:
              - data
              - target
            type: object
          type: array
        registration:
          properties:
            custody_address:
              $ref: '#/components/schemas/EthAddress'
            deadline:
              example: 1715190000
              minimum: 0
              type: integer
            recovery_address:
              $ref: '#/components/schemas/EthAddress'
            signature:
              $ref: '#/components/schemas/PrefixedHexString'
          required:
            - deadline
            - signature
            - custody_address
            - recovery_address
          type: object
        signers:
          items:
            properties:
              deadline:
                example: 1715190000
                minimum: 0
                type: integer
              key_type:
                default: 1
                minimum: 1
                type: integer
              metadata:
                $ref: '#/components/schemas/PrefixedHexString'
              metadata_type:
                default: 1
                minimum: 1
                type: integer
              public_key:
                $ref: '#/components/schemas/Ed25519PublicKey'
              signature:
                $ref: '#/components/schemas/PrefixedHexString'
            required:
              - signature
              - metadata
              - public_key
              - deadline
            type: object
          type: array
        storage_units:
          example: 2
          minimum: 0
          type: integer
      required:
        - registration
      title: RegisterUserOnChainReqBody
      type: object
    RegisterUserOnChainResponse:
      properties:
        message:
          example: Account registered successfully
          type: string
        transaction_hash:
          example: '0x2e276b4d014334797d9951ce2d3b7a11a4a58855cb07b3761de36785c618220a'
          type: string
        user:
          $ref: '#/components/schemas/User'
      title: RegisterUserOnChainResponse
      type: object
    RegisterUserReqBody:
      properties:
        deadline:
          type: number
        fid:
          type: number
        fname:
          type: string
        metadata:
          properties:
            bio:
              type: string
            display_name:
              type: string
            location:
              properties:
                latitude:
                  format: double
                  maximum: 90
                  minimum: -90
                  type: number
                longitude:
                  format: double
                  maximum: 180
                  minimum: -180
                  type: number
              required:
                - latitude
                - longitude
              type: object
            pfp_url:
              type: string
            url:
              type: string
            username:
              type: string
            verified_accounts:
              properties:
                github:
                  type: string
                x:
                  type: string
              type: object
          type: object
        requested_user_custody_address:
          type: string
        signature:
          type: string
        signer:
          properties:
            app_fid:
              type: number
            deadline:
              type: number
            signed_key_request_metadata_signature:
              type: string
            uuid:
              format: uuid
              type: string
          required:
            - uuid
            - signed_key_request_metadata_signature
            - app_fid
            - deadline
          type: object
      required:
        - signature
        - fid
        - requested_user_custody_address
        - deadline
      title: RegisterUserReqBody
      type: object
    RegisterUserResponse:
      properties:
        message:
          type: string
        signer:
          $ref: '#/components/schemas/Signer'
        signers:
          items:
            properties:
              fid:
                $ref: '#/components/schemas/Fid'
              object:
                enum:
                  - signer
                type: string
              permissions:
                items:
                  $ref: '#/components/schemas/SharedSignerPermission'
                type: array
              public_key:
                $ref: '#/components/schemas/Ed25519PublicKey'
              signer_approval_url:
                type: string
              status:
                enum:
                  - generated
                  - pending_approval
                  - approved
                  - revoked
                type: string
              uuid:
                $ref: '#/components/schemas/SignerUUID'
            required:
              - public_key
              - status
              - uuid
            type: object
          type: array
        success:
          enum:
            - true
          type: boolean
        user:
          $ref: '#/components/schemas/User'
      required:
        - success
        - message
        - signers
      title: RegisterUserResponse
      type: object
    RelevantFollowersResponse:
      properties:
        all_relevant_followers_dehydrated:
          items:
            $ref: '#/components/schemas/FollowerDehydrated'
          type: array
        top_relevant_followers_hydrated:
          items:
            $ref: '#/components/schemas/Follower'
          type: array
      required:
        - top_relevant_followers_hydrated
        - all_relevant_followers_dehydrated
      title: RelevantFollowersResponse
      type: object
    RelevantFungibleOwnersResponse:
      properties:
        all_relevant_fungible_owners_dehydrated:
          items:
            $ref: '#/components/schemas/UserDehydrated'
          type: array
        top_relevant_fungible_owners_hydrated:
          items:
            $ref: '#/components/schemas/User'
          type: array
      required:
        - top_relevant_fungible_owners_hydrated
        - all_relevant_fungible_owners_dehydrated
      title: RelevantFungibleOwnersResponse
      type: object
    RemoveChannelMemberReqBody:
      properties:
        channel_id:
          $ref: '#/components/schemas/ChannelId'
        fid:
          $ref: '#/components/schemas/Fid'
        role:
          $ref: '#/components/schemas/ChannelMemberRole'
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
      required:
        - signer_uuid
        - channel_id
        - fid
        - role
      title: RemoveChannelMemberReqBody
      type: object
    RemoveVerificationReqBody:
      properties:
        address:
          $ref: '#/components/schemas/EthAddress'
        block_hash:
          example: '0x191905a9201170abb55f4c90a4cc968b44c1b71cdf3db2764b775c93e7e22b29'
          type: string
        eth_signature:
          example: '0x2fc09da1f4dcb723fefb91f77932c249c418c0af00c66ed92ee1f35002c80d6a1145280c9f361d207d28447f8f7463366840d3a9309036cf6954afd1fd331beb1b'
          type: string
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
      required:
        - signer_uuid
        - address
        - block_hash
        - eth_signature
      title: RemoveVerificationReqBody
      type: object
    RespondChannelInviteReqBody:
      properties:
        accept:
          description: Accept or reject the invite
          type: boolean
        channel_id:
          $ref: '#/components/schemas/ChannelId'
        role:
          $ref: '#/components/schemas/ChannelMemberRole'
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
      required:
        - signer_uuid
        - channel_id
        - role
        - accept
      title: RespondChannelInviteReqBody
      type: object
    SendFrameNotificationsReqBody:
      properties:
        filters:
          description: Filters to apply to the target_fids set. All filters are additive, so only users matching all filters will be notified.
          example:
            exclude_fids:
              - 2
              - 8988
            following_fid: 3
            minimum_user_score: 0.5
            near_location:
              latitude: 37.774929
              longitude: -122.419418
              radius: 1000
          properties:
            exclude_fids:
              description: Only send notifications to users who are not in the given FIDs.
              items:
                $ref: '#/components/schemas/Fid'
              type: array
            following_fid:
              description: Only send notifications to users who follow the given FID.
              example: 3
              format: int32
              minimum: 0
              type: integer
            minimum_user_score:
              description: Only send notifications to users with a score greater than or equal to this value.
              maximum: 1
              minimum: 0
              type: number
            near_location:
              description: Only send notifications to users near a given location.
              properties:
                address:
                  $ref: '#/components/schemas/LocationAddress'
                latitude:
                  format: double
                  maximum: 90
                  minimum: -90
                  type: number
                longitude:
                  format: double
                  maximum: 180
                  minimum: -180
                  type: number
                radius:
                  description: The radius in meters for the location search. Any location within this radius will be returned.
                  minimum: 0
                  type: number
              required:
                - latitude
                - longitude
              type: object
          type: object
        notification:
          properties:
            body:
              description: The body of the notification. Must be between 1 and 128 characters.
              example: You have received a new message in your inbox.
              maxLength: 128
              minLength: 1
              type: string
            target_url:
              description: The target URL to open when the user clicks the notification. Must be a valid URL.
              example: https://example.com/notifications
              format: uri
              maxLength: 256
              type: string
            title:
              description: The title of the notification. Must be between 1 and 32 characters.
              example: New Message
              maxLength: 32
              minLength: 1
              type: string
            uuid:
              description: An optional UUID for the notification, used as an idempotency key.
              example: 123e4567-e89b-12d3-a456-426614174000
              format: uuid
              type: string
          required:
            - title
            - body
            - target_url
          type: object
        target_fids:
          description: An array of target FIDs to whom the notifications should be sent. Each FID must be a positive integer. Pass an empty array to send notifications to all FIDs with notifications enabled for the mini app.
          example:
            - 1
            - 2
            - 3
          items:
            minimum: 1
            type: integer
          maxItems: 100
          type: array
      required:
        - notification
      title: SendFrameNotificationsReqBody
      type: object
    SendFrameNotificationsResponse:
      properties:
        campaign_id:
          description: The unique identifier for the notification campaign.
          format: uuid
          type: string
        failure_count:
          description: The number of notifications that failed to deliver.
          format: int32
          type: integer
        not_attempted_count:
          description: The number of notifications not attempted (e.g., disabled tokens, invalid tokens).
          format: int32
          type: integer
        retryable_fids:
          description: List of FIDs that failed due to retryable errors (rate_limited, failed, http_error). Can be used to retry sending notifications to these users.
          items:
            $ref: '#/components/schemas/Fid'
          type: array
        success_count:
          description: The number of notifications successfully delivered.
          format: int32
          type: integer
      required:
        - campaign_id
        - success_count
        - failure_count
        - not_attempted_count
      title: SendFrameNotificationsResponse
      type: object
    SharedSignerPermission:
      enum:
        - WRITE_ALL
        - READ_ONLY
        - NONE
        - PUBLISH_CAST
        - DELETE_CAST
        - PUBLISH_REACTION
        - DELETE_REACTION
        - UPDATE_PROFILE
        - FOLLOW_USER
        - UNFOLLOW_USER
        - FOLLOW_CHANNEL
        - UNFOLLOW_CHANNEL
        - ADD_VERIFICATION
        - REMOVE_VERIFICATION
        - WRITE_FRAME_ACTION
      title: SharedSignerPermission
      type: string
    SignedKeyRequestSponsor:
      properties:
        fid:
          $ref: '#/components/schemas/Fid'
        signature:
          description: Signature generated by the fid of the sponsor and the signature generated from signKeyRequest for the app.
          type: string
        sponsored_by_neynar:
          description: |-
            Neynar will sponsor the signer if set to true.
            **Note: ** If sponsor.fid and sponsor.signature are provided along with sponsored_by_neynar set to true,
            the sponsor.fid and sponsor.signature will be ignored.
            Neynar will sponsor the signer on behalf of the user. The developer will get charged in credits.
          type: boolean
      title: SignedKeyRequestSponsor
      type: object
    SignedMessageBody:
      properties:
        app_domain:
          description: Domain of the mini app
          example: demo.neynar.com
          type: string
        signed_message:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/EncodedJsonFarcasterSignature'
          description: JFS-signed message containing the event payload. The message must be properly signed and contain valid event information.  Can be provided as a single string or json object.
      required:
        - signed_message
        - app_domain
      title: SignedMessageBody
      type: object
    Signer:
      properties:
        fid:
          $ref: '#/components/schemas/Fid'
        object:
          enum:
            - signer
          type: string
        permissions:
          items:
            $ref: '#/components/schemas/SharedSignerPermission'
          type: array
        public_key:
          $ref: '#/components/schemas/Ed25519PublicKey'
        signer_approval_url:
          type: string
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
        status:
          enum:
            - generated
            - pending_approval
            - approved
            - revoked
          type: string
      required:
        - signer_uuid
        - public_key
        - status
      title: Signer
      type: object
    SignerListResponse:
      properties:
        signers:
          items:
            $ref: '#/components/schemas/Signer'
          type: array
      required:
        - signers
      title: SignerListResponse
      type: object
    SignerUUID:
      description: |-
        UUID of the signer.
        `signer_uuid` is paired with API key, can't use a `uuid` made with a different API key.
      example: 19d0c5fd-9b33-4a48-a0e2-bc7b0555baec
      title: SignerUUID
      type: string
    SignerUuidBody:
      properties:
        app_domain:
          description: Domain of the mini app
          type: string
        event:
          description: |-
            Types of events that can occur between a user and an app host:
            - frame_added: User adds a mini app to their account
            - frame_removed: User removes a mini app from their account
            - notifications_enabled: User enables notifications for a mini app
            - notifications_disabled: User disables notifications for a mini app
          enum:
            - frame_added
            - frame_removed
            - notifications_enabled
            - notifications_disabled
          type: string
        fid:
          $ref: '#/components/schemas/Fid'
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
      required:
        - signer_uuid
        - app_domain
        - fid
        - event
      title: SignerUuidBody
      type: object
    SimulateNftMintResponse:
      description: Calldata simulations for NFT minting.
      items:
        properties:
          abi:
            description: ABI for the mint function.
            nullable: true
          args:
            items: {}
            type: array
          calldata:
            description: Calldata for the mint transaction.
            example: '0xabcdef'
            type: string
          data:
            example: '0x1234abcd'
            type: string
          estimated_total_cost_wei:
            description: Estimated total cost in wei (value + gas). Use this for price display.
            example: '100000000000000'
            type: string
          function_name:
            example: mintTo
            type: string
          network:
            example: base
            type: string
          recipient:
            anyOf:
              - properties:
                  address:
                    $ref: '#/components/schemas/EthAddress'
                  fid:
                    not: {}
                  quantity:
                    default: 1
                    description: Quantity to mint (must be at least 1). Defaults to 1.
                    example: 1
                    minimum: 1
                    type: integer
                required:
                  - address
                type: object
              - properties:
                  address:
                    not: {}
                  fid:
                    $ref: '#/components/schemas/Fid'
                  quantity:
                    default: 1
                    description: Quantity to mint (must be at least 1). Defaults to 1.
                    example: 1
                    minimum: 1
                    type: integer
                required:
                  - fid
                type: object
            description: NFT mint recipient. Exactly one of "address" or "fid" must be set.
          to:
            $ref: '#/components/schemas/EthAddress'
          value:
            example: '0'
            type: string
        required:
          - recipient
          - function_name
          - args
          - to
          - data
          - value
          - estimated_total_cost_wei
          - network
          - calldata
        type: object
      title: SimulateNftMintResponse
      type: array
    SolAddress:
      description: Solana address
      pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
      title: SolAddress
      type: string
    StorageAllocation:
      properties:
        expiry:
          example: '2024-10-08T22:03:49.000Z'
          format: date-time
          type: string
        object:
          example: storage_allocation
          type: string
        timestamp:
          example: '2023-10-09T22:03:49.000Z'
          format: date-time
          type: string
        units:
          example: 10
          type: integer
        user:
          $ref: '#/components/schemas/UserDehydrated'
      title: StorageAllocation
      type: object
    StorageAllocationsResponse:
      properties:
        allocations:
          items:
            $ref: '#/components/schemas/StorageAllocation'
          type: array
        total_active_units:
          example: 13
          type: integer
      title: StorageAllocationsResponse
      type: object
    StorageObject:
      properties:
        capacity:
          example: 10000
          type: integer
        object:
          example: storage
          type: string
        used:
          example: 3659
          type: integer
      title: StorageObject
      type: object
    StorageUsageResponse:
      properties:
        casts:
          $ref: '#/components/schemas/StorageObject'
        links:
          $ref: '#/components/schemas/StorageObject'
        object:
          example: storage_usage
          type: string
        reactions:
          $ref: '#/components/schemas/StorageObject'
        signers:
          $ref: '#/components/schemas/StorageObject'
        total_active_units:
          example: 2
          type: integer
        user:
          $ref: '#/components/schemas/UserDehydrated'
        username_proofs:
          $ref: '#/components/schemas/StorageObject'
        verified_addresses:
          $ref: '#/components/schemas/StorageObject'
      title: StorageUsageResponse
      type: object
    SubscribedTo:
      properties:
        chain:
          example: 8453
          type: integer
        contract_address:
          example: '0xff63fc310d47ef80961056ac8df0b3f1a9e3ef58'
          type: string
        creator:
          $ref: '#/components/schemas/User'
        expires_at:
          example: '2023-09-13T22:10:22.000Z'
          format: date-time
          type: string
        metadata:
          properties:
            art_url:
              example: https://storage.withfabric.xyz/loom/403fdc10-95f3-4b25-9d77-5aac7ccb9fd1.jpg
              type: string
            symbol:
              example: MMS
              type: string
            title:
              example: /memes channel sub
              type: string
          required:
            - title
            - symbol
            - art_url
          type: object
        object:
          enum:
            - subscription
          type: string
        owner_address:
          example: '0xb6f6dce6000ca88cc936b450cedb16a5c15f157f'
          type: string
        price:
          properties:
            initial_mint_price:
              example: '0'
              type: string
            period_duration_seconds:
              example: 2592000
              type: integer
            tokens_per_period:
              example: '350574998400000'
              type: string
          required:
            - period_duration_seconds
            - tokens_per_period
            - initial_mint_price
          type: object
        protocol_version:
          example: 1
          type: integer
        provider_name:
          example: fabric_stp
          type: string
        subscribed_at:
          example: '2023-09-13T22:10:22.000Z'
          format: date-time
          type: string
        tier:
          $ref: '#/components/schemas/SubscriptionTier'
        tiers:
          items:
            $ref: '#/components/schemas/SubscriptionTier'
          type: array
        token:
          properties:
            address:
              example: null
              nullable: true
              type: string
            decimals:
              example: 18
              type: integer
            erc20:
              example: false
              type: boolean
            symbol:
              example: ETH
              type: string
          required:
            - symbol
            - address
            - decimals
            - erc20
          type: object
      required:
        - object
        - contract_address
        - chain
        - metadata
        - owner_address
        - price
        - protocol_version
        - token
        - expires_at
        - subscribed_at
        - tier
        - creator
      title: SubscribedTo
      type: object
    SubscribedToObject:
      properties:
        chain:
          example: 8453
          type: integer
        contract_address:
          example: '0x325b3e2c19f4900f8f4eb5f6872dc2715e77cbac'
          type: string
        expires_at:
          example: '2023-09-13T22:10:22.000Z'
          format: date-time
          type: string
        object:
          enum:
            - subscription_dehydrated
          type: string
        protocol_version:
          example: 1
          type: integer
        provider_name:
          example: fabric_stp
          type: string
        subscribed_at:
          example: '2023-09-13T22:10:22.000Z'
          format: date-time
          type: string
        tier_id:
          example: '0'
          type: string
      required:
        - object
        - provider_name
      title: SubscribedToObject
      type: object
    SubscribedToResponse:
      properties:
        subscribed_to:
          items:
            $ref: '#/components/schemas/SubscribedTo'
          type: array
      title: SubscribedToResponse
      type: object
    Subscriber:
      properties:
        object:
          enum:
            - subscriber
          type: string
        subscribed_to:
          $ref: '#/components/schemas/SubscribedToObject'
        user:
          $ref: '#/components/schemas/User'
      required:
        - object
        - user
        - subscribed_to
      title: Subscriber
      type: object
    SubscribersResponse:
      properties:
        subscribers:
          items:
            $ref: '#/components/schemas/Subscriber'
          type: array
      title: SubscribersResponse
      type: object
    Subscription:
      properties:
        chain:
          example: 8453
          type: integer
        contract_address:
          example: '0xff63fc310d47ef80961056ac8df0b3f1a9e3ef58'
          type: string
        metadata:
          properties:
            art_url:
              example: https://storage.withfabric.xyz/loom/403fdc10-95f3-4b25-9d77-5aac7ccb9fd1.jpg
              type: string
            symbol:
              example: MMS
              type: string
            title:
              example: /memes channel sub
              type: string
          required:
            - title
            - symbol
            - art_url
          type: object
        object:
          enum:
            - subscription
          type: string
        owner_address:
          example: '0xb6f6dce6000ca88cc936b450cedb16a5c15f157f'
          type: string
        price:
          properties:
            initial_mint_price:
              example: '0'
              type: string
            period_duration_seconds:
              example: 2592000
              type: integer
            tokens_per_period:
              example: '350574998400000'
              type: string
          required:
            - period_duration_seconds
            - tokens_per_period
            - initial_mint_price
          type: object
        protocol_version:
          example: 1
          type: integer
        provider_name:
          example: fabric_stp
          type: string
        tiers:
          items:
            $ref: '#/components/schemas/SubscriptionTier'
          type: array
        token:
          properties:
            address:
              example: null
              nullable: true
              type: string
            decimals:
              example: 18
              type: integer
            erc20:
              example: false
              type: boolean
            symbol:
              example: ETH
              type: string
          required:
            - symbol
            - address
            - decimals
            - erc20
          type: object
      required:
        - object
        - contract_address
        - chain
        - metadata
        - owner_address
        - price
        - protocol_version
        - token
      title: Subscription
      type: object
    SubscriptionCheckResponse:
      anyOf:
        - additionalProperties:
            properties:
              expires_at:
                format: int64
                nullable: true
                type: integer
              object:
                enum:
                  - subscribed_to_dehydrated
                type: string
              status:
                type: boolean
              subscribed_at:
                format: int64
                nullable: true
                type: integer
              tier:
                allOf:
                  - $ref: '#/components/schemas/SubscriptionTier'
                nullable: true
            required:
              - object
              - status
              - expires_at
              - subscribed_at
              - tier
      title: SubscriptionCheckResponse
      type: object
    SubscriptionTier:
      properties:
        id:
          example: 1
          type: integer
        price:
          properties:
            initial_mint_price:
              example: '0'
              type: string
            period_duration_seconds:
              example: 2592000
              type: integer
            tokens_per_period:
              example: '3000000000000000'
              type: string
          type: object
      title: SubscriptionTier
      type: object
    Subscriptions:
      properties:
        subscriptions_created:
          items:
            $ref: '#/components/schemas/Subscription'
          type: array
      required:
        - subscriptions_created
      title: Subscriptions
      type: object
    SubscriptionsResponse:
      properties:
        subscriptions_created:
          items:
            $ref: '#/components/schemas/Subscriptions'
          type: array
      title: SubscriptionsResponse
      type: object
    TextRange:
      properties:
        end:
          minimum: 0
          type: number
        start:
          minimum: 0
          type: number
      required:
        - start
        - end
      title: TextRange
      type: object
    TokenBalance:
      description: The token balance associated with a wallet address and a network
      properties:
        balance:
          properties:
            in_token:
              description: The balance in the token
              type: string
            in_usdc:
              description: The balance in USDC
              type: string
          required:
            - in_token
            - in_usdc
          type: object
        object:
          enum:
            - token_balance
          type: string
        token:
          properties:
            address:
              description: The contract address of the token (omitted for native token)
              type: string
            decimals:
              description: The number of decimals the token uses
              type: integer
            name:
              description: The token name e.g. "Ethereum"
              type: string
            object:
              enum:
                - token
              type: string
            symbol:
              description: The token symbol e.g. "ETH"
              type: string
          required:
            - object
            - name
            - symbol
          type: object
      required:
        - object
        - token
        - balance
      title: TokenBalance
      type: object
    TopLevelTopic:
      description: The top-level category the topic belongs to
      enum:
        - arts_culture
        - business_entrepreneurs
        - celebrity_pop_culture
        - diaries_daily_life
        - family
        - fashion_style
        - film_tv_video
        - fitness_health
        - food_dining
        - gaming
        - learning_educational
        - music
        - news_social_concern
        - other_hobbies
        - relationships
        - science_technology
        - sports
        - travel_adventure
        - youth_student_life
      title: TopLevelTopic
      type: string
    TransactionFrame:
      discriminator:
        mapping:
          pay: '#/components/schemas/TransactionFramePay'
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/TransactionFramePay'
      title: TransactionFrame
      type: object
    TransactionFrameAction:
      description: Action button for primary CTA on the transaction mini app
      properties:
        button_color:
          description: Custom button color for action button
          example: '#000000'
          type: string
        text:
          description: Custom text for action button
          example: Pay
          type: string
        text_color:
          description: Custom text color for action button
          example: '#FFFFFF'
          type: string
      title: TransactionFrameAction
      type: object
    TransactionFrameConfig:
      properties:
        action:
          $ref: '#/components/schemas/TransactionFrameAction'
        allowlist_fids:
          description: Optional list of FIDs that are allowed to use this transaction mini app
          items:
            $ref: '#/components/schemas/Fid'
          type: array
        line_items:
          description: List of items included in the transaction
          items:
            $ref: '#/components/schemas/TransactionFrameLineItem'
          minItems: 1
          type: array
      required:
        - line_items
      title: TransactionFrameConfig
      type: object
    TransactionFrameDestination:
      properties:
        address:
          $ref: '#/components/schemas/EthAddress'
        amount:
          description: Amount to send (must be greater than 0)
          example: 0.01
          minimum: 1.e-8
          type: number
        network:
          $ref: '#/components/schemas/Network'
        token_contract_address:
          description: Token contract address for the payment (e.g. 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 is USDC on Base)
          example: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'
          pattern: ^0x[a-fA-F0-9]{40}$
          type: string
      required:
        - address
        - network
        - token_contract_address
        - amount
      title: TransactionFrameDestination
      type: object
    TransactionFrameLineItem:
      properties:
        description:
          description: Description of the line item in transaction
          example: Payment for goods
          type: string
        image:
          description: Optional image URL for the line item in transaction
          example: https://i.imgur.com/ovGo3sz.png
          type: string
        name:
          description: Name of the line item in transaction
          example: Payment
          type: string
      required:
        - name
        - description
      title: TransactionFrameLineItem
      type: object
    TransactionFramePay:
      properties:
        config:
          $ref: '#/components/schemas/TransactionFrameConfig'
        id:
          description: Unique identifier for the transaction mini app
          type: string
        status:
          $ref: '#/components/schemas/TransactionFrameStatus'
        transaction:
          properties:
            to:
              $ref: '#/components/schemas/TransactionFrameDestination'
          required:
            - to
          type: object
        type:
          $ref: '#/components/schemas/TransactionFrameType'
        url:
          description: URL that can be used to access the transaction mini app
          format: uri
          type: string
      required:
        - id
        - url
        - type
        - config
        - status
        - transaction
      title: TransactionFramePay
      type: object
    TransactionFrameResponse:
      properties:
        transaction_frame:
          $ref: '#/components/schemas/TransactionFrame'
      required:
        - transaction_frame
      title: TransactionFrameResponse
      type: object
    TransactionFrameStatus:
      enum:
        - created
        - completed
      title: TransactionFrameStatus
      type: string
    TransactionFrameType:
      description: Type of transaction mini app
      enum:
        - pay
      title: TransactionFrameType
      type: string
    TransactionSendFungiblesReceipt:
      properties:
        amount:
          type: number
        fid:
          $ref: '#/components/schemas/Fid'
        reason:
          description: Reason for failure (if status is failed)
          type: string
        status:
          enum:
            - sent
            - failed
          type: string
      required:
        - fid
        - amount
        - status
      title: TransactionSendFungiblesReceipt
      type: object
    TransactionSendFungiblesRecipient:
      properties:
        amount:
          description: Amount to send (must be greater than 0)
          minimum: 1.e-8
          type: number
        fid:
          $ref: '#/components/schemas/Fid'
      required:
        - fid
        - amount
      title: TransactionSendFungiblesRecipient
      type: object
    TransactionSendFungiblesReqBody:
      properties:
        fungible_contract_address:
          description: Contract address of the fungible token to send. If not provided, the default is the native token of the network.
          example: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'
          pattern: ^0x[a-fA-F0-9]{40}$
          type: string
        network:
          enum:
            - base
            - optimism
            - base-sepolia
          type: string
        recipients:
          items:
            $ref: '#/components/schemas/TransactionSendFungiblesRecipient'
          maxItems: 200
          minItems: 1
          type: array
      required:
        - network
        - recipients
      title: TransactionSendFungiblesReqBody
      type: object
    TransactionSendFungiblesResponse:
      properties:
        send_receipts:
          items:
            $ref: '#/components/schemas/TransactionSendFungiblesReceipt'
          type: array
        transactions:
          items:
            $ref: '#/components/schemas/TransactionSendTxInfo'
          type: array
      required:
        - send_receipts
        - transactions
      title: TransactionSendFungiblesResponse
      type: object
    TransactionSendTxInfo:
      properties:
        approval_hash:
          description: Hash of the transaction that approved the transfer. This is only present if the fungible token is not native token of the network.
          type: string
        gas_used:
          description: Gas used for the transaction.
          type: string
        network:
          enum:
            - base
            - optimism
            - base-sepolia
          type: string
        transaction_hash:
          type: string
      required:
        - network
        - transaction_hash
        - gas_used
        - approval_hash
      title: TransactionSendTxInfo
      type: object
    TrendingChannelResponse:
      properties:
        channels:
          items:
            $ref: '#/components/schemas/ChannelActivity'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      required:
        - channels
        - next
      title: TrendingChannelResponse
      type: object
    TrendingTopic:
      properties:
        authors:
          description: Up to five recent Farcaster users who posted about the topic
          items:
            $ref: '#/components/schemas/UserDehydrated'
          maxItems: 5
          type: array
        name:
          description: The display name of the topic
          type: string
        slug:
          description: A URL-friendly unique identifier for the topic
          type: string
        summary:
          description: Short summary of the topic if available
          nullable: true
          type: string
        top_level_topic:
          $ref: '#/components/schemas/TopLevelTopic'
      required:
        - name
        - slug
        - top_level_topic
        - summary
        - authors
      title: TrendingTopic
      type: object
    TrendingTopicsResponse:
      properties:
        next:
          $ref: '#/components/schemas/NextCursor'
        topics:
          items:
            $ref: '#/components/schemas/TrendingTopic'
          type: array
      required:
        - topics
        - next
      title: TrendingTopicsResponse
      type: object
    UpdateUserReqBody:
      properties:
        banner:
          description: Requires pro subscription.
          type: string
        bio:
          type: string
        display_name:
          type: string
        location:
          properties:
            latitude:
              format: double
              maximum: 90
              minimum: -90
              type: number
            longitude:
              format: double
              maximum: 180
              minimum: -180
              type: number
          required:
            - latitude
            - longitude
          type: object
        pfp_url:
          type: string
        primary_eth_address:
          description: Must be one of the verified addresses.
          example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
          pattern: ^0x[a-fA-F0-9]{40}$
          type: string
        primary_sol_address:
          description: Must be one of the verified addresses.
          pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
          type: string
        signer_uuid:
          $ref: '#/components/schemas/SignerUUID'
        url:
          type: string
        username:
          type: string
        verified_accounts:
          properties:
            github:
              type: string
            x:
              type: string
          type: object
      required:
        - signer_uuid
      title: UpdateUserReqBody
      type: object
    User:
      properties:
        auth_addresses:
          items:
            properties:
              address:
                $ref: '#/components/schemas/EthAddress'
              app:
                $ref: '#/components/schemas/UserDehydrated'
            required:
              - address
              - app
            type: object
          type: array
        custody_address:
          $ref: '#/components/schemas/EthAddress'
        display_name:
          nullable: true
          type: string
        experimental:
          properties:
            deprecation_notice:
              type: string
            neynar_user_score:
              description: Score that represents the probability that the account is not spam.
              format: double
              type: number
          required:
            - neynar_user_score
          type: object
        fid:
          $ref: '#/components/schemas/Fid'
        follower_count:
          description: The number of followers the user has.
          format: int32
          type: integer
        following_count:
          description: The number of users the user is following.
          format: int32
          type: integer
        object:
          enum:
            - user
          type: string
        pfp_url:
          description: The URL of the user's profile picture
          nullable: true
          type: string
        pro:
          properties:
            expires_at:
              format: date-time
              type: string
            status:
              description: The subscription status of the user
              enum:
                - subscribed
                - unsubscribed
              type: string
            subscribed_at:
              format: date-time
              type: string
          required:
            - status
            - subscribed_at
            - expires_at
          type: object
        profile:
          properties:
            banner:
              properties:
                url:
                  description: The URL of the user's banner image
                  format: uri
                  type: string
              type: object
            bio:
              properties:
                mentioned_channels:
                  items:
                    $ref: '#/components/schemas/ChannelDehydrated'
                  type: array
                mentioned_channels_ranges:
                  description: |-
                    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.
                  items:
                    $ref: '#/components/schemas/TextRange'
                  type: array
                mentioned_profiles:
                  items:
                    $ref: '#/components/schemas/UserDehydrated'
                  type: array
                mentioned_profiles_ranges:
                  description: |-
                    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.
                  items:
                    $ref: '#/components/schemas/TextRange'
                  type: array
                text:
                  type: string
              required:
                - text
              type: object
            live_at:
              properties:
                is_live:
                  type: boolean
                updated_at:
                  format: date-time
                  type: string
                url:
                  description: The URL of the user's current live activity
                  type: string
              required:
                - url
                - updated_at
                - is_live
              type: object
            location:
              $ref: '#/components/schemas/Location'
          required:
            - bio
          type: object
        registered_at:
          format: date-time
          type: string
        score:
          description: Score that represents the probability that the account is not spam.
          format: double
          type: number
        username:
          type: string
        verifications:
          items:
            $ref: '#/components/schemas/EthAddress'
          type: array
        verified_accounts:
          items:
            description: Verified accounts of the user on other platforms, currently only X is supported.
            properties:
              platform:
                enum:
                  - x
                  - github
                type: string
              username:
                type: string
            type: object
          type: array
        verified_addresses:
          properties:
            eth_addresses:
              description: List of verified Ethereum addresses of the user sorted by oldest to most recent.
              items:
                $ref: '#/components/schemas/EthAddress'
              type: array
            primary:
              properties:
                eth_address:
                  allOf:
                    - $ref: '#/components/schemas/EthAddress'
                  nullable: true
                sol_address:
                  allOf:
                    - $ref: '#/components/schemas/SolAddress'
                  nullable: true
              required:
                - eth_address
                - sol_address
              type: object
            sol_addresses:
              description: List of verified Solana addresses of the user sorted by oldest to most recent.
              items:
                $ref: '#/components/schemas/SolAddress'
              type: array
          required:
            - eth_addresses
            - sol_addresses
            - primary
          type: object
        viewer_context:
          $ref: '#/components/schemas/UserViewerContext'
      required:
        - object
        - fid
        - username
        - custody_address
        - registered_at
        - profile
        - follower_count
        - following_count
        - verifications
        - auth_addresses
        - verified_addresses
        - verified_accounts
      title: User
      type: object
    UserDehydrated:
      properties:
        custody_address:
          $ref: '#/components/schemas/EthAddress'
        display_name:
          nullable: true
          type: string
        fid:
          $ref: '#/components/schemas/Fid'
        object:
          enum:
            - user_dehydrated
          type: string
        pfp_url:
          nullable: true
          type: string
        score:
          type: number
        username:
          type: string
      required:
        - object
        - fid
      title: UserDehydrated
      type: object
    UserFIDResponse:
      properties:
        fid:
          $ref: '#/components/schemas/Fid'
      required:
        - fid
      title: UserFIDResponse
      type: object
    UserPowerLiteResponse:
      properties:
        result:
          properties:
            fids:
              description: List of FIDs
              items:
                $ref: '#/components/schemas/Fid'
              type: array
          required:
            - fids
          type: object
      required:
        - result
      title: UserPowerLiteResponse
      type: object
    UserResponse:
      properties:
        user:
          $ref: '#/components/schemas/User'
      required:
        - user
      title: UserResponse
      type: object
    UserSearchResponse:
      properties:
        result:
          properties:
            next:
              $ref: '#/components/schemas/NextCursor'
            users:
              items:
                $ref: '#/components/schemas/User'
              type: array
          required:
            - users
          type: object
      required:
        - result
      title: UserSearchResponse
      type: object
    UserViewerContext:
      description: Adds context on the viewer's follow relationship with the user.
      properties:
        blocked_by:
          description: Indicates if the viewer is blocked by the user.
          type: boolean
        blocking:
          description: Indicates if the viewer is blocking the user.
          type: boolean
        followed_by:
          description: Indicates if the viewer is followed by the user.
          type: boolean
        following:
          description: Indicates if the viewer is following the user.
          type: boolean
      required:
        - following
        - followed_by
        - blocking
        - blocked_by
      title: UserViewerContext
      type: object
    UsersActiveChannelsResponse:
      properties:
        channels:
          items:
            $ref: '#/components/schemas/Channel'
          type: array
        next:
          $ref: '#/components/schemas/NextCursor'
      title: UsersActiveChannelsResponse
      type: object
    UsersResponse:
      properties:
        next:
          $ref: '#/components/schemas/NextCursor'
        users:
          items:
            $ref: '#/components/schemas/User'
          type: array
      required:
        - users
        - next
      title: UsersResponse
      type: object
    Verification:
      description: Verification details of an address
      properties:
        address:
          description: Address string (hex for ethereum, base58 for solana)
          example: '0x5a927ac639636e534b678e81768ca19e2c6280b7'
          type: string
        app:
          $ref: '#/components/schemas/UserDehydrated'
        object:
          enum:
            - verification
          type: string
        protocol:
          $ref: '#/components/schemas/Protocol'
        verified_at:
          description: ISO timestamp when the verification was created
          example: '2024-01-01T00:00:00.000Z'
          type: string
      required:
        - object
        - address
        - protocol
        - verified_at
      title: Verification
      type: object
    VerificationChainId:
      anyOf:
        - enum:
            - 0
          type: number
        - enum:
            - 1
          type: number
        - enum:
            - 10
          type: number
      default: 0
      description: Chain ID for farcaster verifications. 0 for EOA verifications, 1 or 10 for contract verifications
      format: int32
      title: VerificationChainId
      type: integer
    VerificationType:
      anyOf:
        - enum:
            - 0
          type: number
        - enum:
            - 1
          type: number
      default: 0
      description: Type of verification. 0 = EOA, 1 = contract
      format: int32
      title: VerificationType
      type: integer
    VideoObject:
      properties:
        height:
          type: string
        type:
          type: string
        url:
          type: string
        width:
          type: string
      required:
        - url
      title: VideoObject
      type: object
    Webhook:
      properties:
        active:
          type: boolean
        created_at:
          format: date-time
          type: string
        deleted_at:
          format: date-time
          nullable: true
          type: string
        description:
          type: string
        developer_uuid:
          type: string
        http_timeout:
          type: string
        object:
          enum:
            - webhook
          type: string
        rate_limit:
          type: integer
        rate_limit_duration:
          type: string
        secrets:
          items:
            $ref: '#/components/schemas/WebhookSecret'
          type: array
        subscription:
          $ref: '#/components/schemas/WebhookSubscription'
        target_url:
          type: string
        title:
          type: string
        updated_at:
          format: date-time
          type: string
        webhook_id:
          type: string
      required:
        - object
        - webhook_id
        - developer_uuid
        - target_url
        - title
        - secrets
        - description
        - http_timeout
        - rate_limit
        - active
        - rate_limit_duration
        - created_at
        - updated_at
        - deleted_at
      title: Webhook
      type: object
    WebhookDeleteReqBody:
      properties:
        webhook_id:
          type: string
      required:
        - webhook_id
      title: WebhookDeleteReqBody
      type: object
    WebhookListResponse:
      properties:
        webhooks:
          items:
            $ref: '#/components/schemas/Webhook'
          type: array
      required:
        - webhooks
      title: WebhookListResponse
      type: object
    WebhookPatchReqBody:
      properties:
        active:
          enum:
            - 'true'
            - 'false'
          type: string
        webhook_id:
          type: string
      required:
        - webhook_id
        - active
      title: WebhookPatchReqBody
      type: object
    WebhookPostReqBody:
      properties:
        name:
          type: string
        subscription:
          $ref: '#/components/schemas/WebhookSubscriptionFilters'
        url:
          type: string
      required:
        - name
        - url
      title: WebhookPostReqBody
      type: object
    WebhookPutReqBody:
      properties:
        name:
          type: string
        subscription:
          $ref: '#/components/schemas/WebhookSubscriptionFilters'
        url:
          type: string
        webhook_id:
          type: string
      required:
        - name
        - url
        - webhook_id
      title: WebhookPutReqBody
      type: object
    WebhookResponse:
      properties:
        message:
          type: string
        success:
          type: boolean
        webhook:
          $ref: '#/components/schemas/Webhook'
      title: WebhookResponse
      type: object
    WebhookSecret:
      properties:
        created_at:
          type: string
        deleted_at:
          nullable: true
          type: string
        expires_at:
          type: string
        uid:
          type: string
        updated_at:
          type: string
        value:
          type: string
      required:
        - uid
        - value
        - expires_at
        - created_at
        - updated_at
        - deleted_at
      title: WebhookSecret
      type: object
    WebhookSubscription:
      properties:
        created_at:
          format: date-time
          type: string
        filters:
          $ref: '#/components/schemas/WebhookSubscriptionFilters'
        object:
          enum:
            - webhook_subscription
          type: string
        subscription_id:
          type: string
        updated_at:
          format: date-time
          type: string
      required:
        - object
        - subscription_id
        - filters
        - created_at
        - updated_at
      title: WebhookSubscription
      type: object
    WebhookSubscriptionFilters:
      properties:
        cast.created:
          $ref: '#/components/schemas/WebhookSubscriptionFiltersCast'
        cast.deleted:
          $ref: '#/components/schemas/WebhookSubscriptionFiltersCast'
        follow.created:
          $ref: '#/components/schemas/WebhookSubscriptionFiltersFollow'
        follow.deleted:
          $ref: '#/components/schemas/WebhookSubscriptionFiltersFollow'
        reaction.created:
          $ref: '#/components/schemas/WebhookSubscriptionFiltersReaction'
        reaction.deleted:
          $ref: '#/components/schemas/WebhookSubscriptionFiltersReaction'
        trade.created:
          $ref: '#/components/schemas/WebhookSubscriptionFiltersTrade'
        user.created:
          properties: {}
          type: object
        user.updated:
          properties:
            fids:
              items:
                type: integer
              type: array
          type: object
      title: WebhookSubscriptionFilters
      type: object
    WebhookSubscriptionFiltersCast:
      properties:
        author_fids:
          items:
            type: integer
          type: array
        embedded_cast_author_fids:
          description: Filter for casts that contain embedded casts authored by these FIDs
          items:
            type: number
          type: array
        embedded_cast_hashes:
          description: Filter for casts that quote/embed these specific cast hashes
          items:
            type: string
          type: array
        embeds:
          description: "Regex pattern to match the embeded_url (key embeds) of the cast.\n**Note:** \n1) Regex must be parsed by Go's RE2 engine (Test your expression here: https://www.lddgo.net/en/string/golangregex)\n2) Use backslashes to escape special characters.\nFor example: \\\\b(farcaster|neynar)\\\\b should be written as \\\\\\\\b(farcaster|neynar)\\\\\\\\b"
          example: "\b(farcaster|neynar)\b"
          type: string
        exclude_author_fids:
          description: |-
            Exclude casts that matches these authors.
            **Note:**
            This is applied as an AND operation against rest of the filters.
            Rest of the filters are bundled as an OR operation.
          items:
            type: integer
          type: array
        mentioned_fids:
          items:
            type: integer
          type: array
        minimum_author_score:
          default: 0
          maximum: 1
          minimum: 0
          type: number
        parent_author_fids:
          items:
            type: integer
          type: array
        parent_hashes:
          items:
            type: string
          type: array
        parent_urls:
          items:
            type: string
          type: array
        root_parent_urls:
          items:
            type: string
          type: array
        text:
          description: "Regex pattern to match the text key of the cast.\n**Note:** \n1) Regex must be parsed by Go's RE2 engine (Test your expression here: https://www.lddgo.net/en/string/golangregex)\n2) Use backslashes to escape special characters.\nFor example: (?i)\\\\$degen should be written as (?i)\\\\\\\\$degen"
          example: (?i)\$degen
          type: string
      title: WebhookSubscriptionFiltersCast
      type: object
    WebhookSubscriptionFiltersFollow:
      properties:
        fids:
          items:
            type: integer
          type: array
        target_fids:
          items:
            type: integer
          type: array
      title: WebhookSubscriptionFiltersFollow
      type: object
    WebhookSubscriptionFiltersReaction:
      properties:
        fids:
          items:
            type: integer
          type: array
        target_cast_hashes:
          items:
            example: '0x71d5225f77e0164388b1d4c120825f3a2c1f131c'
            pattern: ^(0x)?[a-fA-F0-9]{40}$
            type: string
          type: array
        target_fids:
          items:
            type: integer
          type: array
      title: WebhookSubscriptionFiltersReaction
      type: object
    WebhookSubscriptionFiltersTrade:
      properties:
        fids:
          items:
            type: integer
          type: array
        minimum_token_amount_usdc:
          minimum: 0
          type: number
        minimum_trader_neynar_score:
          maximum: 1
          minimum: 0
          type: number
      title: WebhookSubscriptionFiltersTrade
      type: object
    ZodError:
      properties:
        code:
          example: InvalidField
          type: string
        errors:
          items:
            properties:
              code:
                type: string
              expected:
                type: string
              message:
                type: string
              path:
                items:
                  type: string
                type: array
              received:
                type: string
            required:
              - code
              - expected
              - received
              - path
              - message
            type: object
          type: array
        message:
          example: Invalid query parameters
          type: string
      required:
        - message
        - code
        - errors
      title: ZodError
      type: object
  securitySchemes:
    ApiKeyAuth:
      description: API key to authorize requests
      in: header
      name: x-api-key
      type: apiKey
      x-default: NEYNAR_API_DOCS
