Skip to main content

Prerequisites

  • A Grantex developer API key
  • A domain you control
  • Permission to publish a DNS TXT record
Use a did:web identifier matching the domain, for example did:web:acme.example.

1. Register the Organization

curl -X POST https://api.grantex.dev/v1/registry/orgs \
  -H "Authorization: Bearer $GRANTEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "did": "did:web:acme.example",
    "name": "Acme AI",
    "description": "Agent publisher",
    "website": "https://acme.example",
    "contact": {
      "security": "security@acme.example",
      "dpo": "dpo@acme.example"
    },
    "requestVerification": true,
    "verificationMethod": "dns-txt"
  }'
Save the complete response immediately:
{
  "orgId": "treg_01HXYZ...",
  "did": "did:web:acme.example",
  "name": "Acme AI",
  "trustLevel": "basic",
  "verificationToken": "grantex-verify-...",
  "instructions": "Add a DNS TXT record at _grantex-verify.acme.example with value ..."
}
The verification token is returned only at registration time. Store it securely until verification completes; the service retains only its hash.

2. Publish the DNS Challenge

Create this record using the exact host and value returned in instructions:
SettingValue
TypeTXT
Host_grantex-verify.acme.example
ValueThe exact verificationToken
TTL300 or your provider’s default
Confirm the public record before calling the API:
dig TXT _grantex-verify.acme.example
DNS propagation time is controlled by your provider and existing TTLs; no fixed completion time is guaranteed.

3. Trigger Verification

curl -X POST "https://api.grantex.dev/v1/registry/orgs/treg_01HXYZ.../verify-dns" \
  -H "Authorization: Bearer $GRANTEX_API_KEY"
A successful response resembles:
{
  "orgId": "treg_01HXYZ...",
  "verified": true,
  "verificationMethod": "dns-txt",
  "trustLevel": "verified",
  "verifiedAt": "2026-07-10T12:00:00.000Z",
  "domain": "acme.example"
}
If the call returns DNS_VERIFICATION_FAILED, verify that the TXT value has no added quotes/spaces and query more than one public recursive resolver before retrying.

4. Confirm the Public Record

curl "https://api.grantex.dev/v1/registry/orgs/did%3Aweb%3Aacme.example"
Check for verificationLevel: "verified", verificationMethod: "dns-txt", and the dns-verified marker.

Portal Notes

The portal routes are /dashboard/registry and /dashboard/registry/register. Regardless of client, keep the one-time token returned by registration: it is required to create the DNS record.

Current Limitations

The public API does not currently implement .well-known verification, report uploads, manual reviews, compliance-badge applications, public badge assets, or a trust-badge web component. Do not invent URLs or verification claims for those features.