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.
| Language | Package | Requires | Streaming |
|---|---|---|---|
| TypeScript / JavaScript | finlight-client (npm) | Node.js | Yes |
| Python | finlight-client (PyPI) | Python 3.7+ | Yes |
| Go | github.com/callbk/finlight-client-go | Go 1.23+ | Yes |
| .NET / C# | Finlight.Client (NuGet) | .NET 8+ | Yes |
| Java / Kotlin | me.finlight:finlight-client (Maven) | Java 17+ | Yes |
| PHP | finlight/client (Packagist) | PHP 8.1+ | No |
| Ruby | finlight-client (RubyGems) | Ruby 3.2+ | Yes |
| Rust | finlight-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
429and5xxresponses, 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-KEYheader on every request.
The one deliberate exception is the PHP client, which does not implement WebSocket streaming — PHP's request/response model is a poor fit for a long-lived connection. Use webhooks for push delivery into a PHP application.
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.
- TypeScript / JavaScript — jubeiargh/finlight-client
- Python — jubeiargh/finlight-client-py
- Go — callbk/finlight-client-go
- .NET / C# — callbk/finlight-client-dotnet
- Java / Kotlin — callbk/finlight-client-java
- PHP — callbk/finlight-client-php
- Ruby — callbk/finlight-client-ruby
- Rust — callbk/finlight-client-rust (API docs on docs.rs)
What's next?
- Make your first call with the Quickstart
- Browse the full REST endpoint reference
- Learn the query syntax in Advanced Query Building
- Stream articles in real time with the WebSocket Quickstart
- Receive pushed articles via Webhooks
- Found a bug or want a language that is missing? Reach out via Support