Premium API
Hosted verification service with analytics, webhooks, and rate-limited tiers.
Pricing Tiers
| Tier | Rate Limit | Analytics | Webhooks | Monthly |
|---|---|---|---|---|
| Free | 10 req/min | — | — | $0 |
| Pro | 100 req/min | Full | 10 | $49 |
| Enterprise | Unlimited | Full + SLA | 100 | $299 |
Authentication
All authenticated endpoints require a Bearer token:
Authorization: Bearer ig_your_api_key_here
Public Endpoints
GET /api/v1/stats
Protocol statistics. No auth required.
// Response
{
"totalCommits": 1234,
"totalVerifies": 1100,
"verifyRate": "89.1%",
"isPaused": false,
"verifyFee": 0,
"totalFeesCollected": 0
}
GET /api/v1/pricing
Returns pricing tier details.
Authenticated Endpoints
POST /api/v1/verify
Check intent status for a wallet + app combination.
// Request
{
"wallet": "UserPublicKey...",
"appId": "AppPublicKey..."
}
// Response
{
"found": true,
"intentHash": "abc123...",
"committedAt": 1700000000,
"expiresAt": 1700000300,
"isExpired": false
}
GET /api/v1/intents/:wallet
List all pending intents for a wallet across all apps.
GET /api/v1/analytics
Pro+ 24-hour analytics breakdown with per-endpoint latency and error rates.
Webhooks
POST /api/v1/webhooks
Pro+ Create a webhook subscription.
// Request
{
"url": "https://your-app.com/webhook",
"events": ["commit", "verify", "expire"]
}
// Webhook payload
{
"event": "verify",
"wallet": "...",
"appId": "...",
"intentHash": "...",
"timestamp": 1700000000,
"txSignature": "..."
}
Valid Events
commit, verify, revoke, expire, pause, unpause
GET /api/v1/webhooks
List your webhook subscriptions.
DELETE /api/v1/webhooks/:id
Delete a webhook subscription.
Admin Endpoints
POST /api/v1/keys
Create a new API key (admin only).
{
"tier": "pro",
"label": "My dApp Production"
}
GET /api/v1/keys
List all API keys (admin only).
Rate Limiting
Rate limits are enforced per API key with a sliding window:
// Response headers
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1700000060
When rate limited, the API returns 429 Too Many Requests.
Health Check
GET /health
// { "status": "ok", "timestamp": 1700000000 }