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.176.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 - `algorithmic` - Casts sorted by engagement and time in: query name: sort_type schema: enum: - desc_chron - chron - algorithmic 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), embed_types (requires embed_types), or global_trending. in: query name: filter_type schema: enum: - fids - parent_url - channel_id - embed_url - embed_types - global_trending 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/for_you/: get: description: Fetch a personalized For You feed for a user externalDocs: url: https://docs.neynar.com/reference/fetch-feed-for-you operationId: fetch-feed-for-you 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: example: 3 minimum: 1 type: integer - description: The provider of the For You feed. in: query name: provider schema: default: neynar enum: - neynar 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 responses: '200': content: application/json: schema: $ref: '#/components/schemas/FeedResponse' description: Success '400': content: application/json: schema: oneOf: - $ref: '#/components/schemas/ZodError' - $ref: '#/components/schemas/ErrorRes' description: Bad Request summary: For you 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/trending/: get: description: Fetch trending casts or on the global feed or channels feeds. 7d time window available for channel feeds only. externalDocs: url: https://docs.neynar.com/reference/fetch-trending-feed operationId: fetch-trending-feed parameters: - $ref: '#/components/parameters/NeynarExperimentalHeader' - description: Number of results to fetch in: query name: limit schema: default: 10 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 - 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: Time window for trending casts (7d window for channel feeds only) in: query name: time_window schema: default: 24h enum: - 1h - 6h - 12h - 24h - 7d example: 24h type: string - description: Channel ID to filter trending casts. Less active channels might have no casts in the time window selected. Provide either `channel_id` or `parent_url`, not both. in: query name: channel_id schema: example: neynar type: string - description: Parent URL to filter trending casts. Less active channels might have no casts in the time window selected. Provide either `channel_id` or `parent_url`, not both. in: query name: parent_url schema: example: chain://eip155:1/erc721:0xd4498134211baad5846ce70ce04e7c4da78931cc type: string - description: The provider of the trending casts feed. in: query name: provider schema: default: neynar enum: - neynar example: neynar type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/FeedResponse' description: Success '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 '500': content: application/json: schema: $ref: '#/components/schemas/ErrorRes' description: Server Error summary: Trending feeds 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 (Ethereum or Solana) in: query name: contract_address required: true schema: example: 0x0db510e79909666d6dec7f5e49370838c16d950f (eth) --OR-- EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (solana) type: string - description: Network of the fungible asset. in: query name: network required: true schema: enum: - ethereum - optimism - base - arbitrum - solana 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 - solana 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: - in: query name: network required: true schema: enum: - base 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: - in: query name: network required: true schema: enum: - base 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: description: Fetch authorization url (Fetched authorized url useful for SIWN login operation) 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 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 e.g. "ethereum", "optimism", "base", "arbitrum" enum: - ethereum - optimism - base - arbitrum title: Network 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). 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" in: query name: network required: true schema: enum: - ethereum - optimism - base - arbitrum 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). 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: 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 '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). The deployment must be running. 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" enum: - ethereum - optimism - base - arbitrum 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 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