curl --request POST \
--url http://localhost:8080/api/v1/kyc/applications/{id}/cancelimport requests
url = "http://localhost:8080/api/v1/kyc/applications/{id}/cancel"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('http://localhost:8080/api/v1/kyc/applications/{id}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/api/v1/kyc/applications/{id}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://localhost:8080/api/v1/kyc/applications/{id}/cancel"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8080/api/v1/kyc/applications/{id}/cancel")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/kyc/applications/{id}/cancel")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"aml_hit_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"link_expires_at": "2023-11-07T05:31:56Z",
"link_url": "<string>",
"metadata": "<unknown>",
"reason_codes": "<unknown>",
"status": "CREATED",
"synced_at": "2023-11-07T05:31:56Z",
"aml_decision": "<string>",
"client_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"completed_at": "2023-11-07T05:31:56Z",
"decision_summary": "<string>",
"document_expiry": "2023-12-25",
"document_type": "<string>",
"error_message": "<string>",
"external_id": "<string>",
"face_match_outcome": "<string>",
"liveness_outcome": "<string>",
"nationality": "<string>",
"verdict": "APPROVED"
}Cancel a KYC Application
Revoke a verification link before it is used.
The link stops working immediately and the applicant sees an explanation rather than a dead page. Cancelling an application that has already completed, expired or been cancelled returns 409 — there is nothing left to revoke.
curl --request POST \
--url http://localhost:8080/api/v1/kyc/applications/{id}/cancelimport requests
url = "http://localhost:8080/api/v1/kyc/applications/{id}/cancel"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('http://localhost:8080/api/v1/kyc/applications/{id}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/api/v1/kyc/applications/{id}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://localhost:8080/api/v1/kyc/applications/{id}/cancel"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:8080/api/v1/kyc/applications/{id}/cancel")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/kyc/applications/{id}/cancel")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"aml_hit_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"link_expires_at": "2023-11-07T05:31:56Z",
"link_url": "<string>",
"metadata": "<unknown>",
"reason_codes": "<unknown>",
"status": "CREATED",
"synced_at": "2023-11-07T05:31:56Z",
"aml_decision": "<string>",
"client_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"completed_at": "2023-11-07T05:31:56Z",
"decision_summary": "<string>",
"document_expiry": "2023-12-25",
"document_type": "<string>",
"error_message": "<string>",
"external_id": "<string>",
"face_match_outcome": "<string>",
"liveness_outcome": "<string>",
"nationality": "<string>",
"verdict": "APPROVED"
}Path Parameters
Response
Link revoked
The business-facing view of an application.
Deliberately carries no applicant identity — Dinari does not hold it. What it carries is the decision and enough provenance for the business to justify acting on it.
Where an application is in its life.
Mirrors Verifi's session vocabulary rather than inventing a Dinari one: a translation layer between two enums that mean the same thing is a place for them to drift apart.
CREATED, OPENED, SUBMITTED, PROCESSING, COMPLETED, EXPIRED, CANCELED, FAILED When Dinari last heard from the KYC service about this application.
The verdict Verifi reached.
NeedsReview is a first-class outcome, not an absence of one: Verifi never
auto-approves a possible AML match, so this is the state a compliance officer
is expected to resolve.
APPROVED, NEEDS_REVIEW, REJECTED