Z Zise Developers 简体中文

Submit corrected KYC directly, independently of the old application and refund

POST /v1/cards/applications/{id}/recovery scope: cards:write
On behalf of a member · 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

FieldTypeRequiredDescription
id string Required
FieldTypeRequiredDescription
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

202Separate review task accepted; use GET to query its actual status.
400The current application or profile status does not allow submission.
404The application does not exist or does not belong to the current member and merchant.
Request
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.
202
// No response example is declared in the specification for this operation.