/v1/* with typed namespaces. Requires Node ≥ 20.
Authentication
PassapiKey or set NEPHIA_API_KEY. Every request sends the x-api-key header.
Namespaces
Params use camelCase in TypeScript. The SDK converts them to snake_case on the wire,
and responses come back as-is (camelCase JSON).
client.queries.create() and client.queries.update() are the exception: their bodies travel
camelCase, unconverted. A query is the one object you round-trip — read it, change a field,
send it back — and that only works if the body’s keys are spelled the way the response spells them.
Mentions
Queries
resetSearches is worth reading. Changing what a search looks for (its terms, filters or
market) starts that search over on a new child watch: its first poll records what currently
matches without emitting it, and new results arrive from then on. The mentions the previous
watch caught stay on the query. A new interval or webhook applies to the running watch and
resets nothing. The list names the searches that were started over; an empty list means none
were.
Watches
client.reddit.watches, client.youtube.watches, client.bluesky.watches, client.hackernews.watches, client.rss.watches, client.aiAnswers.watches, and client.vinted.watches.
Webhook signatures
X-Signature header is t=<unix>,v1=<hmac>; verify recomputes the HMAC over "<t>.<body>" with your account’s signing secret (dashboard → API Keys) and rejects timestamps older than 5 minutes (configurable via { toleranceSeconds }).
Errors & retries
Typed errors:AuthenticationError (401), InsufficientCreditsError (402), PermissionDeniedError (403), NotFoundError (404), ConflictError (409), RateLimitError (429, or 503 with code RATE_LIMITED), ServiceUnavailableError (other 503s), NephiaError (fallback). All expose status, code, body, and retryAfter.
The client retries 429 / 502 / 503 / 504 and network failures (respects Retry-After, capped at 60s). It does not retry other 4xx or timeouts. Every POST carries an auto-generated Idempotency-Key reused across attempts, so retried creates can never duplicate a watch or double-charge credits — override it per request with { idempotencyKey }. Per-request options also accept signal, timeoutMs, and headers.