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 Supporter 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=…                      — left/center/right 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

Plans, limits & headers

PlanRequests / monthRequests / minute (per key)KeysUse
Supporter (included)10,0006010personal, 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 Supporter 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 Supporter tier is for personal, 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.