Client Libraries

finlight publishes eight official client libraries. Each one wraps the same REST, WebSocket and webhook surface documented in the rest of these pages, so you can pick the one that matches your stack instead of hand-rolling HTTP calls.

LanguagePackageRequiresStreaming
TypeScript / JavaScriptfinlight-client (npm)Node.jsYes
Pythonfinlight-client (PyPI)Python 3.7+Yes
Gogithub.com/callbk/finlight-client-goGo 1.23+Yes
.NET / C#Finlight.Client (NuGet).NET 8+Yes
Java / Kotlinme.finlight:finlight-client (Maven)Java 17+Yes
PHPfinlight/client (Packagist)PHP 8.1+No
Rubyfinlight-client (RubyGems)Ruby 3.2+Yes
Rustfinlight-client (crates.io)Rust 1.85+Yes

What every client gives you

The libraries are built to the same specification, so switching languages does not change the concepts you work with:

  • REST: search articles, fetch a single article by link, and list available sources — see Endpoints.
  • Real-time streaming: both the enhanced and the raw WebSocket feed, surfaced as the idiomatic stream type of the language (async iterators, channels, Streams). Reconnects, the ping/pong keepalive and proactive connection rotation are handled for you — see WebSocket Basics.
  • Resilience: retries with exponential backoff on 429 and 5xx responses, so transient failures and rate limits do not surface as errors in your code.
  • Webhook verification: HMAC-SHA256 signature checking with replay protection, matching Webhook Authentication.
  • Authentication: you pass your API key to the constructor and the client sends it as the X-API-KEY header on every request.

Nothing in the libraries is privileged: everything they do is available over plain HTTP and WebSocket, so cURL or any HTTP client remains a fully supported option.


Install

Every client reads your API key from the constructor and sends it as the X-API-KEY header. Grab a key in the finlight Dashboard.

Install

# npm — also published to JSR as @finlight/client
npm install finlight-client

If you build with Maven rather than Gradle, declare the same coordinate:

<dependency>
    <groupId>me.finlight</groupId>
    <artifactId>finlight-client</artifactId>
    <version>0.1.0</version>
</dependency>

Source repositories

Every client is developed in the open under the MIT license. Issues and pull requests are welcome.

What's next?