TrustDPV's APIs and embed widget let you integrate portable trust scores and verified profiles directly into your marketplace, community, or app.
Get a user's full public profile data including their trust score, verified platforms, endorsement count, and profile link. Perfect for displaying trust badges on your platform.
curl https://trustdpv.com/api/public/trustdpv
{
"username": "trustdpv",
"full_name": "Nobody",
"bio": "Building portable trust",
"trust_score": 842,
"verified": true,
"member_since": "2026-04-18T...",
"endorsements": 12,
"platforms": [
{ "platform": "github", "verified": true },
{ "platform": "google", "verified": true }
],
"profile_url": "https://trustdpv.com/u/trustdpv"
}
{ "error": "User not found" }
All public API endpoints include Access-Control-Allow-Origin: * headers, so you can call them directly from browser-side JavaScript.
A lightweight endpoint for checking if a user exists and their current trust score. Ideal for backend validation โ when a user claims "I'm verified on TrustDPV," use this to confirm.
curl https://trustdpv.com/api/verify/trustdpv
{
"valid": true,
"username": "trustdpv",
"trust_score": 842,
"verified": true,
"last_updated": "2026-04-21T..."
}
When a seller adds their TrustDPV username, call the verify API to confirm they exist and check their score before displaying the badge.
Show a verified badge next to users who have linked and verified their TrustDPV profile in your community.
Validate TrustDPV usernames at signup or checkout โ reject fake profiles before they enter your system.
The easiest option. One line of code renders a styled trust badge on your page. No JavaScript coding needed โ just include the script with a username.
<!-- Default: dark theme, normal size -->
<script src="https://trustdpv.com/embed.js"
data-tdpv-user="trustdpv"></script>
<!-- Light theme -->
<script src="https://trustdpv.com/embed.js"
data-tdpv-user="trustdpv"
data-tdpv-theme="light"></script>
<!-- Compact size (smaller badge) -->
<script src="https://trustdpv.com/embed.js"
data-tdpv-user="trustdpv"
data-tdpv-size="compact"></script>
The TrustDPV username to display.
card (default) โ 3-line layout with score, username, verified badge. inline โ score + username on one line. minimal โ just score + checkmark, tiny. full โ card with platform badges and endorsement count.
dark (default) or light. Matches your site's background.
normal (default) or compact. Compact shows a smaller, inline badge.
<div class="trustdpv-badge" data-tdpv-user="trustdpv" data-tdpv-style="minimal"></div>
<div class="trustdpv-badge" data-tdpv-user="trustdpv" data-tdpv-style="inline"></div>
<div class="trustdpv-badge" data-tdpv-user="trustdpv"></div>
<div class="trustdpv-badge" data-tdpv-user="trustdpv" data-tdpv-style="full"></div>
<div class="trustdpv-badge" data-tdpv-user="trustdpv" data-tdpv-style="inline" data-tdpv-theme="light"></div>
The script fetches profile data from the Public API and renders a styled, clickable badge. It links to the user's full TrustDPV profile. If the user doesn't exist, nothing is rendered โ no errors shown to your visitors.
For sites where each user has their own TrustDPV profile โ marketplaces, directories, community platforms โ use the class method instead of the script tag. Place badges anywhere on your page and the widget renders them all automatically.
<!-- Each seller/user gets their own badge -->
<div class="trustdpv-badge" data-tdpv-user="seller1"></div>
<div class="trustdpv-badge" data-tdpv-user="seller2" data-tdpv-theme="light"></div>
<div class="trustdpv-badge" data-tdpv-user="seller3" data-tdpv-size="compact"></div>
<!-- Load the script ONCE at the bottom of your page -->
<script src="https://trustdpv.com/embed.js"></script>
Your backend outputs the username dynamically. Here's how it looks in common frameworks:
<div class="trustdpv-badge" data-tdpv-user="<?php echo htmlspecialchars($seller->trustdpv_username); ?>"></div>
<!-- Load once at page bottom -->
<script src="https://trustdpv.com/embed.js"></script>
{/* In your component */}
<div className="trustdpv-badge" data-tdpv-user={seller.trustdpvUsername} />
{/* In _app.js or layout.tsx */}
<script src="https://trustdpv.com/embed.js" />
<div class="trustdpv-badge" data-tdpv-user="{{ seller.trustdpv_username }}"></div>
<script src="https://trustdpv.com/embed.js"></script>
When the script loads, it scans the page for all elements with class="trustdpv-badge" and data-tdpv-user. It batches API calls (deduplicates same usernames) and renders a badge inside each element. Add data-tdpv-theme and data-tdpv-size per-element for different styles.
For serious platform integrations, use the versioned /api/v1/ endpoints with an API key in the X-API-Key header. The original public endpoints stay open for lightweight embeds and experiments, but major platforms should use the key-auth path. By using the API you agree to the API Terms of Service.
X-API-Key: tdpv_live_your_generated_key_here
Signed-in TrustDPV users can create and revoke keys via the API. Keys are shown only once when created.
POST /api/api-keys{ "name": "Facebook Marketplace", "tier": "pro" }
GET /api/api-keys
DELETE /api/api-keys/:id
curl https://trustdpv.com/api/v1/verify/trustdpv \
-H "X-API-Key: tdpv_live_your_generated_key_here"
free: 60/min ยท pro: 1000/min ยท enterprise: 10000/min. Responses include RateLimit-Limit and RateLimit-Remaining headers.
Use /api/v1/... for production integrations so future API changes can ship without breaking your implementation.
POST /api/v1/verify-batch
curl -X POST https://trustdpv.com/api/v1/verify-batch \
-H "X-API-Key: tdpv_live_your_key" \
-H "Content-Type: application/json" \
-d '{"usernames":["seller1","seller2","seller3"]}'
Up to 50 usernames per request. Returns a map of username โ verification result. Counts as 1 API request (not 50).
Get notified when trust events happen. Register a callback URL from your dashboard (Developer Tools section) and we\'ll POST to it when:
trust_score_change โ score went up or downverification_change โ account became verified or unverifiedEach delivery includes an X-TrustDPV-Signature header (HMAC-SHA256 of the body using your signing secret) so you can verify it\'s genuinely from us.
All public API endpoints share a rate limit of 60 requests per minute. Responses include standard RateLimit-* headers so you can monitor your usage.
API responses are cached for 5 minutes (Cache-Control: public, max-age=300). Use browser or server-side caching to reduce repeated calls for the same user.
These APIs are free for reasonable use. If you're building a high-volume integration (1M+ monthly requests), please contact us to discuss a dedicated arrangement. We reserve the right to block abusive traffic.
Get a trust badge as an SVG image โ works in emails, PDFs, and anywhere JavaScript can\'t run.
https://trustdpv.com/badge/USERNAME.svg
<img src="https://trustdpv.com/badge/trustdpv.svg" alt="TrustDPV" />
Badge SVGs are public. No API key or authentication required. Cached for 5 minutes.
Official SDKs to get you started faster.
npm install trustdpv
const TrustDPV = require('trustdpv');
const tdpv = new TrustDPV({ apiKey: 'tdpv_live_...' });
const result = await tdpv.verify('username');
const batch = await tdpv.verifyBatch(['a', 'b', 'c']);
composer require trustdpv/sdk
$tdpv = new TrustDPV('tdpv_live_...');
$result = $tdpv->verify('username');
$batch = $tdpv->verifyBatch(['a', 'b', 'c']);
Three ways to integrate, from easiest to most custom:
Copy-paste one line of HTML. No coding required.
<script src="https://trustdpv.com/embed.js" data-tdpv-user="USERNAME"></script>
Fetch profile data and render it however you like.
const res = await fetch('https://trustdpv.com/api/public/trustdpv');
const data = await res.json();
console.log(data.trust_score); // 842
Validate TrustDPV users on your server.
import requests
resp = requests.get('https://trustdpv.com/api/verify/trustdpv')
data = resp.json()
if data['valid'] and data['trust_score'] >= 500:
print("Trusted user!")
Integrate TrustDPV into your platform today. Free, fast, and no API key needed.
Create Your Profile