posts.gettrdev.org — API Documentation

This service is a private news-curation dashboard operated by the developer of the gettrdev Reddit (Devvit) app. It maintains a queue of publicly available news-story candidates (headline + article link) which a human operator reviews before any further use.

The service exposes exactly two machine-facing endpoints, both used solely by the gettrdev Devvit app. All other routes are an operator-only dashboard behind PIN authentication. There is no other API surface.

Related documents: Terms of Service · Privacy Policy

GET /api/ingest-config

Returns the operator's current ingestion configuration — which public subreddits to read, grouped by category, and how many top posts per subreddit. The Devvit app calls this at the start of each scheduled run so the operator can tune ingestion without re-uploading the app.

Authentication

Header x-ingest-secret: <shared secret> — a secret known only to the operator's dashboard and the Devvit app installation. Requests without it receive 401.

Response 200

{
  "enabled": true,
  "per_subreddit_limit": 15,
  "categories": {
    "news": ["news", "worldnews"],
    "finance": ["finance", "Economics", "business"]
  }
}

POST /api/ingest

Accepts candidate news items — public post metadata only — and adds new ones to the operator's review queue. Items are deduplicated by post id and by article URL; NSFW-flagged items are rejected. Nothing is published anywhere by this endpoint; queued items await manual human review.

Authentication

Header x-ingest-secret, as above.

Request body

{
  "items": [
    {
      "reddit_id": "t3_abc123",        // post fullname (dedupe key)
      "category": "news",
      "subreddit": "worldnews",
      "title": "Example headline",
      "url": "https://example.com/story",   // outbound article link
      "preview_img": "https://…",       // optional preview image URL
      "img_wid": 1024, "img_hgt": 768,  // optional image dimensions
      "score": 4821,                     // public vote count
      "num_comments": 312,               // public comment count
      "over_18": false                   // NSFW flag (true → rejected)
    }
  ]
}

Response 200

{ "inserted": 12, "skipped": 130, "rejected": 1 }

Data handling

PropertyValue
Data acceptedPublic post metadata only (title, link, score, comment count, preview-image URL) — identical to what any logged-out Reddit visitor sees
Personal dataNone. No usernames, author identifiers, votes, or private content are accepted or stored
DirectionInbound only from the Devvit app; the service never calls Reddit
VolumeOne scheduled push per hour, ≤ 500 items per request, single-digit kilobytes
TransportHTTPS only
StorageCloudflare D1, retained until the operator deletes it