API Documentation

Everything you need to integrate TrustPing into your agent workflow. Base URL: https://trustping.co

Endpoints

POST /v1/auth/signup POST /v1/auth/apikey POST /v1/verify/email POST /v1/verify/url POST /v1/verify/domain GET /v1/usage GET /v1/health Authentication Rate Limits Errors
POST /v1/auth/signup

Create a new account and get an API key. The key is shown once — store it securely.

No authentication required

Request body

FieldTypeDescription
emailrequiredstringYour email address

Example request

curl
curl -X POST https://trustping.co/v1/auth/signup \
  -H "Content-Type: application/json" \
  -d '{"email": "you@company.com"}'

Example response — 201 Created

JSON
{
  "api_key": "tp_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
  "plan": "free",
  "daily_limit": 50,
  "message": "Store this API key securely. It cannot be retrieved again."
}
POST /v1/auth/apikey

Regenerate your API key. The previous key is immediately invalidated.

Requires authentication

Example request

curl
curl -X POST https://trustping.co/v1/auth/apikey \
  -H "Authorization: Bearer tp_live_..."

Example response — 200 OK

JSON
{
  "api_key": "tp_live_new_key_here...",
  "message": "Previous key has been invalidated."
}
POST /v1/verify/email

Verify an email address is valid, deliverable, and trustworthy. Checks syntax, MX records, SMTP reachability, disposable domain detection, and domain age.

Requires authentication

Request body

FieldTypeDescription
emailrequiredstringEmail address to verify

Example request

curl
curl -X POST https://trustping.co/v1/verify/email \
  -H "Authorization: Bearer tp_live_..." \
  -H "Content-Type: application/json" \
  -d '{"email": "contact@company.com"}'

Example response — 200 OK

JSON
{
  "entity": "contact@company.com",
  "type": "email",
  "trust_score": 0.87,
  "verdict": "pass",
  "signals": [
    { "check": "syntax", "status": "pass", "detail": "Valid email format" },
    { "check": "disposable_domain", "status": "pass", "detail": "Not a known disposable email provider" },
    { "check": "mx_records", "status": "pass", "detail": "Valid MX records found (Google Workspace)" },
    { "check": "smtp_reachable", "status": "pass", "detail": "SMTP server accepts recipient" },
    { "check": "domain_age", "status": "pass", "detail": "Domain has active DNS configuration" }
  ],
  "checked_at": "2026-03-21T00:26:46.014Z",
  "cached": false,
  "community_checks": 142
}

Signals returned

CheckStatusDescription
syntaxpass/failEmail format validation
disposable_domainpass/failChecked against ~150 known disposable providers
mx_recordspass/failDomain has valid MX records
smtp_reachablepass/fail/inconclusiveSMTP server accepts the recipient address
domain_agepass/inconclusiveDomain has active DNS configuration
POST /v1/verify/url

Verify a URL is live, safe, and trustworthy. Checks DNS resolution, SSL certificate, HTTP status, redirect chain, Google Safe Browsing, and domain age.

Requires authentication

Request body

FieldTypeDescription
urlrequiredstringFull URL to verify (must include http:// or https://)

Example request

curl
curl -X POST https://trustping.co/v1/verify/url \
  -H "Authorization: Bearer tp_live_..." \
  -H "Content-Type: application/json" \
  -d '{"url": "https://stripe.com/pricing"}'

Example response — 200 OK

JSON
{
  "entity": "https://stripe.com/pricing",
  "type": "url",
  "trust_score": 0.95,
  "verdict": "pass",
  "signals": [
    { "check": "url_format", "status": "pass", "detail": "Valid URL format" },
    { "check": "dns_resolves", "status": "pass", "detail": "Resolves to 3.228.62.110" },
    { "check": "ssl_valid", "status": "pass", "detail": "Valid SSL certificate, expires 2026-05-21, issued by DigiCert Inc" },
    { "check": "http_status", "status": "pass", "detail": "Returns HTTP 200" },
    { "check": "redirect_chain", "status": "pass", "detail": "No suspicious redirects" },
    { "check": "safe_browsing", "status": "pass", "detail": "Not flagged by Google Safe Browsing" },
    { "check": "domain_age", "status": "pass", "detail": "Domain has active DNS configuration" }
  ],
  "checked_at": "2026-03-21T00:26:46.014Z",
  "cached": false,
  "community_checks": 89
}

Signals returned

CheckStatusDescription
url_formatpass/failValid URL with http/https protocol
dns_resolvespass/failHostname resolves to an IP address
ssl_validpass/fail/warnSSL certificate is valid and not expired
http_statuspass/fail/warnReturns HTTP 2xx status code
redirect_chainpass/warnNo suspicious redirect patterns
safe_browsingpass/failNot flagged by Google Safe Browsing
domain_agepass/inconclusiveDomain has active DNS configuration
POST /v1/verify/domain

Get a comprehensive trust profile of a domain. Checks WHOIS registration, DNS records, SSL certificate, nameserver quality, Google Safe Browsing, and domain age.

Requires authentication

Request body

FieldTypeDescription
domainrequiredstringDomain name to verify (e.g. "google.com")

Example request

curl
curl -X POST https://trustping.co/v1/verify/domain \
  -H "Authorization: Bearer tp_live_..." \
  -H "Content-Type: application/json" \
  -d '{"domain": "google.com"}'

Example response — 200 OK

JSON
{
  "entity": "google.com",
  "type": "domain",
  "trust_score": 0.95,
  "verdict": "pass",
  "signals": [
    { "check": "whois_registered", "status": "pass", "detail": "Domain is registered with active DNS" },
    { "check": "dns_records", "status": "pass", "detail": "A, MX, AAAA, TXT records present" },
    { "check": "mx_records", "status": "pass", "detail": "Has MX records (can receive email)" },
    { "check": "nameservers", "status": "info", "detail": "Google Cloud DNS (enterprise-grade)" },
    { "check": "domain_age", "status": "pass", "detail": "Domain has active SOA record" },
    { "check": "ssl_certificate", "status": "pass", "detail": "Valid, issued by Google Trust Services, expires 2026-05-18" },
    { "check": "safe_browsing", "status": "pass", "detail": "Not flagged by Google Safe Browsing" }
  ],
  "checked_at": "2026-03-21T00:26:46.383Z",
  "cached": false,
  "community_checks": 234
}

Signals returned

CheckStatusDescription
whois_registeredpass/failDomain is registered with active DNS
dns_recordspass/failA, MX, AAAA, TXT record presence
mx_recordspassDomain can receive email
nameserversinfoNameserver provider and quality
domain_agepass/inconclusiveDomain has active SOA record
ssl_certificatepass/fail/warnSSL cert validity, issuer, and expiry
safe_browsingpass/failNot flagged by Google Safe Browsing
GET /v1/usage

Get your current usage stats for today, including breakdown by endpoint and remaining quota.

Requires authentication

Example request

curl
curl https://trustping.co/v1/usage \
  -H "Authorization: Bearer tp_live_..."

Example response — 200 OK

JSON
{
  "plan": "free",
  "daily_limit": 50,
  "used_today": 12,
  "remaining_today": 38,
  "total_all_time": 347,
  "breakdown": {
    "email": 5,
    "url": 4,
    "domain": 3
  },
  "period_resets_at": "2026-03-22T00:00:00.000Z"
}
GET /v1/health

Health check endpoint. Use this to verify the API is running.

No authentication required

Example response — 200 OK

JSON
{
  "status": "healthy",
  "version": "0.1.0",
  "uptime_seconds": 84723
}

Authentication

All verification and usage endpoints require an API key. Include it in the Authorization header:

Header
Authorization: Bearer tp_live_your_api_key_here

API keys are prefixed with tp_live_ and are 48 characters long. They are hashed on our end — we never store your key in plaintext. If you lose your key, use the /v1/auth/apikey endpoint to generate a new one.

Rate Limits

Daily limits are enforced per API key and reset at midnight UTC.

PlanDaily limitPrice
Free50 checks$0
Pro5,000 checks$19/month
Scale50,000 checks$49/month

Rate limit headers are included on every response:

Response headers
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 38
X-RateLimit-Reset: 2026-03-22T00:00:00.000Z

When you exceed your limit, you'll receive a 429 response with details about when your quota resets.

Errors

All errors follow the same JSON structure:

Error response
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Missing Authorization header. Use: Bearer tp_live_..."
  }
}
StatusCodeMeaning
400VALIDATION_ERRORInvalid or missing request body field
401UNAUTHORIZEDMissing Authorization header
403FORBIDDENInvalid API key
404NOT_FOUNDEndpoint does not exist
409EMAIL_EXISTSAccount with this email already exists
429RATE_LIMIT_EXCEEDEDDaily quota exceeded
500INTERNAL_ERRORSomething went wrong on our end

Response Fields

All verification endpoints return the same response structure:

FieldTypeDescription
entitystringThe email, URL, or domain that was checked
typestringemail, url, or domain
trust_scorenumber0.0 to 1.0 — higher is more trustworthy
verdictstringpass (≥0.7), warn (≥0.4), or fail (<0.4)
signalsarrayIndividual check results with check name, status, and detail
checked_atstringISO 8601 timestamp of the check
cachedbooleanWhether this result came from cache (1 hour TTL)
community_checksnumberHow many other agents have checked this entity