Submit corrected KYC directly, independently of the old application and refund
x-on-behalf-of required
First call PATCH /v1/kyc to update the profile, supplying changed fields only; identity document number and country fields cannot be changed. Then call this endpoint with body {}, without opening a hosted page. To change photos, first upload raw file bytes through POST /v1/kyc/files, then place the returned file_url in the corresponding PATCH profile.identity_photos item. Do not send external URLs or base64. After local review passes, we submit to the original application's channel; unsupported changes are handled manually. Repeated submission of the same profile version does not create duplicate review tasks. Query GET on this path for the result. This endpoint does not debit, refund, revive an application, or issue another card. After approval, the end user must confirm the fees again and create a new card application with a new idempotency key.
Path Parameters
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | Required |
Request Headers
| Field | Type | Required | Description |
|---|---|---|---|
x-on-behalf-of |
string | Required | |
idempotency-key |
string | Required |
Request Body
Request body fields have not been declared in the specification for this operation.
Response
curl -X POST 'https://api.zinfra.vip/v1/cards/applications/{id}/recovery' \
-H 'x-auth-token: Bearer $TOKEN' \
-H 'x-on-behalf-of: $MEMBER_ID'const res = await fetch("https://api.zinfra.vip/v1/cards/applications/{id}/recovery", {
method: "POST",
headers: {
"x-auth-token": "Bearer $TOKEN",
"x-on-behalf-of": "$MEMBER_ID",
},
});
// Keep monetary amounts as strings, never numbers.
const data = await res.json();import requests
res = requests.post(
"https://api.zinfra.vip/v1/cards/applications/{id}/recovery",
headers={
"x-auth-token": "Bearer $TOKEN",
"x-on-behalf-of": "$MEMBER_ID",
},
)
# Use Decimal(str(...)) for amounts, not float.
data = res.json()req, _ := http.NewRequest("POST", "https://api.zinfra.vip/v1/cards/applications/{id}/recovery",
nil)
req.Header.Set("x-auth-token", "Bearer $TOKEN")
req.Header.Set("x-on-behalf-of", "$MEMBER_ID")
res, err := http.DefaultClient.Do(req)
// Decode amount fields as string, not float64.HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.zinfra.vip/v1/cards/applications/{id}/recovery"))
.header("x-auth-token", "Bearer $TOKEN")
.header("x-on-behalf-of", "$MEMBER_ID")
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
// Use String / BigDecimal for amounts, not double.$ch = curl_init('https://api.zinfra.vip/v1/cards/applications/{id}/recovery');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'x-auth-token: Bearer $TOKEN',
'x-on-behalf-of: $MEMBER_ID',
],
]);
$res = curl_exec($ch);
// Use bcmath / strings for amounts, not floatval.
// No response example is declared in the specification for this operation.