cd /api · home api
wpnews API version v1 last-modified 2026-05-18 base-url api.wpnews.pro

REST API Reference

Programmatic access to wpnews.pro's curated AI/tech news index. JSON + CORS · OpenAI tool definitions out of the box · MCP server included. Free tier 10k req/day, no card required.

endpoints 7 format JSON auth X-API-Key rate-limit 10k/day free latency ~24ms p50 updated 2d ago

Overview overview

The wpnews API exposes the same index that powers the website: AI/tech articles, topics, entities, comparisons, and trends. Everything is JSON over HTTPS with CORS open to the world — you can call it from a browser, a curl script, an LLM tool, or an MCP server without proxy.

The base URL is https://api.wpnews.pro. All endpoints are prefixed with /v1. Every JSON response includes data, meta, and (if applicable) pagination envelopes.

Design principles

  • Cursor-paginated. No offset/limit foot-guns. Pass ?after=<cursor> from meta.next.
  • ETag everything. Honour If-None-Match — you'll get 304s for free.
  • Tool-ready. Every endpoint has an OpenAI tool definition at /v1/tools.json and an MCP manifest at /v1/mcp.
  • No surprise charges. Webhook deliveries are counted separately and visible from the dashboard.
Quickstart: grab a free key from /pricing, then curl -H "X-API-Key: $KEY" https://api.wpnews.pro/v1/news.

Authentication auth

Authenticate every request with an API key in the X-API-Key header. Keys are scoped per-environment and rotate on demand.

api-keys

GET/v1/me200·12ms·application/json
Verify your key and read current quota.
$curl https://api.wpnews.pro/v1/me \
    -H "X-API-Key: $WPNEWS_KEY"

response

{
  "data": {
    "key_id": "wpk_2f7a91",
    "tier": "pro",
    "quota": { "limit": 1000000, "used": 12483, "resets": "2026-05-21T00:00:00Z" },
    "scopes": ["read:news", "read:topics", "write:webhooks"]
  },
  "meta": { "request_id": "req_8c0d23" }
}

rate-limits

Each tier has a per-day quota and a burst limit. Headers X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset ship on every response.

tierdaily quotaburstconcurrent
free10,00020 / sec4
pro1,000,000120 / sec32
enterpriseunlimitedcustomcustom

Endpoints endpoints

Seven endpoints cover the surface area. Most are GET-only, idempotent, and cache-friendly.

GET /v1/news

GET/v1/news200·24ms·application/json
List latest articles. Cursor-paginated, ETag-aware.
$curl 'https://api.wpnews.pro/v1/news?limit=10&topic=ai-models&since=2026-05-15' \
    -H "X-API-Key: $WPNEWS_KEY"

parameters

nametypereqdescription
limitintno1–100, default 10
topicstringnotopic slug, e.g. ai-models
entitystringnofilter by entity slug
sinceISO8601noarticles published on/after
aftercursornoopaque cursor from meta.next
sortenumnoone of recent, trending, relevance

GET /v1/news/:slug

GET/v1/news/:slug200·18ms·application/json
Fetch a single article by slug. Includes full body, links, and related items.
$curl https://api.wpnews.pro/v1/news/openai-ships-gpt-4o-realtime

GET /v1/topics

GET/v1/topics200·14ms·application/json
All curated topics with momentum and entity overlap.
$curl https://api.wpnews.pro/v1/topics

GET /v1/entities

GET/v1/entities200·21ms·application/json
Entities with mention counts and co-occurrence edges. Pair with /v1/entities/graph for the full graph.
$curl 'https://api.wpnews.pro/v1/entities?type=org&limit=50'

GET /v1/compare/:slug

GET/v1/compare/:slug200·21ms·application/json
Get a single comparison sheet (ai-assistants, llm-models, hosting, etc.).
$curl https://api.wpnews.pro/v1/compare/ai-assistants

POST /v1/webhooks

POST/v1/webhooks201·42ms·application/json
Register a webhook. We POST new articles to your URL within ~30s of indexing. Pro tier only.
$curl -X POST https://api.wpnews.pro/v1/webhooks \
    -H "X-API-Key: $WPNEWS_KEY" \
    -H "Content-Type: application/json" \
    -d '{"url":"https://you.dev/hook","topics":["ai-models"],"secret":"whsec_..."}'

body

nametypereqdescription
urlstringyeshttps endpoint, max 2 KB body POSTed on each event
topicsstring[]nofilter to topic slugs, default *
entitiesstring[]nofilter to entity slugs
secretstringyesused to sign payloads, sent in X-WPN-Signature

Webhooks webhooks

We deliver every new article matching your filter to your registered URL with an HMAC-SHA256 signature in X-WPN-Signature. Retries: 5 attempts with exponential backoff over 24h. Inspect deliveries and replay from the dashboard.

Signature verification: compute hmac_sha256(secret, body) and compare hex-string with the header. Mismatch = drop the request.

Errors errors

Errors use standard HTTP status codes. The response body always includes error.code (machine-readable) and error.message (human).

statuscodemeaning
200okRequest succeeded.
304not_modifiedETag matched; body intentionally empty.
400bad_requestMalformed parameters. See error.message.
401unauthorizedMissing or invalid X-API-Key.
403forbiddenKey is valid but scope insufficient.
404not_foundResource not in the index.
429rate_limitedQuota exhausted. Inspect X-RateLimit-Reset.
500internalOn us. Retry with backoff.
503degradedIndexing pipeline lag > 5 min. Read OK, fresh content delayed.
// quick-call copy-paste-ready
GET /v1/news?limit=3 200·24ms· application/json
$curl -s https://api.wpnews.pro/v1/news?limit=3 | jq '.data[] | .title'
v1 stable
[api/v1]
7 endpoints · 9 error codes
updated 2d ago
· session-2 · :help for keys