Refresh status
curl --request POST \
--url https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{}'import requests
url = "https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh"
payload = {}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh', 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://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Onboarding case approved successfully",
"data": {
"customerId": "18d2f159-e0cd-4a45-b735-e9dfe0f7520a",
"case": {
"id": "8392013d-2481-47c9-b5e3-b61b22b8ff82",
"businessId": "ec01bc89-d2d8-47fc-8d4c-0616d859915d",
"customerId": "18d2f159-e0cd-4a45-b735-e9dfe0f7520a",
"providerId": "1128dd40-2c94-4c16-a6bf-fbbc6afee52c",
"subjectType": "customer",
"status": "approved",
"mode": "hosted_only",
"feature": "offramp",
"hostedSessions": [],
"actions": [],
"availableActions": [],
"reason": null,
"createdAt": "2026-10-31T10:00:00.000Z",
"updatedAt": "2026-10-31T10:15:00.000Z"
}
}
}Onboarding
Refresh status
Check the provider for a status update. Send an empty JSON object for the normal flow:
POST
/
v1
/
customers
/
{customerId}
/
onboarding-requests
/
{caseId}
/
refresh
Refresh status
curl --request POST \
--url https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{}'import requests
url = "https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh"
payload = {}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh', 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://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blockradar.co/v1/customers/{customerId}/onboarding-requests/{caseId}/refresh")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "Onboarding case approved successfully",
"data": {
"customerId": "18d2f159-e0cd-4a45-b735-e9dfe0f7520a",
"case": {
"id": "8392013d-2481-47c9-b5e3-b61b22b8ff82",
"businessId": "ec01bc89-d2d8-47fc-8d4c-0616d859915d",
"customerId": "18d2f159-e0cd-4a45-b735-e9dfe0f7520a",
"providerId": "1128dd40-2c94-4c16-a6bf-fbbc6afee52c",
"subjectType": "customer",
"status": "approved",
"mode": "hosted_only",
"feature": "offramp",
"hostedSessions": [],
"actions": [],
"availableActions": [],
"reason": null,
"createdAt": "2026-10-31T10:00:00.000Z",
"updatedAt": "2026-10-31T10:15:00.000Z"
}
}
}Utilisez cette opération pour un dossier d’intégration existant. customerId et caseId sont obligatoires. Le dossier doit appartenir au client et à l’entreprise authentifiée.
Noah vérifie d’abord le statut du client. Si le client est approuvé, le dossier local est validé sans nouvelle session hébergée. Infinia consulte le titulaire du compte dans l’entreprise : COMPLETED approuve le dossier, FAILED enregistre le motif et supprime les étapes hébergées, et une vérification en attente conserve les étapes actuelles. Une réponse réussie peut contenir un dossier en attente ou en échec ; vérifiez data.case.status.
La réponse contient customerId et case dans data. Vérifiez status, reason, hostedSessions, actions et availableActions. Un dossier déjà approuvé renvoie HTTP 200 avec le message Onboarding case is already approved. Les autres dossiers terminaux renvoient HTTP 400.
Vérification avant renouvellement
Envoyez un objet JSON vide pour le flux normal. force vaut false par défaut. Sans mise à jour du fournisseur, le renouvellement exige refresh_provider_steps dans availableActions. Sans force, des sessions hébergées doivent exister et au moins une doit être non soumise. force: true régénère les étapes compatibles sans contourner l’approbation, le rejet, l’expiration ou l’appartenance.{}
Après l’approbation
Demandez de nouveaux taux de retrait ou une nouvelle cotation de dépôt pour créer une nouvelle session fiat. Ne réutilisez pas une session antérieure à l’approbation. Les changements peuvent émettre des webhooks customer.onboarding.* ; un dossier inchangé ne garantit pas un nouvel événement. Webhooks d’intégration des clientsAutorisations
Paramètres de chemin
Customer identifier.
Customer onboarding case identifier.
Corps
application/json
Send {} to check provider verification or refresh normally. force is optional and defaults to false.
Force hosted-session regeneration only in the supported renewal path. Does not bypass provider verification, terminal-state checks or ownership. With false, existing sessions must exist and not all be submitted.

