ON

Developer API

Programmatic access to our stories, AI bias analysis, framing spectra, cross-border coverage and the curated source-ownership directory.

Authentication

Create a key on the API keys page (requires a Researcher / Professional subscription or an API plan). Send it with every request:

curl -H "Authorization: Bearer <key>" \
  "https://objective-news.org/api/v1/stories?scope=WORLD&take=20"

# or: -H "x-api-key: <key>"

Endpoints

GET /api/v1/stories                     ?scope=WORLD|NATIONAL  &country=SI  &order=recent|sources|views  &take (<=100)  &offset
GET /api/v1/stories/{slug}              ?locale=en|sl|de|hr|it|es|fr   – detail: synthesis, outlets, claims
GET /api/v1/stories/{slug}/spectrum     ?locale=…                      – progressive/center/conservative framing of the event
GET /api/v1/stories/{slug}/crossborder  ?locale=…                      – the same event covered in other countries
GET /api/v1/sources                     ?country=SI                    – outlet directory: ownership type + editorial lean
GET /api/v1/publications                ?topic=MEDICINE  &journal=nature  &order=latest|top  &minScore=70  &oa=1  &take (<=100)  &offset
                                        – newsworthy scientific studies with plain-language summaries

Example

GET /api/v1/stories returns the story list; each entry links to the detail endpoints above. Fields are stable (v1 is additive-only, see below).

curl -H "Authorization: Bearer <key>" "https://objective-news.org/api/v1/stories?scope=WORLD&order=recent&take=2"

{
  "stories": [
    {
      "slug": "eu-ai-act-enforcement-begins",
      "title": "EU begins enforcing the AI Act's rules for general-purpose models",
      "summary": "The first obligations for foundation-model providers took effect ...",
      "topic": "TECH",
      "scope": "WORLD",
      "country": null,
      "sourceCount": 14,
      "leanScore": -0.13,
      "overlooked": false,
      "createdAt": "2026-08-01T07:12:41.000Z",
      "url": "https://objective-news.org/en/stories/eu-ai-act-enforcement-begins"
    },
    ...
  ]
}

leanScore is the average framing lean of the story's coverage on a -1 (Progressive) to +1 (Conservative) scale, 0 = Center;/stories/{slug} adds the neutral synthesis, the per-outlet list (ownership type + lean) and the claims comparison.

Plans, limits & headers

PlanRequests / monthRequests / minute (per key)KeysUse
Researcher / Professional – €10/mo or €100/yr100,00012010academic / professional, non-commercial
API Starter – €19/mo or €190/yr100,00012010commercial OK
API Pro – €79/mo or €790/yr1,000,00030020commercial OK

The monthly quota is per account (across all keys, calendar month, UTC); the per-minute limit is per key. Subscribe or upgrade on the pricing page. Every response carries the current limits:

X-RateLimit-Limit:      requests/minute for your plan
X-RateLimit-Remaining:  remaining this minute
X-Quota-Limit:          requests/month for your plan
X-Quota-Remaining:      remaining this month
Retry-After:            seconds to wait (on 429 rate_limited only)

Errors

Errors are JSON: { "error": "...", "code": "..." } Match on code; the message text may change.

StatuscodeMeaning
401unauthorizedMissing or invalid API key.
403forbiddenKey owner has no Researcher / Professional subscription or API plan.
404not_foundUnknown story slug / resource.
429rate_limitedPer-minute rate limit exceeded. Retry after Retry-After seconds.
429quota_exceededMonthly quota exhausted. Upgrade or wait for the month to roll over (UTC).

Versioning & terms

v1 is additive-only: new fields and new endpoints may appear at any time; clients must ignore unknown fields. Removals, renames or semantic changes only happen in a future /api/v2, with at least 6 months of v1 overlap, signalled via Deprecation and Sunset headers.

Commercial use (products, services or internal tooling for a business) requires an API Starter or Pro plan; the Researcher / Professional tier is for personal, academic and other non-commercial projects. Attribution with a link to the story page is appreciated.

Not offered in v1: per-key scopes/permissions, OAuth, push webhooks, or SLAs. Need custom volume or terms? support@objective-news.org.