API Reference
Complete documentation for the Bazar verification API. All endpoints return JSON and follow RESTful conventions.
Base URL
https://api.bazarproof.comAuthentication
UCP discovery endpoints (/.well-known/ucp and /ucp/v1/*) are public and do not require authentication. They are designed to be accessed by AI agents and platforms for trust discovery.
Rate Limits: UCP endpoints allow 200-300 requests per minute per IP. For higher limits, contact us for an API key.
Endpoints
/.well-known/ucpUCP Discovery
Discover UCP capabilities and seller verification for a merchant. One lookup parameter is required.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
merchantId | string | No | The merchant's unique identifier |
shop | string | No | Shopify myshopify.com domain |
platform | string | No | Platform name (for non-Shopify lookups) |
accountId | string | No | Platform account identifier |
domain | string | No | Primary storefront domain |
Response
{
"ucp": {
"version": "2026-01-11",
"services": { ... },
"capabilities": [{
"name": "com.bazarproof.seller_verification",
"version": "2026-01-11",
"extends": "dev.ucp.shopping.checkout"
}]
},
"seller_verification": {
"status": "verified",
"level": "business_attested",
"trust_score": 85,
"badges": [...]
}
}/api/v1/platforms/linkLink Platform Account
Associate a platform account with a Bazar merchant.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization | header | Yes | Bearer token |
x-bazar-platform | header | Yes | Platform identifier (e.g., amazon, ebay) |
x-platform-account-id | header | No | Platform account ID (optional if in token) |
Request Body
{
"platform": "amazon",
"externalAccountId": "seller-123",
"merchantId": "merchant_abc123",
"storeDomain": "seller-123.amazon.com",
"primaryDomain": "example.com",
"metadata": {
"region": "NA"
}
}Response
{
"id": "platform-account_123",
"merchantId": "merchant_abc123",
"platform": "amazon",
"externalAccountId": "seller-123",
"storeDomain": "seller-123.amazon.com",
"primaryDomain": "example.com",
"metadata": {
"region": "NA"
}
}/ucp/v1/seller-verification/:merchantIdGet Seller Verification
Get detailed seller verification data in UCP format.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
merchantId | string | Yes | The merchant's unique identifier |
Response
{
"ucp": {
"version": "2026-01-11",
"capabilities": [{
"name": "com.bazarproof.seller_verification",
"version": "2026-01-11"
}]
},
"seller_verification": {
"status": "verified",
"level": "business_attested",
"trust_score": 85,
"verified_at": "2026-01-10T15:30:00Z",
"verification_methods": ["identity", "business_registration"],
"badges": [{
"level": "business_attested",
"label": "Business Attested",
"color": "#FFD700"
}],
"attestations": [{
"chain": "hedera",
"transaction_hash": "0.0.123456@1704912600.123456789",
"explorer_url": "https://hashscan.io/mainnet/transaction/0.0.123456@1704912600.123456789"
}],
"proof_url": "https://api.bazarproof.com/ucp/v1/seller-verification/merchant_123/proof"
}
}/ucp/v1/seller-verification/:merchantId/proofGet Verification Proof
Get cryptographic proof for external validation of verification.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
merchantId | string | Yes | The merchant's unique identifier |
Response
{
"ucp": { ... },
"proof": {
"verification_id": "ver_123",
"merchant_id": "merchant_123",
"leaf_data": {
"verification_id": "ver_123",
"merchant_id": "merchant_123",
"level": "standard",
"trust_score": 85
},
"hash_algorithm": "sha256",
"merkle_proof": {
"leaf_hash": "abc123...",
"path": [...],
"root_hash": "def456...",
"version": 1
},
"blockchain": {
"transaction_hash": "0.0.123456@1704912600.123456789",
"chain_name": "Hedera",
"explorer_url": "https://hashscan.io/mainnet/transaction/0.0.123456@1704912600.123456789"
},
"verification_steps": [
"1. Reconstruct leaf hash: sha256(JSON.stringify(leaf_data, sorted keys))",
"2. Verify Merkle path: follow path from leaf to root",
"3. Check root match: computed root should match blockchain root",
"4. Verify on blockchain: check transaction on explorer URL"
]
}
}/ucp/v1/seller-verification/:merchantId/validateValidate Proof
Validate a proof submitted by an agent or platform.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
merchantId | string | Yes | The merchant's unique identifier |
Request Body
{
"leaf_data": {
"verification_id": "ver_123",
"merchant_id": "merchant_123",
"level": "standard",
"trust_score": 85
},
"merkle_proof": {
"leaf_hash": "abc123...",
"path": [...],
"root_hash": "def456...",
"version": 1
}
}Response
{
"ucp": { ... },
"validation": {
"valid": true,
"checks": {
"leaf_hash_match": true,
"merkle_proof_valid": true,
"verification_exists": true
},
"verification": {
"id": "ver_123",
"merchant_id": "merchant_123",
"status": "APPROVED",
"trust_score": 85,
"blockchain_anchored": true
}
}
}/ucp/v1/schema/seller-verificationGet JSON Schema
Get the JSON Schema for the seller verification extension.
Response
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://bazarproof.com/ucp/schemas/seller_verification.json",
"name": "com.bazarproof.seller_verification",
"version": "2026-01-11",
"title": "Seller Verification",
"type": "object",
"properties": {
"seller_verification": { ... }
},
"$defs": { ... }
}Error Codes
The API uses standard HTTP status codes and returns error details in JSON format.
| Code | Status | Description |
|---|---|---|
| 200 | OK | Request successful |
| 400 | Bad Request | Missing required parameter or invalid request body |
| 404 | Not Found | Merchant or verification not found |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Server Error | Internal server error |
Need more help?
Check out our UCP integration guide or contact us for support.