Your API Keys
Create and manage keys that authenticate requests to the WatchfulEye Intelligence API. Keys are shown in full only at creation time — copy and store them in a secrets manager immediately.
Create a new key
API Documentation
REST endpoints for intelligence articles, predictions, market mood, causal hypotheses, and more. All requests require an x-api-key header.
Authentication
Every request must include your API key in the x-api-key header. Keys are prefixed with wfe_ followed by 64 hex characters.
curl -H "x-api-key: wfe_YOUR_KEY_HERE" \ https://api.watchfuleye.us/api/v1/articles?limit=5
Rate limits
Each key has a per-minute request budget (default 100 req/min, configurable up to 1000). Exceeding the limit returns HTTP 429. The budget refills 60 seconds after the first request in a window.
Errors
All endpoints return JSON with a success boolean. On failure, error contains a human-readable message.
- 401 — missing, invalid, expired, or revoked key
- 403 — key lacks the required scope
- 404 — resource not found
- 429 — rate limit exceeded
- 500 — server error
Articles
limit (1–100, default 20), offset, category, min_impactSearch
Intel reports
limit (1–50, default 10)Predictions
limit, offset, status (evaluated|pending)Market mood
Hypotheses
limit, status (default active)Narratives
Asset exposures
Saved articles
Conversations
Credits
Programmatic key management
You can create, list, and revoke keys without using this console by authenticating with your username and password.
{ username, password, name?, scopes?, rateLimit?, expiresInDays? }{ username, password }{ username, password, keyId }Usage Examples
Drop-in snippets showing how to call the API from common languages and tools.
List the latest 10 critical articles
curl -H "x-api-key: $WFE_API_KEY" \ "https://api.watchfuleye.us/api/v1/articles?limit=10&min_impact=4"
const res = await fetch(
"https://api.watchfuleye.us/api/v1/articles?limit=10&min_impact=4",
{ headers: { "x-api-key": process.env.WFE_API_KEY } }
);
const { data } = await res.json();
console.log(data);
import os, requests
r = requests.get(
"https://api.watchfuleye.us/api/v1/articles",
params={"limit": 10, "min_impact": 4},
headers={"x-api-key": os.environ["WFE_API_KEY"]},
)
print(r.json()["data"])
Pull the current market mood
curl -H "x-api-key: $WFE_API_KEY" \ https://api.watchfuleye.us/api/v1/market/mood
const res = await fetch("https://api.watchfuleye.us/api/v1/market/mood", {
headers: { "x-api-key": process.env.WFE_API_KEY },
});
const { data } = await res.json();
console.log(data.regime, data.score);
import os, requests
mood = requests.get(
"https://api.watchfuleye.us/api/v1/market/mood",
headers={"x-api-key": os.environ["WFE_API_KEY"]},
).json()["data"]
print(mood["regime"], mood["score"])
Create a key without this console
curl -X POST https://api.watchfuleye.us/api/v1/keys/create \
-H "Content-Type: application/json" \
-d '{"username":"you@example.com","password":"...","name":"CI bot","scopes":["read"],"rateLimit":200}'
const res = await fetch("https://api.watchfuleye.us/api/v1/keys/create", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
username: "you@example.com",
password: "...",
name: "CI bot",
scopes: ["read"],
rateLimit: 200,
}),
});
const { key } = await res.json();
console.log("Save this key now:", key);