curl --request GET \
--url https://scienter-intelligence-production.up.railway.app/ws/flags \
--header 'Authorization: Bearer <token>'import requests
url = "https://scienter-intelligence-production.up.railway.app/ws/flags"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://scienter-intelligence-production.up.railway.app/ws/flags', 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://scienter-intelligence-production.up.railway.app/ws/flags",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scienter-intelligence-production.up.railway.app/ws/flags"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scienter-intelligence-production.up.railway.app/ws/flags")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scienter-intelligence-production.up.railway.app/ws/flags")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"error": "unauthorized",
"reason": "<string>"
}{
"state": "upgrade_required",
"reason": "<string>",
"websocket_url": "<string>",
"sse_url": "<string>"
}{
"state": "at_capacity",
"error": "too_many_connections",
"scope": "pro",
"limit": 100,
"current": 100,
"reason": "<string>"
}Stream rug flags (WebSocket)
This endpoint speaks WebSocket. OpenAPI 3.1 cannot describe the protocol, so what is documented here is the plain-HTTP behaviour: a GET without an Upgrade: websocket header answers 426 and tells you the wss:// URL you wanted.
Connect with wss://scienter-intelligence-production.up.railway.app/ws/flags. Full protocol — subscribe messages, event types, resume, backpressure, heartbeats — in the Streaming guide.
curl --request GET \
--url https://scienter-intelligence-production.up.railway.app/ws/flags \
--header 'Authorization: Bearer <token>'import requests
url = "https://scienter-intelligence-production.up.railway.app/ws/flags"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://scienter-intelligence-production.up.railway.app/ws/flags', 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://scienter-intelligence-production.up.railway.app/ws/flags",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scienter-intelligence-production.up.railway.app/ws/flags"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scienter-intelligence-production.up.railway.app/ws/flags")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scienter-intelligence-production.up.railway.app/ws/flags")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"error": "unauthorized",
"reason": "<string>"
}{
"state": "upgrade_required",
"reason": "<string>",
"websocket_url": "<string>",
"sse_url": "<string>"
}{
"state": "at_capacity",
"error": "too_many_connections",
"scope": "pro",
"limit": 100,
"current": 100,
"reason": "<string>"
}Authorizations
The streaming endpoints additionally accept ?token= for clients that cannot set headers, such as a browser WebSocket. Mint a separate token for that: a credential in a URL reaches access logs, proxies and browser history.
Query Parameters
Comma-separated chain names, or all. Omit for every chain. Unknown names are reported in the welcome event rather than silently dropped.
Resume after this sequence number. The replay window is bounded; a range already discarded is reported as a gap in the welcome event.
Bearer token, for clients that cannot set headers. The Authorization header is checked first and always wins; prefer it.
Response
Switching Protocols. The connection is now a WebSocket.