curl --request POST \
--url https://api.nephia.cc/v1/rss/watches \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"refresh_interval_seconds": 43260,
"feed_url": "<string>",
"query": "<string>",
"terms": [
"<string>"
],
"lang": "<string>",
"country": "<string>",
"webhook_url": "<string>",
"backfill": true
}
'import requests
url = "https://api.nephia.cc/v1/rss/watches"
payload = {
"refresh_interval_seconds": 43260,
"feed_url": "<string>",
"query": "<string>",
"terms": ["<string>"],
"lang": "<string>",
"country": "<string>",
"webhook_url": "<string>",
"backfill": True
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
refresh_interval_seconds: 43260,
feed_url: '<string>',
query: '<string>',
terms: ['<string>'],
lang: '<string>',
country: '<string>',
webhook_url: '<string>',
backfill: true
})
};
fetch('https://api.nephia.cc/v1/rss/watches', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.nephia.cc/v1/rss/watches",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'refresh_interval_seconds' => 43260,
'feed_url' => '<string>',
'query' => '<string>',
'terms' => [
'<string>'
],
'lang' => '<string>',
'country' => '<string>',
'webhook_url' => '<string>',
'backfill' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.nephia.cc/v1/rss/watches"
payload := strings.NewReader("{\n \"refresh_interval_seconds\": 43260,\n \"feed_url\": \"<string>\",\n \"query\": \"<string>\",\n \"terms\": [\n \"<string>\"\n ],\n \"lang\": \"<string>\",\n \"country\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"backfill\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.nephia.cc/v1/rss/watches")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"refresh_interval_seconds\": 43260,\n \"feed_url\": \"<string>\",\n \"query\": \"<string>\",\n \"terms\": [\n \"<string>\"\n ],\n \"lang\": \"<string>\",\n \"country\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"backfill\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nephia.cc/v1/rss/watches")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"refresh_interval_seconds\": 43260,\n \"feed_url\": \"<string>\",\n \"query\": \"<string>\",\n \"terms\": [\n \"<string>\"\n ],\n \"lang\": \"<string>\",\n \"country\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"backfill\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"accountId": "<string>",
"source": "x",
"market": "<string>",
"criteria": {
"market": "<string>",
"query": "<string>",
"priceMin": 123,
"priceMax": 123,
"sort": "<string>",
"page": 123,
"perPage": 123,
"filters": {}
},
"criteriaHash": "<string>",
"refreshIntervalSeconds": 123,
"webhookUrl": "<string>",
"billingMode": "subscription",
"isActive": true,
"createdAt": "<string>",
"updatedAt": "<string>",
"pausedReason": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "Rate limit exceeded",
"code": "TOO_MANY_REQUESTS"
}Create an RSS watch
Requires exactly one of feed_url or query — a URL polls that feed, a term polls the news for it. Metered per tick at 1 credit, including a tick that gets a 304. Minimum interval 120s.
curl --request POST \
--url https://api.nephia.cc/v1/rss/watches \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"refresh_interval_seconds": 43260,
"feed_url": "<string>",
"query": "<string>",
"terms": [
"<string>"
],
"lang": "<string>",
"country": "<string>",
"webhook_url": "<string>",
"backfill": true
}
'import requests
url = "https://api.nephia.cc/v1/rss/watches"
payload = {
"refresh_interval_seconds": 43260,
"feed_url": "<string>",
"query": "<string>",
"terms": ["<string>"],
"lang": "<string>",
"country": "<string>",
"webhook_url": "<string>",
"backfill": True
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
refresh_interval_seconds: 43260,
feed_url: '<string>',
query: '<string>',
terms: ['<string>'],
lang: '<string>',
country: '<string>',
webhook_url: '<string>',
backfill: true
})
};
fetch('https://api.nephia.cc/v1/rss/watches', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.nephia.cc/v1/rss/watches",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'refresh_interval_seconds' => 43260,
'feed_url' => '<string>',
'query' => '<string>',
'terms' => [
'<string>'
],
'lang' => '<string>',
'country' => '<string>',
'webhook_url' => '<string>',
'backfill' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.nephia.cc/v1/rss/watches"
payload := strings.NewReader("{\n \"refresh_interval_seconds\": 43260,\n \"feed_url\": \"<string>\",\n \"query\": \"<string>\",\n \"terms\": [\n \"<string>\"\n ],\n \"lang\": \"<string>\",\n \"country\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"backfill\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.nephia.cc/v1/rss/watches")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"refresh_interval_seconds\": 43260,\n \"feed_url\": \"<string>\",\n \"query\": \"<string>\",\n \"terms\": [\n \"<string>\"\n ],\n \"lang\": \"<string>\",\n \"country\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"backfill\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nephia.cc/v1/rss/watches")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"refresh_interval_seconds\": 43260,\n \"feed_url\": \"<string>\",\n \"query\": \"<string>\",\n \"terms\": [\n \"<string>\"\n ],\n \"lang\": \"<string>\",\n \"country\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"backfill\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"accountId": "<string>",
"source": "x",
"market": "<string>",
"criteria": {
"market": "<string>",
"query": "<string>",
"priceMin": 123,
"priceMax": 123,
"sort": "<string>",
"page": 123,
"perPage": 123,
"filters": {}
},
"criteriaHash": "<string>",
"refreshIntervalSeconds": 123,
"webhookUrl": "<string>",
"billingMode": "subscription",
"isActive": true,
"createdAt": "<string>",
"updatedAt": "<string>",
"pausedReason": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "Rate limit exceeded",
"code": "TOO_MANY_REQUESTS"
}Authorizations
API key created from the Nephia dashboard for your Account.
Headers
Unique key (e.g. UUID) making this POST safe to retry for 24 hours. Replays return the original response with an Idempotency-Replayed: true header; reusing a key with a different body returns 422.
255Body
120 <= x <= 864001Several search texts, OR'd into one upstream request. Mutually exclusive with query, and billed as one tick — the cost does not scale with the number of terms. Your plan caps how many a single search may carry.
21 - 602 - 82 - 4Show child attributes
Show child attributes
How strictly results must carry your query. Omit for the platform's own matching (default). word keeps only items containing the query as a whole word (and quotes it upstream where the platform honours quotes); contains keeps items containing it as a substring.
platform, word, contains Response
Watch created
x, reddit, youtube, tiktok, bluesky, hackernews, mastodon, lemmy, github, producthunt, stackoverflow, rss, ai_answers, vinted Show child attributes
Show child attributes
subscription, payg, deferred, metered Was this page helpful?