API REFERENCE
RSS Feed
Live feed of threads from the Hardcore Photo Sets forum. Available as JSON for programmatic use or Atom XML for feed readers.
Endpoints
GET/api/rss
Returns parsed thread entries as JSON.
GET/api/rss.xml
Returns an Atom 1.0 XML feed — compatible with any feed reader (RSS readers, Feedly, etc.).
JSON Response — /api/rss
| Field | Type | Description |
|---|---|---|
| ok | boolean | Whether the feed was fetched successfully |
| feedTitle | string | Always "Hardcore Photo Sets" |
| feedUpdated | string | ISO 8601 timestamp of when the feed was fetched |
| total | number | Number of thread entries returned |
| entries | Entry[] | Array of thread objects (see below) |
Entry Object
| Field | Type | Description |
|---|---|---|
| title | string | Thread title |
| prefix | string | Studio/category tag (e.g. "Brazzers"), empty string if none |
| link | string | Full URL to the thread on viper.to |
| threadId | string | Numeric thread ID extracted from the URL |
| author | string | Username of the thread poster |
| dateText | string | Raw date string as shown on the forum (e.g. "Today 14:32") |
| published | string | ISO 8601 timestamp parsed from dateText, empty string if unparseable |
| replies | string | Reply count as a string, empty if unavailable |
| views | string | View count as a string, empty if unavailable |
| thumbnails | string[] | Array of thumbnail image URLs from the thread preview |
json
{
"ok": true,
"feedTitle": "Hardcore Photo Sets",
"feedUpdated": "2026-05-28T10:00:00.000Z",
"total": 28,
"entries": [{
"title": "Luna Star - Gets Wild",
"prefix": "Brazzers",
"link": "https://viper.to/threads/16244690",
"threadId": "16244690",
"author": "uploader99",
"published": "2026-05-28T14:32:00.000Z",
"thumbnails": ["https://cdn.example.com/thumb1.jpg"]
}]
}Date Parsing
| Forum Format | Example | Resolved As |
|---|---|---|
| Today HH:MM | Today 14:32 | Current date at 14:32 UTC |
| Yesterday HH:MM | Yesterday 09:15 | Previous date at 09:15 UTC |
| DDth Month YYYY HH:MM | 22nd May 2026 05:10 | Exact ISO timestamp |
| Anything else | — | published field is empty string |
Error Codes
| Status | Description |
|---|---|
| 200 | Success — JSON has ok: true |
| 500 | Upstream fetch failed — JSON has ok: false and error message |
Examples
sh
# JSON feed
curl https://v2.helvetican.xyz/api/rss
# Atom XML feed
curl https://v2.helvetican.xyz/api/rss.xmljs
const { feedTitle, entries } = await fetch('/api/rss')
.then(r => r.json());
console.log(`${feedTitle}: ${entries.length} threads`);
entries.forEach(e => console.log(e.title, e.published));python
import requests
data = requests.get("https://v2.helvetican.xyz/api/rss").json()
for entry in data["entries"]:
print(entry["title"], entry["published"])