Aether partner API

Integrate verified discovery in an afternoon

Two endpoints. Catalog search returns published listings with their trust tier and latest signed report; verification lets you re-check any signature yourself, without trusting us. The full contract is published as OpenAPI 3.1 at /api/public/openapi.json — import it straight into Postman, Insomnia, or a client generator.

Authentication

Catalog search requires a partner key sent as X-Api-Key. Create and rotate keys on the API keys screen. Verification is open and needs no key.

curl -H "X-Api-Key: aek_live_…" \
  "https://aether.app/api/public/catalog?tier=verified&tags=No%20model%20training&limit=20"

Rate limits

Each key has a per-minute budget (60 by default). Every response carries the current state, and a breach returns 429 — back off until the reset timestamp.

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 2026-08-30T16:41:00.000Z

GET /api/public/catalog

Filters: q, tier, kind, category, tags, scannedWithinDays, limit, offset. Comma-separate multi-values; compliance tags are ANDed.

{
  "total": 128,
  "limit": 20,
  "offset": 0,
  "results": [
    {
      "slug": "ledger-agent",
      "name": "Ledger Agent",
      "kind": "agent",
      "trustTier": "verified",
      "complianceTags": ["No model training", "EU data residency"],
      "latestScan": {
        "scanId": "6f1e…",
        "score": 94,
        "verdict": "pass",
        "signatureKeyId": "v2",
        "ageDays": 3.2
      },
      "trustCenterUrl": "/trust-center/ledger-agent"
    }
  ]
}

GET /api/public/verify-report

Pass scanId, or POST a report + signature pair. Signatures are versioned, so rotated keys still verify historical reports.

curl "https://aether.app/api/public/verify-report?scanId=6f1e…"

{ "valid": true, "keyId": "v2", "rotatedKey": false, "score": 94, "verdict": "pass" }