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"
}
}
}Use esta operación para un caso de incorporación existente. Se requieren customerId y caseId. El caso debe pertenecer al cliente y a la empresa autenticada.
Noah comprueba primero la verificación del cliente. Si está aprobado, actualiza el caso local sin crear otra sesión alojada. Infinia consulta al titular de la cuenta bajo la empresa: COMPLETED aprueba el caso, FAILED registra el motivo y borra los pasos alojados, y un estado pendiente conserva los pasos actuales. Una respuesta exitosa puede contener un caso pendiente o fallido; revise data.case.status.
La respuesta contiene customerId y case dentro de data. Revise status, reason, hostedSessions, actions y availableActions. Si ya estaba aprobado, devuelve HTTP 200 con el mensaje Onboarding case is already approved. Los demás casos terminales devuelven HTTP 400.
Verificación antes de renovar
Envíe un objeto JSON vacío para el flujo normal. force vale false por defecto. Si el proveedor no devuelve una actualización, la renovación requiere refresh_provider_steps en availableActions. Sin force debe haber sesiones alojadas y alguna sin enviar. force: true regenera pasos compatibles; no omite comprobaciones de aprobación, rechazo, caducidad o pertenencia.{}
Después de la aprobación
Solicite nuevas tasas de retiro o una nueva cotización de depósito para crear una sesión fiat nueva. No reutilice una sesión anterior a la aprobación. Los cambios también pueden emitir webhooks customer.onboarding.*; un caso sin cambios no garantiza un evento nuevo. Webhooks de incorporación de clientesAutorizaciones
Parámetros de ruta
Customer identifier.
Customer onboarding case identifier.
Cuerpo
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.

