RustyPaper
TrendingBusinessPoliticsSportsObscureTechAIScience|USMiddle East

API Documentation

Base URL: https://api.rustypaper.com

Authentication

Free tier requires no key (10 req/min). For higher limits, pass your API key as a query parameter:

curl "https://api.rustypaper.com/articles?api_key=ap_YOUR_KEY"

Get a key on your account page. Authorization: Bearer header also works.

Endpoints

EndpointDescription
GET /Top stories — bucketed homepage feed (events shape)
GET /articlesLatest stories
GET /articles/:slugFull article: body, summary, sources, media
GET /s/:shortIdShort URL — resolves to /articles/:slug
GET /search?q=QUERYFull-text search
GET /businessBusiness section (today, max 10)
GET /politicsPolitics section (today, max 10)
GET /sportsSports section (today, max 10)
GET /obscureObscure section (today, max 10)
GET /trendingTrending section (today, max 10)
GET /techTech section (today, max 10)
GET /aiAI section (today, max 10)
GET /scienceScience section (today, max 10)
GET /topics?tags=a,b,cTopics by tag — max 5 tags, today, max 10
GET /geo/usGeo: Us (today, max 10)
GET /geo/middle_eastGeo: Middle East (today, max 10)
GET /geo/europeGeo: Europe (today, max 10)
GET /geo/asiaGeo: Asia (today, max 10)
GET /geo/africaGeo: Africa (today, max 10)
GET /geo/americasGeo: Americas (today, max 10)
GET /geo/internationalGeo: International (today, max 10)
GET /sourcesSource counts (today)
GET /sitemap.xmlXML sitemap
GET /llms.txtMachine-readable site index

Parameters

ParameterDescription
?api_key=KEYAPI key authentication
?format=jsonJSON response (default)
?format=textPlain text response
?format=markdownMarkdown response
?page=NPagination (default: 1)
?limit=NItems per page (default: 20, max: 100)
?tags=a,b,cOn /topics: comma-separated tags (max 5)
?since=allRemove the default 24h time window

Response Shape

List endpoints return:

{
  "items": [
    {
      "slug": "uuid",
      "shortId": "Ae",
      "title": "...",
      "summary": "...",
      "publishedAt": "2026-03-20T...",
      "tags": ["oil", "iran"],
      "hasEvent": true,
      "sources": [...],
      "categories": ["business", "politics"],
      "sourceCount": 3
    }
  ],
  "pagination": { "page": 1, "limit": 20, "total": 500, "pages": 25 }
}

Article detail returns:

{
  "slug": "uuid",
  "shortId": "Ae",
  "title": "...",
  "summary": "...",
  "body": "Full article text...",
  "tags": ["oil", "iran"],
  "sources": [{ "source_name": "reuters", "title": "...", "url": "..." }],
  "metadata": {
    "who": "...", "what": "...", "where": "...",
    "entities": { "people": [], "orgs": [], "places": [] }
  }
}

Rate Limits

TierRateFeatures
Free10/minHeadlines, search, categories
Pro100/minFull articles, semantic search
Enterprise1,000/minBulk access, priority support

Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

Examples

# Latest stories
curl https://api.rustypaper.com/articles

# Search
curl "https://api.rustypaper.com/search?q=iran+oil"

# Business section
curl https://api.rustypaper.com/business

# Topics by tag (max 5)
curl "https://api.rustypaper.com/topics?tags=oil,iran"

# US geo
curl https://api.rustypaper.com/geo/us

# Politics in plain text
curl "https://api.rustypaper.com/politics?format=text"

# With API key
curl "https://api.rustypaper.com/articles?api_key=ap_YOUR_KEY"

# Full article
curl https://api.rustypaper.com/articles/SLUG

For Agents

Add RustyPaper as a skill:

npx skills add rustypaper/rustypaper

Or read the machine-readable spec:

curl https://api.rustypaper.com/llms.txt