Create a Bluesky watch
curl --request POST \
--url https://api.nephia.cc/v1/bluesky/watches \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"refresh_interval_seconds": 43260,
"query": "<string>",
"author": "<string>",
"lang": "<string>",
"webhook_url": "<string>",
"backfill": true
}
'import requests
url = "https://api.nephia.cc/v1/bluesky/watches"
payload = {
"refresh_interval_seconds": 43260,
"query": "<string>",
"author": "<string>",
"lang": "<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,
query: '<string>',
author: '<string>',
lang: '<string>',
webhook_url: '<string>',
backfill: true
})
};
fetch('https://api.nephia.cc/v1/bluesky/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/bluesky/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,
'query' => '<string>',
'author' => '<string>',
'lang' => '<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/bluesky/watches"
payload := strings.NewReader("{\n \"refresh_interval_seconds\": 43260,\n \"query\": \"<string>\",\n \"author\": \"<string>\",\n \"lang\": \"<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/bluesky/watches")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"refresh_interval_seconds\": 43260,\n \"query\": \"<string>\",\n \"author\": \"<string>\",\n \"lang\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"backfill\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nephia.cc/v1/bluesky/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 \"query\": \"<string>\",\n \"author\": \"<string>\",\n \"lang\": \"<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"
}Watches
Create a Bluesky watch
Requires a search term, or an author handle/DID to poll that feed. Metered per tick at 1 credit. Minimum interval 120s.
POST
/
v1
/
bluesky
/
watches
Create a Bluesky watch
curl --request POST \
--url https://api.nephia.cc/v1/bluesky/watches \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"refresh_interval_seconds": 43260,
"query": "<string>",
"author": "<string>",
"lang": "<string>",
"webhook_url": "<string>",
"backfill": true
}
'import requests
url = "https://api.nephia.cc/v1/bluesky/watches"
payload = {
"refresh_interval_seconds": 43260,
"query": "<string>",
"author": "<string>",
"lang": "<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,
query: '<string>',
author: '<string>',
lang: '<string>',
webhook_url: '<string>',
backfill: true
})
};
fetch('https://api.nephia.cc/v1/bluesky/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/bluesky/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,
'query' => '<string>',
'author' => '<string>',
'lang' => '<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/bluesky/watches"
payload := strings.NewReader("{\n \"refresh_interval_seconds\": 43260,\n \"query\": \"<string>\",\n \"author\": \"<string>\",\n \"lang\": \"<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/bluesky/watches")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"refresh_interval_seconds\": 43260,\n \"query\": \"<string>\",\n \"author\": \"<string>\",\n \"lang\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"backfill\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nephia.cc/v1/bluesky/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 \"query\": \"<string>\",\n \"author\": \"<string>\",\n \"lang\": \"<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.
Maximum string length:
255Body
application/json
Required range:
120 <= x <= 86400Minimum string length:
1Minimum string length:
1Required string length:
2 - 8Show 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.
Available options:
platform, word, contains Response
Watch created
Available options:
x, reddit, youtube, tiktok, bluesky, hackernews, mastodon, lemmy, github, producthunt, stackoverflow, rss, ai_answers, vinted Show child attributes
Show child attributes
Available options:
subscription, payg, deferred, metered Was this page helpful?