Developers

API & Embeds

Your feed — real news plus the AI articles written for your publication — is available as a read-only JSON API and as a drop-in embeddable widget. Use it to put your feed on WordPress, Ghost, a landing page, or inside another app.

1. Get an API key

In the app, open Settings → Developer & API and create a key. Keys look like bw_live_… and are read-only. You can revoke any key instantly.

Pass the key as a query param ?key=… or as a header Authorization: Bearer ….

2. Embed the widget (easiest)

Drop this iframe on any page. It renders a live, styled list of your latest stories and needs no build step. Works in a WordPress or Ghost Custom HTML block.

<iframe
  src="https://beatwire.ai/embed/feed?key=YOUR_API_KEY&limit=8&theme=light"
  style="width:100%;max-width:520px;height:520px;border:1px solid #ececef;border-radius:12px"
  loading="lazy" title="Latest stories"></iframe>

Widget params: limit (1–30), type (all · news · ai), category, theme (light · dark), accent (hex, no #), title (0 to hide the header).

3. The JSON API

Base URL https://beatwire.ai/api/v1. Responses are JSON, CORS-open, and lightly edge-cached.

GET /feed

Your combined feed. Params: limit (1–100), type (all · news · ai), category.

curl "https://beatwire.ai/api/v1/feed?key=YOUR_API_KEY&limit=20&type=all"
{
  "publication": { "name": "…", "slug": "…" },
  "count": 20,
  "total": 84,
  "items": [
    {
      "id": "…",
      "type": "story",        // "story" (real news) | "article" (AI)
      "ai": false,
      "headline": "…",
      "summary": "…",
      "category": "Technology",
      "url": "https://…",
      "image": "https://… | null",
      "publishedAt": "2026-08-22T09:42:00Z",
      "isBreaking": false,
      "signal": 94,
      "velocity": 71,
      "sources": [{ "name": "Reuters", "url": "https://…" }]
    }
  ]
}

GET /stories/{id}

A single feed item in full (AI articles include a body).

curl "https://beatwire.ai/api/v1/stories/STORY_ID?key=YOUR_API_KEY"

Notes

  • • Keys are read-only and scoped to a single publication.
  • • Responses are cached at the edge for ~60s — expect near-real-time, not instant.
  • • Errors return { "error": "…" } with a 4xx/5xx status.
  • • Need write access, webhooks, or higher limits? Get in touch from Settings.