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"
}
}
}Core flow
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"
}
}
}Check the provider for a status update. Send an empty JSON object for the normal flow:
Read
{}
data.case.status after the call. A successful response can still mean verification is pending. An already approved request returns success without creating new hosted steps.
If no provider status update is available, supported hosted steps can be renewed when availableActions includes refresh_provider_steps. Normal renewal requires at least one unsubmitted hosted step. Use force: true only to intentionally regenerate supported hosted steps; it does not bypass terminal-state checks.
After approval, start a new fiat session to use the updated onboarding status. You can also receive status changes through webhooks.Authorizations
Path Parameters
Customer identifier.
Customer onboarding case identifier.
Body
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.

