curl --request GET \
--url http://localhost:8080/api/v1/kyc/applications/{id}import requests
url = "http://localhost:8080/api/v1/kyc/applications/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('http://localhost:8080/api/v1/kyc/applications/{id}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:8080/api/v1/kyc/applications/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/kyc/applications/{id}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.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"
}Get a KYC Application
Fetch one KYC application by id.
Returns the decision, the reason codes and the non-identifying document facts. It deliberately does not return your customer’s name, document number or images: Dinari does not hold them. They stay inside the verification service, which releases them only to an authorised compliance operator.
curl --request GET \
--url http://localhost:8080/api/v1/kyc/applications/{id}import requests
url = "http://localhost:8080/api/v1/kyc/applications/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('http://localhost:8080/api/v1/kyc/applications/{id}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:8080/api/v1/kyc/applications/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/v1/kyc/applications/{id}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.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
One application
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