Create verifications

Begins a KYC/KYB verification of a subject through the wired provider — an existing subject by id, or one created inline from the request.

POST /v1/compliance/verifications

Addresshttps://api.hanzo.ai/v1/compliance/verifications
MethodPOST
Operationpost_compliance_verifications
AuthAuthorization: Bearer $HANZO_API_KEY

Begins a KYC/KYB verification of a subject through the wired provider — an existing subject by id, or one created inline from the request. The returned status is provider-reported and never terminal on a fresh start: starting a verification can never yield a verified record, and a provider error is a 502, never a verification.

Request

5 fields, body application/json (required).

FieldInTypeRequiredDescription
emailbodystring—Email is an inline subject's contact email, sealed at rest.
kindbodystring—Kind is an inline subject's party type: "individual" (KYC) or "business" (KYB).
namebodystring—Name is an inline subject's name, sealed at rest.
refbodystring—Ref is the org's own opaque external id for an inline subject.
subjectIdbodystring—SubjectID names an existing subject to verify; empty creates one inline.

Response

StatusBodyMeaning
201compliance.checkViewcreated
defaultproblem-detailsrefused

201 body — 10 fields.

FieldInTypeAlwaysDescription
createdAtbodyinteger (int64)—CreatedAt is the unix second the verification was started.
decidedAtbodyinteger (int64)—DecidedAt is the unix second a terminal status was recorded.
decidedBybodystring—DecidedBy records who settled a terminal status: the provider name, or a reviewer's user id for a recorded manual decision.
idbodystring—ID is the verification's opaque id.
kindbodystring—Kind is the party type: "individual" (KYC) or "business" (KYB).
providerbodystring—Provider is the verification provider this check runs through.
statusbodystring—Status is the check's state: pending, provider_verified, provider_rejected, manual_review, or expired (provider-reported), or reviewer_confirmed — the one value a privileged human reviewer records, never a provider.
subjectIdbodystring—SubjectID is the opaque id of the subject under verification.
updatedAtbodyinteger (int64)—UpdatedAt is the unix second the verification last changed.
verifyUrlbodystring—VerifyURL is the provider's hosted verification flow for the subject, when one exists.

Failure carries the platform error shape — see Errors.

Examples

hanzo compliance verifications create
import { Configuration, ComplianceApi } from 'hanzoai';

const api = new ComplianceApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postComplianceVerifications({ email: "<email>", kind: "<kind>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import ComplianceApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = ComplianceApi(client).post_compliance_verifications(email="<email>", kind="<kind>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.ComplianceAPI.PostComplianceVerifications(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, compliance_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = compliance_api::post_compliance_verifications(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.ComplianceApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new ComplianceApi(client).postComplianceVerifications();
curl -X POST https://api.hanzo.ai/v1/compliance/verifications \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "email": "<email>",
       "kind": "<kind>"
     }'

MCP reaches compliance through the compliance tool, which names its 16 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "get_compliance_accreditation"
         }
       }
     }'

Compliance API · All Hanzo APIs · Interactive reference

Was this page useful?