Signals API - examples console

Build against payloads tied to canonical context.

Copy request snippets, inspect response shape, and prepare approval-gated webhook delivery without losing the story URL and source posture behind each event.

Samples

Lookup / feed / webhook

Payload

Event object

Handler

Dedupe by event_id

Handoff

canonical_url

Request examples.

Keyed accessApproved webhooks

Example

Story event lookup

GET
story-lookup.sh
curl -H "X-API-Key: $ZETTAWIRE_API_KEY" \
  https://api.zettawire.com/api/v1/stories/signal-18431
  • Returns schema_version
  • Includes canonical_url
  • Includes archive_tier for paid packages

Example

Category feed

GET
category-feed.sh
curl -H "X-API-Key: $ZETTAWIRE_API_KEY" \
  "https://api.zettawire.com/api/v1/stories?category=security&limit=25"
  • Use category filters for prototype feeds
  • Paid keys unlock higher rate windows
  • Responses stay event-first

Example

Webhook handler

POST
webhook-handler.ts
app.post("/zettawire/webhook", verifySignature, (req, res) => {
  const signal = req.body.data;
  queueInternalAlert(signal.event_id, signal.canonical_url);
  res.sendStatus(204);
});
  • Webhook delivery requires package entitlement and written approval evidence
  • Handlers should dedupe by event_id
  • Canonical URLs power analyst handoff

Response payload shape.

GET /api/v1/stories/{story_id}

GET /api/v1/stories/{story_id}

Event payload

A safe preview of the object shape developers receive from account-backed Signals API access.

JSON
event-payload.json
{
  "schema_version": "2026-04-22",
  "event_id": "evt_20260422_red_sea_18431",
  "story_id": "signal-18431",
  "headline": "Port disruption near Suez corridor raises shipping risk",
  "category": "security",
  "score": 8.4,
  "source_confidence": "multi_source",
  "confirmation_status": "developing",
  "canonical_url": "https://zettawire.com/stories/signal-18431",
  "related_briefing_url": "https://zettawire.com/briefing/red-sea-shipping-risk",
  "geo": {
    "country": "Egypt",
    "region": "Red Sea",
    "lat": 30.04,
    "lng": 32.56
  },
  "affected_entities": [
    {
      "name": "Suez Canal",
      "type": "infrastructure",
      "confidence": 0.86
    },
    {
      "name": "Container shipping",
      "type": "sector",
      "confidence": 0.82
    }
  ],
  "key_facts": [
    "Shipping advisories point to elevated risk near a major chokepoint.",
    "The signal is linked to recent maritime security and regional escalation updates."
  ],
  "archive_tier": "signals_growth",
  "delivery_state": "api",
  "published_at": "2026-04-22T12:20:00Z"
}

Versioned

schema_version 2026-04-22 keeps clients explicit.

Canonical

Every event points back to a first-party ZettaWire URL.

Commercial

archive_tier and delivery_state separate evaluation from paid access.

Evidence-gated webhook delivery.

Written approvalsignal.published

Webhook sample payload

Delivery envelope

Handlers should dedupe by event_id and retain canonical_url for analyst handoff.

Approval
webhook-payload.json
{
  "schema_version": "2026-04-22",
  "event": "signal.published",
  "delivery_id": "del_01HW...",
  "data": {
    "event_id": "evt_20260422_red_sea_18431",
    "canonical_url": "https://zettawire.com/stories/signal-18431",
    "category": "security",
    "score": 8.4
  }
}

Beta access

Request Signals API beta access with source attribution.

We use this form to understand developer demand, integration use cases, and which public pages produce qualified API leads.

Source tracked

Attribution

Submissions are stored through newsletter attribution today, so the growth dashboard can group leads by page, campaign, and source while we keep API-key issuance entitlement-gated.

Sourcesignals_api_examples
Page/signals-api/examples