---
title: "Submit responses to an RFI"
method: POST
path: "/rfis/{rfiID}/responses"
tags: ["RFIs"]
---

# Submit responses to an RFI

`POST /rfis/{rfiID}/responses`

## Request

- Base URL: `https://api.bridge.xyz/v0`
- URL: `https://api.bridge.xyz/v0/rfis/{rfiID}/responses`
- Auth: API key in header `Api-Key`

Submits one or more responses to outstanding requested items on an RFI.
All responses are applied atomically — any failure rolls back the entire batch.

**Required scope:** `customer:write`

Field names encode whether the value is a scalar or a list. Fields ending
in `_list` accept one or more values; all other fields accept a single value.

| Field | Type | Notes |
|---|---|---|
| `text` | string | Single text value (e.g. name, description) |
| `text_list` | array of strings | Multiple text values (e.g. nationalities, industries) |
| `date` | string | ISO 8601 date (`YYYY-MM-DD`) |
| `address` | object | Postal address |
| `boolean` | boolean | `true` or `false`; `false` is a valid answer |
| `free_text_explanation` | string | Supplemental explanation; accepted alongside most other fields |
| `identifying_information_list` | array of objects | ID documents or tax IDs |
| `document_list` | array of objects | File attachments (base64 data-URI); maximum 24MB total per item |

Most items accept more than one field. You may submit any or all of the
accepted fields in a single response object; Bridge processes each one you provide.

Use `GET /rfis/{id}` to retrieve the RFI and inspect each item's `response_types`
array to see which fields are accepted for that item.

## Request body

- PostRfiResponsesInput
  - `responses` RfiResponseItem[], required: One or more response items. Applied atomically — a failure on any item rolls back the entire batch.
    - `requested_item_id` string, required: ID of the `RfiRequestedItem` this response answers. Must belong to the RFI identified by the path parameter. Returns 422 if not found or if it belongs to a different RFI.
    - `text` string: Single-value plain-text answer (e.g. a name or short description).
    - `text_list` string[]: Multi-value plain-text answer (e.g. nationalities, industries, or operating countries).
    - `date` string: ISO 8601 date string (`YYYY-MM-DD`), e.g. a date of birth.
    - `address` RfiAddressInput: Postal address.
      - `street_line_1` string: Primary street line (house number and street name).
      - `street_line_2` string: Secondary street line (apartment, suite, unit, floor, etc.).
      - `city` string: City or locality.
      - `subdivision` string: State, province, or other first-level subdivision code (e.g. `CA`). Must be supplied for US addresses.
      - `state` string: Deprecated alias for `subdivision`. Use `subdivision` instead.
      - `postal_code` string: Postal or ZIP code. Must be supplied for countries that use postal codes.
      - `country` string: Three-letter alpha-3 country code as defined in the ISO 3166-1 spec.
    - `identifying_information_list` IdentifyingInformation[]: One or more identity documents or tax identification numbers. The valid values for `type` depend on the specific item: - **TaxIdentificationNumber** items: `type` must be a TIN enum value (e.g. `ssn`, `ein`, `itin`, `cpf`, `vat`). Supplying a government-ID-only type returns 400. - **Government-ID document** items: `type` must be a government-ID enum value (e.g. `passport`, `drivers_license`, `national_id`). Supplying a TIN-only type returns 400. See the `IdentifyingInformation` schema for the full list of accepted `type` values.
      - object[]
        - `type` 'drivers_license' | 'matriculate_id' | 'military_id' | 'national_id' | 'passport' | 'permanent_residency_id' | 'state_or_provincial_id' | 'visa' | 'abn' | 'acn' | 'ahv' | 'ak' | 'aom' | 'arbn' | 'avs' | 'bc' | 'bce' | 'bin' | 'bir' | 'bp' | 'brn' | 'bsn' | 'bvn' | 'cc' | 'cdi' | 'cedula_juridica' | 'cf' | 'cif' | 'cin' | 'cipc' | 'cn' | 'cnp' | 'cnpj' | 'cpf' | 'cpr' | 'crc' | 'crib' | 'crn' | 'cro' | 'cui' | 'cuil' | 'curp' | 'cuit' | 'cvr' | 'edrpou' | 'ein' | 'embg' | 'emirates_id' | 'en' | 'fin' | 'fn' | 'gstin' | 'gui' | 'hetu' | 'hkid' | 'hn' | 'ic' | 'ico' | 'id' | 'id_broj' | 'idno' | 'idnp' | 'idnr' | 'if' | 'iin' | 'ik' | 'inn' | 'ird' | 'itin' | 'itr' | 'iva' | 'jmbg' | 'kbo' | 'kvk' | 'matricule' | 'mf' | 'mn' | 'ms' | 'mst' | 'nic' | 'nicn' | 'nie' | 'nif' | 'nin' | 'nino' | 'nip' | 'nipc' | 'nipt' | 'nit' | 'npwp' | 'nric' | 'nrn' | 'nrt' | 'ntn' | 'nuit' | 'nzbn' | 'oib' | 'orgnr' | 'other' | 'pan' | 'partita_iva' | 'pesel' | 'pib' | 'pin' | 'pk' | 'ppsn' | 'qid' | 'rc' | 'regon' | 'rfc' | 'ricn' | 'rif' | 'rn' | 'rnc' | 'rnokpp' | 'rp' | 'rrn' | 'rtn' | 'ruc' | 'rut' | 'si' | 'sin' | 'siren' | 'siret' | 'spi' | 'ssm' | 'ssn' | 'steuer_id' | 'strn' | 'tckn' | 'tfn' | 'tin' | 'tpin' | 'trn' | 'ucn' | 'uen' | 'uic' | 'uid' | 'usc' | 'ust_idnr' | 'utr' | 'vat' | 'vkn' | 'voen' | 'y_tunnus', required: Tax identification number type or government-issued ID document type (see enum). Country-specific tax and national ID lists: [Individuals](https://apidocs.bridge.xyz/docs/individual-tax-identification-numbers-by-country), [Businesses](https://apidocs.bridge.xyz/docs/business-tax-identification-numbers-by-country). **EEA / BBSA (policy in `eea_requirements.rb`):** In-scope individuals and UBOs need **both** a valid national-ID-type entry and a valid TIN per [EEA updated requirements](https://apidocs.bridge.xyz/platform/customers/customers/eea-updated-requirements). In-scope businesses need business registration **and** business tax ID types per country tables there. **TIN issuing country** must match residence (individuals) or incorporation (businesses). **Foreign tax** outside the incorporation country: set `has_foreign_tax_registration` on the business customer and add TIN objects per jurisdiction ([foreign tax / tax residency](https://apidocs.bridge.xyz/platform/customers/customers/eea-updated-requirements#tax-residency-status-foreign-tax-registry)).
        - `issuing_country` string, required: The ISO 3166-1 (three-character) country code that issued the provided document.
        - `number` string: The unique identifier of the document. Required if this document is being used as a tax identification number (e.g., you are providing a passport or national_id with no other identification).
        - `description` string: A description describing the provided document. This field is required when `other` is selected.
        - `expiration` string: The expiration date of the given document in yyyy-mm-dd format.
        - `image_front` string: This field is optionally accepted for tax_id types, but required for government_id types. Base64 encoded image* of the front side of the provided document, following the data-uri scheme i.e. data:image/[type];base64,[base_64_encoded_file_contents], with a minimum size of 200px x 200px \n\n*Maximum File Size: 15MB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif _Note: When combined with an `image_back`, the combined size of both images must not exceed 24MB._
        - `image_back` string: Base64 encoded image* of the back side of the provided document, following the data-uri scheme i.e. data:image/[type];base64,[base_64_encoded_file_contents], with a minimum size of 200px x 200px \n\n*Maximum File Size: 15MB\n\n*Valid file types: .pdf, .jpeg, .jpg, .png, .heic, .tif _Note: When combined with an `image_front`, the combined size of both images must not exceed 24MB._
    - `document_list` RfiDocumentInput[]: One or more file attachments as base64 data-URIs. The document purpose is derived automatically from the item's entity detail type; you do not need to specify it. *Maximum combined file size per item: 24MB.*
      - `file` string, required: File content as a base64 data-URI: `data:<mime-type>;base64,<base64-encoded-content>`. Common MIME types: `application/pdf`, `image/jpeg`, `image/png`, `image/heic`, `image/tif`. *Maximum File Size: 24MB*
      - `description` string: Human-readable label for the document (e.g. "utility bill", "bank statement").
    - `boolean` boolean: `true` or `false`. `false` is a valid answer; only a missing or null field is rejected.
    - `free_text_explanation` string: A plain-text explanation supplementing the primary response. Accepted alongside most other fields — for example, you may submit both an `address` and a `free_text_explanation`.

## Response `201`

All responses accepted and applied.

- object

## Other responses

- `400`: One of the following: - An `identifying_information_list` entry contains a `type` value from the wrong enum (e.g. a government-ID type supplied for a TIN item, or a TIN type supplied for a government-ID item). - A response field was supplied that is not accepted for the given item's type.
- `401`: Missing or invalid API key
- `404`: No resource found
- `422`: One of the following: - A `requested_item_id` does not belong to this RFI. - The required response field for the item's kind is absent or empty. - The RFI is in `closed` or `draft` state.
- `500`: Unexpected error. User may try and send the request again.

## Changes

- **2026-11-03** `a390532e9fc6`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bridge/apis/bridge-api/changes/rfis/:rfiID/responses/post.md)

---

[API](https://skmtc.dev/bridge/apis/bridge-api.md) - [All operations](https://skmtc.dev/bridge/apis/bridge-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bridge/apis/bridge-api/revisions/a390532e9fc6?raw)
