List RFIs
curl --request GET \
--url https://production.hifibridge.com/v2/rfis \
--header 'Authorization: Bearer <token>'import requests
url = "https://production.hifibridge.com/v2/rfis"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://production.hifibridge.com/v2/rfis', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://production.hifibridge.com/v2/rfis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://production.hifibridge.com/v2/rfis"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://production.hifibridge.com/v2/rfis")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production.hifibridge.com/v2/rfis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "7c9e1a34-5b02-4d68-91af-3e6d2b8c4075",
"kind": "onboarding",
"status": "issued",
"subjectType": "individual",
"userId": "2d5b7e18-9c40-4a63-b8f1-7e0a4c9d2536",
"transferId": null,
"flowType": null,
"createdAt": "2026-07-01T10:30:00.000Z",
"currentRound": 1,
"round": {
"id": "b81d4f2c-6e35-4a90-9f27-0c3e5a71d8b6",
"round": 1,
"issuedAt": "2026-07-01T10:30:00.000Z",
"expiresAt": "2026-07-31T10:30:00.000Z",
"submittedAt": null,
"items": [
{
"id": "3f7c1e90-2a4b-4d61-9c0e-5b8f2d6a1e34",
"kind": "document",
"label": "Proof of address issued in the last 3 months",
"docType": "proof_of_address",
"detail": "A utility bill or bank statement dated within the last three months.",
"required": true
},
{
"id": "6b2d4a81-7c05-4e39-8f1a-2d9c3e7b5041",
"kind": "question",
"label": "What is the source of the funds being deposited?",
"docType": null,
"detail": null,
"required": true
}
],
"link": "https://dashboard.hifi.com/production/rfi-link/rfir_2mNpXwZ7bV1aLcs3Kf9dQ#sessionToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
}
}
],
"pagination": {
"limit": 20,
"offset": 0,
"total": 1
}
}{
"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"
}
]
}{
"code": 123,
"error": "<string>",
"errorDetails": "<string>"
}{
"type": "INTERNAL_SERVER_ERROR",
"message": "An internal error occurred"
}KYC
List RFIs
List the requests for information (RFIs) compliance has raised against your users. An RFI is raised either during onboarding, against the user’s KYC/KYB, or against a single transfer, which stays held until the request is resolved.
If you would rather collect the reply programmatically, submit it through the Submit an RFI response endpoint instead.
The open onboarding RFI for a single user is also returned on the Retrieve KYC status endpoint.
GET
/
v2
/
rfis
List RFIs
curl --request GET \
--url https://production.hifibridge.com/v2/rfis \
--header 'Authorization: Bearer <token>'import requests
url = "https://production.hifibridge.com/v2/rfis"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://production.hifibridge.com/v2/rfis', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://production.hifibridge.com/v2/rfis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://production.hifibridge.com/v2/rfis"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://production.hifibridge.com/v2/rfis")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production.hifibridge.com/v2/rfis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "7c9e1a34-5b02-4d68-91af-3e6d2b8c4075",
"kind": "onboarding",
"status": "issued",
"subjectType": "individual",
"userId": "2d5b7e18-9c40-4a63-b8f1-7e0a4c9d2536",
"transferId": null,
"flowType": null,
"createdAt": "2026-07-01T10:30:00.000Z",
"currentRound": 1,
"round": {
"id": "b81d4f2c-6e35-4a90-9f27-0c3e5a71d8b6",
"round": 1,
"issuedAt": "2026-07-01T10:30:00.000Z",
"expiresAt": "2026-07-31T10:30:00.000Z",
"submittedAt": null,
"items": [
{
"id": "3f7c1e90-2a4b-4d61-9c0e-5b8f2d6a1e34",
"kind": "document",
"label": "Proof of address issued in the last 3 months",
"docType": "proof_of_address",
"detail": "A utility bill or bank statement dated within the last three months.",
"required": true
},
{
"id": "6b2d4a81-7c05-4e39-8f1a-2d9c3e7b5041",
"kind": "question",
"label": "What is the source of the funds being deposited?",
"docType": null,
"detail": null,
"required": true
}
],
"link": "https://dashboard.hifi.com/production/rfi-link/rfir_2mNpXwZ7bV1aLcs3Kf9dQ#sessionToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
}
}
],
"pagination": {
"limit": 20,
"offset": 0,
"total": 1
}
}{
"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"
}
]
}{
"code": 123,
"error": "<string>",
"errorDetails": "<string>"
}{
"type": "INTERNAL_SERVER_ERROR",
"message": "An internal error occurred"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Filter requests by status.
Available options:
issued, submitted, resolved, expired Filter requests by what they are attached to.
Available options:
onboarding, transaction ID of the user whose requests are listed.
Number of requests to return.
Required range:
1 <= x <= 100Number of requests to skip.
Required range:
x >= 0⌘I