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

# Bridge Integrator Fee Claim

> [Alpha Preview] Prepare a claim on an integrator fee balance: priced payout plus the message the fee wallet signs.

> [!WARNING]
>
> **Alpha Preview** — Endpoints and response shape may change without notice.

`POST /api/2/bridge/integrator-fees/{address}/claim` prices a USDC payout from
the fee wallet's [balance](https://docs.mobula.io/rest-api-reference/endpoint/bridge-integrator-fees)
and returns the message to sign. Nothing is reserved yet: the balance is only
debited when you [submit](https://docs.mobula.io/rest-api-reference/endpoint/bridge-integrator-fees-claim-submit)
the signature.

## Path parameter

| Name | Notes |
| - | - |
| `address` | The fee wallet whose balance is claimed. It is also the signer. |

## Request body

| Field | Required | Notes |
| - | - | - |
| `chainId` | yes | Where the USDC is paid: an EVM bridge chain (e.g. `evm:8453`, `evm:42161`) or `solana:solana`. Not HyperLiquid. |
| `recipient` | no | Who receives the USDC, in that chain's address format. Defaults to the fee wallet itself, so set it when claiming an EVM balance on Solana or the other way round. |
| `amountUsd` | no | USD taken from the balance. Defaults to the whole available balance. |

```json theme={null}
{ "chainId": "evm:8453", "amountUsd": 120.5 }
```

## Response

```json theme={null}
{
  "data": {
    "claimId": "6f1c2a9e-4b7d-4c1e-9a53-2d8f0e7b1c44",
    "message": "Mobula Bridge: claim integrator fees\nWallet: 0xyourfeewallet\nAmount: 120.500000 USD\nNetwork fee: 0.004100 USD\nReceive: 120.4959 USDC on evm:8453\nRecipient: 0xYourFeeWallet\nClaim: 6f1c2a9e-4b7d-4c1e-9a53-2d8f0e7b1c44\nExpires: 2026-10-21T09:12:03.000Z",
    "signatureKind": "eip191",
    "amountUsd": 120.5,
    "networkFeeUsd": 0.0041,
    "receive": {
      "amount": "120.4959",
      "amountRaw": "120495900",
      "token": {
        "chainId": "evm:8453",
        "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
        "symbol": "USDC",
        "decimals": 6
      }
    },
    "recipient": "0xYourFeeWallet",
    "expiresAt": "2026-10-21T09:12:03.000Z"
  }
}
```

* `networkFeeUsd` — what the payout transaction costs on `chainId`, at live gas
  (plus the USDC account rent on Solana when the recipient has none). It is
  deducted from what is sent: you receive `amountUsd − networkFeeUsd`.
* `receive` — the exact USDC amount sent, human and raw.
* `expiresAt` — the claim can be signed and submitted for **24 hours**, enough
  for a multisig to gather its signatures.

## Signing

Sign `message` exactly as returned, with the fee wallet:

* **EVM wallet** (`signatureKind: "eip191"`) — `personal_sign`, e.g.
  `walletClient.signMessage({ account, message })` in viem. Submit the `0x…` hex.
* **Safe or other contract wallet** — sign `message` as an off-chain message
  (EIP-1271) and submit the combined signature once enough owners have signed.
  It is checked with `isValidSignature` on `chainId`, or on Base (`evm:8453`)
  when the payout is on Solana, so the Safe must be deployed on that chain.
* **Solana wallet** (`signatureKind: "ed25519"`) — `signMessage` over the UTF-8
  bytes of `message`. Submit the 64-byte signature base58-encoded.

```ts theme={null}
// Solana wallet adapter
const sig = await wallet.signMessage(new TextEncoder().encode(prepared.message));
const signature = bs58.encode(sig);
```

## Errors

Errors return HTTP `400` with a `message`:

| Case | `message` |
| - | - |
| Unsupported payout chain | `Claims pay USDC on EVM bridge chains and solana:solana, not …` |
| Wrong recipient format | `recipient must be a … address on …` |
| `amountUsd` above the balance | `Balance is $…, below $…` |
| Less than **\$1** left after the network fee | `A claim must pay out at least $1 after the $… network fee on …` |
| No live gas price on the chain | `No gas price available on … right now — retry shortly` |


## OpenAPI

````yaml post /2/bridge/integrator-fees/{address}/claim
openapi: 3.0.0
info:
  version: 1.0.0
  title: Mobula API
  description: >-
    Documentation of the Mobula API


    **Demo API**: The default server (demo-api.mobula.io) is a demo API with
    rate limits.

    For production use, please use api.mobula.io with an API key from
    https://admin.mobula.io
servers:
  - url: https://demo-api.mobula.io/api/
    description: Demo API (rate limited, for testing only)
  - url: https://api.mobula.io/api/
    description: Production API (requires API key)
security: []
tags:
  - name: V2 - Token
    description: Token details, price, security, ATH, and holder data
  - name: V2 - Market Data
    description: Market details, OHLCV history, and lighthouse metrics
  - name: V2 - Trades
    description: Token trades, enriched trades, and trade filters
  - name: V2 - Wallet
    description: Wallet positions, activity, trades, analysis, and labels
  - name: V2 - Assets
    description: Cross-chain asset details and price history
  - name: V2 - Swap
    description: Swap quoting and execution
  - name: V2 - Perps
    description: Perpetual futures quoting, execution, and positions
  - name: V2 - Bridge
    description: Cross-chain bridge quoting and intent status (Alpha Preview)
  - name: V2 - DeFi
    description: Bonding pools and pulse data
  - name: V2 - Search
    description: Universal fast search
  - name: V2 - Usage
    description: Per-key API and WebSocket usage history
  - name: V2 - Blockchains
    description: System metadata and chain listings
  - name: V2 - Prediction Markets
    description: >-
      Polymarket markets/events, wallet positions, and the full execution stack
      (auth, order build/submit/cancel, approvals, pUSD wrap/unwrap, deploy,
      deposit/withdraw, redeem). Alpha — see /api/2/pm/*.
  - name: V1 - Market Data
    description: Market prices, history, sparklines, pairs, and multi-data
  - name: V1 - Wallet
    description: Wallet portfolio, transactions, history, and NFTs
  - name: V1 - Token
    description: First buyers
  - name: V1 - Trades
    description: Market trades by pair
  - name: V1 - Metadata
    description: Token metadata, categories, and news
  - name: V1 - Assets
    description: List all assets
  - name: V1 - Search
    description: Search for assets, tokens, and pairs
  - name: V1 - DeFi
    description: Bonding pool pulse data
  - name: V1 - Blockchains
    description: Blockchain listings, pairs, and stats
  - name: V1 - Webhooks
    description: Webhook management
  - name: V1 - Feed
    description: Custom feed creation
paths:
  /2/bridge/integrator-fees/{address}/claim:
    post:
      tags:
        - V2 - Bridge
      summary: Prepare an integrator fee claim
      description: >-
        [Alpha Preview] Price a USDC payout from the fee wallet's balance and
        return the message it signs. Nothing is reserved until the signature is
        submitted to `/2/bridge/integrator-fees/claims/{claimId}`. The prepared
        claim stays valid for 24 hours. Sign `message` exactly as returned:
        EIP-191 personal_sign on EVM (a Safe signs it as an EIP-1271 message,
        checked on `chainId`, or on Base for a Solana payout), signMessage over
        the UTF-8 bytes on Solana.
      parameters:
        - schema:
            type: string
            description: The fee wallet whose balance is claimed. It is also the signer.
          required: true
          description: The fee wallet whose balance is claimed. It is also the signer.
          name: address
          in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                chainId:
                  type: string
                  description: >-
                    Where the USDC is paid, an EVM bridge chain (e.g. evm:8453)
                    or solana:solana. Not HyperLiquid.
                recipient:
                  type: string
                  description: >-
                    Who receives the USDC, in that chain's address format.
                    Defaults to the fee wallet.
                amountUsd:
                  type: number
                  description: >-
                    USD taken from the balance. Defaults to the whole available
                    balance.
              required:
                - chainId
      responses:
        '200':
          description: The priced claim and the message to sign.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      claimId:
                        type: string
                      message:
                        type: string
                        description: What the fee wallet signs.
                      signatureKind:
                        type: string
                        enum:
                          - eip191
                          - ed25519
                      amountUsd:
                        type: number
                        description: Debited from the balance.
                      networkFeeUsd:
                        type: number
                        description: >-
                          Payout network cost at live gas (plus USDC account
                          rent on Solana when the recipient has none), deducted
                          from what is sent.
                      receive:
                        type: object
                        properties:
                          amount:
                            type: string
                          amountRaw:
                            type: string
                          token:
                            type: object
                            properties:
                              chainId:
                                type: string
                              address:
                                type: string
                              symbol:
                                type: string
                              decimals:
                                type: number
                      recipient:
                        type: string
                      expiresAt:
                        type: string
                    required:
                      - claimId
                      - message
                      - signatureKind
                      - amountUsd
                      - networkFeeUsd
                      - receive
                      - recipient
                      - expiresAt
                required:
                  - data
        '400':
          description: >-
            Unsupported payout chain, bad recipient, amount above the balance,
            less than $1 left after the network fee, or no live gas price on the
            chain.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.