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:
| Setting | Value |
|---|
| Type | TXT |
| Host | _grantex-verify.acme.example |
| Value | The exact verificationToken |
| TTL | 300 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.