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 leanPlans, limits & headers
| Plan | Requests / month | Requests / minute (per key) | Keys | Use |
|---|---|---|---|---|
| Supporter (included) | 10,000 | 60 | 10 | personal, non-commercial |
| API Starter — €19/mo or €190/yr | 100,000 | 120 | 10 | commercial OK |
| API Pro — €79/mo or €790/yr | 1,000,000 | 300 | 20 | commercial 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.
| Status | code | Meaning |
|---|---|---|
| 401 | unauthorized | Missing or invalid API key. |
| 403 | forbidden | Key owner has no Supporter subscription or API plan. |
| 404 | not_found | Unknown story slug / resource. |
| 429 | rate_limited | Per-minute rate limit exceeded. Retry after Retry-After seconds. |
| 429 | quota_exceeded | Monthly 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.