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

# Submit fast fill signature

> Checks that the signature recovers to `owner` over exactly the built message, then hands it to the venue's relayer, which sends the source transaction and pays its gas. `txHash` is that transaction once the venue names it, usually within seconds. `txHash: null` with `status: "PENDING"` means the relayer holds the signature and has not broadcast yet; BRDG keeps tracking it, and submitting again is safe. Send the one time Permit2 `approve` through `POST /bridge/transfers/{id}/submit` with `step: "approve"` first.



## OpenAPI

````yaml openapi/openapi.json POST /fastfill/transfers/{id}/submit
openapi: 3.1.0
info:
  title: BRDG API
  version: 1.0.0
  description: >-
    Quote, build, submit and track cross-chain transfers across every venue BRDG
    aggregates.
servers:
  - url: https://api.brdg.now/v1
security: []
paths:
  /fastfill/transfers/{id}/submit:
    post:
      tags:
        - fastfill
      summary: Submit fast fill signature
      description: >-
        Checks that the signature recovers to `owner` over exactly the built
        message, then hands it to the venue's relayer, which sends the source
        transaction and pays its gas. `txHash` is that transaction once the
        venue names it, usually within seconds. `txHash: null` with `status:
        "PENDING"` means the relayer holds the signature and has not broadcast
        yet; BRDG keeps tracking it, and submitting again is safe. Send the one
        time Permit2 `approve` through `POST /bridge/transfers/{id}/submit` with
        `step: "approve"` first.
      parameters:
        - schema:
            type: string
            pattern: >-
              ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
          required: true
          name: id
          in: path
        - name: X-BRDG-Api-Key
          in: header
          required: false
          description: >-
            Optional partner key for server integrators. With it, each wallet is
            rate limited under the partner rather than on the IP of the calling
            server (a call naming no wallet, per the `userIp` in the body),
            bounded by a partner-wide ceiling. Unknown or disabled keys are
            refused with 401. See [rate limits](/api-reference/rate-limits).
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                signature:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{130,20000}$
                  description: >-
                    The wallet's 65 byte EIP-712 signature over the build's
                    message, as 0x hex.
                userIp:
                  anyOf:
                    - type: string
                      format: ip
                    - type: string
                      format: ip
                  description: The end user's IP address, if the quote carried one.
              required:
                - signature
            example:
              signature: >-
                0xedc90fdd27654dd49ac1087901450c9c5fdf444943f61faa8d787bee86304d821f06a5db4a67eddf5cf286014d6ec8bd33c64f9e072045a9f3c5e50cc28960fc1b
      responses:
        '200':
          description: The transfer’s new state and the relayer’s hash, when known
          content:
            application/json:
              schema:
                type: object
                properties:
                  transferId:
                    type: string
                  status:
                    type: string
                  txHash:
                    type: string
                    nullable: true
                  step:
                    type: string
                    enum:
                      - approve
                      - fee
                      - main
                      - redeem
                  accepted:
                    type: boolean
                  verification:
                    type: string
                    nullable: true
                    enum:
                      - verified
                      - pending
                      - unverified_no_rpc
                      - unverified_rpc_error
                      - refuted
                      - null
                required:
                  - transferId
                  - status
                  - txHash
                  - step
                  - accepted
                  - verification
              example:
                transferId: 6f1d2c0a-4b7e-4c55-9a1e-2f0e8c3b7d41
                status: SUBMITTED
                txHash: >-
                  0x8f3c2b1a9d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a
                step: main
                accepted: true
                verification: pending
        '400':
          description: >-
            Malformed request, an unknown asset, or a signed transaction that is
            not what we built
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details:
                        type: object
                        additionalProperties:
                          nullable: true
                      retryAfterMs:
                        type: integer
                    required:
                      - code
                      - message
                required:
                  - error
        '401':
          description: >-
            An `X-BRDG-Api-Key` header was sent and the key is unknown
            (`invalid_api_key`) or disabled (`api_key_disabled`)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details:
                        type: object
                        additionalProperties:
                          nullable: true
                      retryAfterMs:
                        type: integer
                    required:
                      - code
                      - message
                required:
                  - error
        '404':
          description: No such decision or transfer, or the aggregator is switched off
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details:
                        type: object
                        additionalProperties:
                          nullable: true
                      retryAfterMs:
                        type: integer
                    required:
                      - code
                      - message
                required:
                  - error
        '409':
          description: >-
            The decision is indicative, the quote expired or drifted, the venue
            is ineligible, or execution is switched off
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details:
                        type: object
                        additionalProperties:
                          nullable: true
                      retryAfterMs:
                        type: integer
                    required:
                      - code
                      - message
                required:
                  - error
        '429':
          description: Rate limited; retry after `retryAfterMs`
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details:
                        type: object
                        additionalProperties:
                          nullable: true
                      retryAfterMs:
                        type: integer
                    required:
                      - code
                      - message
                required:
                  - error
        '502':
          description: The venue refused to build, or the broadcast was rejected
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      details:
                        type: object
                        additionalProperties:
                          nullable: true
                      retryAfterMs:
                        type: integer
                    required:
                      - code
                      - message
                required:
                  - error

````

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