Subscriptions API

Manage which webhooks we deliver to and on what topics.

POST /v1/subscriptions

Create a webhook subscription.

curl https://api.aiactradar.com/v1/subscriptions \
  -H "Authorization: Bearer $AIACTRADAR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "webhook_url": "https://your-app.example/webhooks/aiactradar",
    "topics": ["gpai", "high-risk"],
    "source_filter": ["aioffice","aiboard","eurlex"],
    "severity_min": "medium",
    "language": "en"
  }'

Response includes webhook_secret — shown once:

{
  "subscription": {
    "id": "sub_…",
    "webhook_url": "...",
    "webhook_secret": "abc123… (64 hex chars)",
    "topics": ["gpai", "high-risk"],
    "source_filter": ["aioffice","aiboard","eurlex"],
    "severity_min": "medium",
    "language": "en",
    "enabled": true,
    "created_at": 1714000000000
  },
  "note": "webhook_secret is shown only once. Store it now to verify HMAC signatures.",
  "disclaimer": "Information only — not legal advice."
}

GET /v1/subscriptions

List your active subscriptions.

DELETE /v1/subscriptions/{id}

Soft-delete (sets enabled = 0). The record is kept for audit and so duplicate creation doesn't collide.

POST /v1/subscriptions/{id}/test

Send a synthetic test webhook to your URL. The payload uses severity:"info" and source:"test", signed with your real secret. Use this during onboarding to verify your receiver.

curl -X POST https://api.aiactradar.com/v1/subscriptions/$SUB_ID/test \
  -H "Authorization: Bearer $AIACTRADAR_API_KEY"

Tier limits

TierActive subscriptions
Indie1
Team5
GPAI25
Embedded200