API Documentation

The Onboard3 API lets you verify blockchain credentials in your own applications. Verification is always free and requires no API key. API keys unlock usage tracking, higher rate limits, and webhook notifications.

Base URL

https://blockuserve.vercel.app/api/v1

Format

JSON

Auth

Bearer token (optional)

Authentication

The verify endpoint is public and requires no authentication. Add an API key to track usage and access higher rate limits.

With API Key (optional)
curl https://blockuserve.vercel.app/api/v1/verify/OB3-TRADE-A7K2 \
  -H "Authorization: Bearer ob3_live_sk_your_key_here"

Verify a Credential

GET/v1/verify/{ob3_code}

Verify any credential by its OB3 code. Returns credential details, current status, and blockchain proof if anchored.

Path Parameters

ob3_code

The OB3 code to verify

Format: OB3-[TYPE]-[4CHARS] · Example: OB3-TRADE-A7K2

Example Request
curl https://blockuserve.vercel.app/api/v1/verify/OB3-MED-9XP1

Response Format

✓ Verified Credential

200 OK
{
  "verified": true,
  "ob3_code": "OB3-MED-9XP1",
  "status": "active",
  "credential": {
    "title": "Registered Nurse (RN)",
    "holder_name": "Jane Smith",
    "credential_type": "medical",
    "credential_subtype": "Registered Nurse (RN)",
    "issuing_organization": "State of Florida",
    "issue_date": "2022-01-15",
    "expiry_date": "2026-01-14"
  },
  "blockchain": {
    "network": "polygon",
    "tx_hash": "0xd6bf7f08853988...",
    "block_number": 86347344,
    "anchored_at": "2026-05-03T13:25:34Z",
    "explorer_url": "https://polygonscan.com/tx/0xd6bf..."
  },
  "meta": {
    "response_ms": 47,
    "verified_at": "2026-05-03T14:00:00Z",
    "version": "v1"
  }
}

✗ Not Found

404 Not Found
{
  "verified": false,
  "ob3_code": "OB3-TRADE-XXXX",
  "error": {
    "code": "CREDENTIAL_NOT_FOUND",
    "message": "No credential found with OB3 code OB3-TRADE-XXXX"
  },
  "meta": {
    "response_ms": 23,
    "version": "v1"
  }
}

Credential Status Values

StatusverifiedDescription
activetrueValid and current
expiringtrueValid but expires within 30 days
expiredfalsePast expiry date
revokedfalseManually revoked
pendingfalseAwaiting payment

Rate Limits

PlanMonthly VerificationsPrice
Public (no key)100/dayFree
Starter5,000/month$99/mo
Growth50,000/month$299/mo
EnterpriseUnlimitedContact us
Get Your API Key →

Code Examples

JavaScript / Node.js

JavaScript
const response = await fetch(
  'https://blockuserve.vercel.app/api/v1/verify/OB3-TRADE-A7K2',
  {
    headers: {
      'Authorization': 'Bearer ob3_live_sk_your_key'
    }
  }
)

const data = await response.json()

if (data.verified) {
  console.log('Valid credential:', data.credential.holder_name)
  console.log('Blockchain proof:', data.blockchain?.tx_hash)
} else {
  console.log('Not verified:', data.error.message)
}

Python

Python
import requests

response = requests.get(
    'https://blockuserve.vercel.app/api/v1/verify/OB3-TRADE-A7K2',
    headers={'Authorization': 'Bearer ob3_live_sk_your_key'}
)

data = response.json()

if data['verified']:
    print(f"Valid: {data['credential']['holder_name']}")
else:
    print(f"Not verified: {data['error']['message']}")

PHP

PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 
  'https://blockuserve.vercel.app/api/v1/verify/OB3-TRADE-A7K2');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  'Authorization: Bearer ob3_live_sk_your_key'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = json_decode(curl_exec($ch), true);
curl_close($ch);

if ($response['verified']) {
  echo "Valid: " . $response['credential']['holder_name'];
}

Webhooks

Receive real-time notifications when credentials change status — expiring, expired, or revoked. Configure webhooks in your dashboard.

Coming Soon

Webhook subscriptions are available on Starter plan and above.