No SDK is published yet — integrate directly against the REST API.
In the meantime the whole API is JSON over HTTPS with a single auth header, so a working integration is a few lines in any language using its standard HTTP client. The examples below call the same endpoints documented in the API reference and run as written.
Node.js
Global fetch on Node 18+. No dependencies required.
NO PACKAGE — USE fetchPython
The requests library, or anything else that speaks HTTP.
NO PACKAGE — USE requestsPHP
ext-curl on PHP 8+. No Composer package required.
NO PACKAGE — USE curlGo
net/http from the standard library.
NO PACKAGE — USE net/httpThere are no published TrustVerify SDK packages. Nothing exists on npm, PyPI, Packagist or pkg.go.dev today, and we would rather say so than have your first install command fail. When a client library ships it will be announced in the changelog and this page will name a package you can actually install.
// Node.js 18+ — no dependencies, global fetch.
const TV_BASE = 'https://api.trustverify.co.uk/api/v1';
const res = await fetch(`${TV_BASE}/kyc/verify`, {
method: 'POST',
headers: {
// tv_live_sk_… or tv_test_sk_…
Authorization: `Bearer ${process.env.TV_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
documentType: 'passport',
documentImage: documentBase64,
selfieImage: selfieBase64,
// The person's name is required while AML screening is on (the default).
metadata: { firstName: 'Jane', lastName: 'Smith', reference: 'user_12345' },
}),
});
if (!res.ok) throw new Error(`TrustVerify ${res.status}: ${await res.text()}`);
const result = await res.json(); // { checkId, status, score, … }
console.log(result.status, result.score);# Python 3.8+ — pip install requests
import os, requests
TV_BASE = "https://api.trustverify.co.uk/api/v1"
res = requests.post(
f"{TV_BASE}/kyc/verify",
headers={
"Authorization": f"Bearer {os.environ['TV_API_KEY']}",
"Content-Type": "application/json",
},
json={
"documentType": "passport",
"documentImage": document_b64,
"selfieImage": selfie_b64,
# The name of the person is required while AML screening is on (the default).
"metadata": {"firstName": "Jane", "lastName": "Smith", "reference": "user_12345"},
},
timeout=60,
)
res.raise_for_status()
result = res.json() # {"checkId": ..., "status": ..., "score": ...}
print(result["status"], result["score"])Rather than language SDKs, TrustVerify offers ready-made e-commerce integrations: a WooCommerce plugin, downloadable from the Integrations page in your dashboard, which scores each order placed through the shop's checkout; and a Shopify app, connected by request for now (email support, and once the store is enabled it is connected from the same page), which on a paid plan scores each new order and tags it tv-approved, tv-review or tv-high-risk, cancelling high-risk orders only for a store that opted in.
Full request and response schemas for every endpoint are in the API reference at /api-documentation.