Premium API

Hosted verification service with analytics, webhooks, and rate-limited tiers.

Pricing Tiers

TierRate LimitAnalyticsWebhooksMonthly
Free10 req/min$0
Pro100 req/minFull10$49
EnterpriseUnlimitedFull + SLA100$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 }