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

# Submit an RFI response

> Answer the current round of a request for information. Each entry in `items` replies to one request item by its `requestItemId` with exactly one of `fileId` or `answerText`, and any file must be uploaded through the files endpoint first. Every item marked `required` must be answered, and a round accepts only one submission.



## OpenAPI

````yaml https://production.hifi.com/api/v2/openapi.json post /v2/rfis/{rfiId}/submissions
openapi: 3.0.0
info:
  title: Hifi API
  version: 2.0.0
  description: API documentation for HIFI
servers:
  - url: https://production.hifibridge.com
    description: Production server
  - url: https://sandbox.hifibridge.com
    description: Sandbox server
security:
  - bearerAuth: []
tags:
  - name: Common
    description: Common endpoints
  - name: User
    description: User endpoints
  - name: Kyc
    description: Kyc endpoints
  - name: Wallet
    description: Wallet endpoints
  - name: Account
    description: Account endpoints
  - name: External Account
    description: External Account endpoints for managing beneficiary bank accounts
  - name: Virtual Account
    description: Virtual Account endpoints
  - name: Onramp
    description: Onramp endpoints
  - name: Offramp
    description: Offramp endpoints
  - name: Orchestration Address
    description: >-
      Orchestration Address endpoints — persistent on-chain wallets that
      automatically off-ramp incoming stablecoin deposits to a USD bank account
  - name: Crypto Transfer
    description: Crypto Transfer endpoints
  - name: Cross-Chain Bridge
    description: Cross-Chain Bridge endpoints
  - name: Token Swap
    description: Token Swap endpoints
  - name: Canton Offers
    description: Canton Offers endpoints
  - name: Transfer Rules
    description: Transfer approval rules and configuration
  - name: Transfer Approvals
    description: Transfer approval workflow and admin actions
  - name: File
    description: File endpoints
  - name: Reporting
    description: Reporting and metrics endpoints
paths:
  /v2/rfis/{rfiId}/submissions:
    post:
      tags:
        - Kyc
      summary: Submit an RFI response
      description: >-
        Answer the current round of a request for information. Each entry in
        `items` replies to one request item by its `requestItemId` with exactly
        one of `fileId` or `answerText`, and any file must be uploaded through
        the files endpoint first. Every item marked `required` must be answered,
        and a round accepts only one submission.
      parameters:
        - $ref: '#/components/parameters/RfiIdPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/SubmitRfiBody'
      responses:
        '200':
          $ref: '#/components/responses/SubmitRfiResponse'
        '400':
          $ref: '#/components/responses/RfiBadRequestResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/RfiNotFoundResponse'
        '409':
          $ref: '#/components/responses/RfiConflictResponse'
        '422':
          $ref: '#/components/responses/RfiNotEligibleResponse'
        '500':
          $ref: '#/components/responses/RfiInternalServerErrorResponse'
components:
  parameters:
    RfiIdPathParameter:
      name: rfiId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: ID of the request for information.
      example: 7c9e1a34-5b02-4d68-91af-3e6d2b8c4075
  requestBodies:
    SubmitRfiBody:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RfiSubmissionBody'
          example:
            items:
              - requestItemId: 3f7c1e90-2a4b-4d61-9c0e-5b8f2d6a1e34
                fileId: file_7bV1aLcs3Kf9dQ2mNpXwZ
              - requestItemId: 3f7c1e90-2a4b-4d61-9c0e-5b8f2d6a1e34
                fileId: file_9aB0xY4mNpXwZ7bV1aLdt
              - requestItemId: 6b2d4a81-7c05-4e39-8f1a-2d9c3e7b5041
                answerText: Salary from the user's employer, with payslips attached.
  responses:
    SubmitRfiResponse:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RfiSubmissionResult'
          example:
            rfiId: 7c9e1a34-5b02-4d68-91af-3e6d2b8c4075
            roundId: b81d4f2c-6e35-4a90-9f27-0c3e5a71d8b6
            round: 1
            status: submitted
            submittedAt: '2026-07-03T09:12:44.000Z'
            responseCount: 3
    RfiBadRequestResponse:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RfiError'
          example:
            type: VALIDATION_ERROR
            message: A question request item is answered with answerText
            fields:
              - code: conditional_required
                message: A question request item is answered with answerText
                field: items[1].answerText
    UnauthorizedResponse:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    RfiNotFoundResponse:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RfiError'
          example:
            type: RESOURCE_NOT_FOUND
            message: RFI not found
    RfiConflictResponse:
      description: Conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RfiError'
          example:
            type: RESOURCE_CONFLICT
            message: This request has already been answered
    RfiNotEligibleResponse:
      description: Unprocessable Entity
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RfiError'
          example:
            type: RESOURCE_NOT_USABLE
            message: The deadline for this request has passed
    RfiInternalServerErrorResponse:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RfiError'
          example:
            type: INTERNAL_SERVER_ERROR
            message: An internal error occurred
  schemas:
    RfiSubmissionBody:
      type: object
      description: The replies making up one submission.
      required:
        - items
      properties:
        items:
          type: array
          minItems: 1
          maxItems: 200
          description: One entry per reply.
          items:
            $ref: '#/components/schemas/RfiSubmissionItem'
    RfiSubmissionResult:
      type: object
      description: Confirmation that a submission was recorded.
      properties:
        rfiId:
          type: string
          format: uuid
          description: ID of the request that was answered.
          example: 7c9e1a34-5b02-4d68-91af-3e6d2b8c4075
        roundId:
          type: string
          format: uuid
          description: ID of the round that was answered.
          example: b81d4f2c-6e35-4a90-9f27-0c3e5a71d8b6
        round:
          type: integer
          description: Attempt number that was answered.
          example: 1
        status:
          type: string
          description: Status of the request after the submission.
          enum:
            - submitted
          example: submitted
        submittedAt:
          type: string
          format: date-time
          description: When the submission was recorded.
          example: '2026-07-03T09:12:44.000Z'
        responseCount:
          type: integer
          description: >-
            Number of replies recorded, which may exceed the number of request
            items answered.
          example: 5
    RfiError:
      type: object
      properties:
        type:
          type: string
          description: Machine-readable error type.
          example: VALIDATION_ERROR
        message:
          type: string
          description: Human-readable error message.
          example: One or more fields are invalid or missing.
        fields:
          type: array
          description: >-
            Present on field-level validation errors. One entry per problem
            field.
          items:
            type: object
            properties:
              code:
                type: string
                description: Error code related to the field issue.
              message:
                type: string
                description: Error message for the specific issue.
              field:
                type: string
                description: The name of the field that has an issue.
    Unauthorized:
      type: object
      properties:
        code:
          type: integer
          description: Error code
        error:
          type: string
          description: Error type
        errorDetails:
          type: string
          description: Detailed error message
    RfiSubmissionItem:
      type: object
      description: >-
        One reply to one request item. Exactly one of `fileId` and `answerText`
        must be provided.
      required:
        - requestItemId
      properties:
        requestItemId:
          type: string
          format: uuid
          description: The `id` of the request item being answered.
          example: 3f7c1e90-2a4b-4d61-9c0e-5b8f2d6a1e34
        fileId:
          type: string
          nullable: true
          description: >-
            ID of a file previously uploaded through the files API (prefixed
            with `file_`). Only valid against a `document` request item, and
            only for a file uploaded under the same client.
          example: file_7bV1aLcs3Kf9dQ2mNpXwZ
        answerText:
          type: string
          minLength: 1
          maxLength: 10000
          nullable: true
          description: >-
            Written reply. Required for a `question` request item, and accepted
            for a `document` request item as an explanation in place of the
            file.
          example: >-
            The property is leased by the user's employer; the attached letter
            confirms the address.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````