SDKs

8 languages.
Same API. Idiomatic everywhere.

First-class clients for Node, Python, Go, Java, .NET, PHP, Ruby, and Rust. Two methods — send and trigger — that mean the same thing in every language. Open source, MIT licensed.

install
# Node.js — same shape in 7 other languages
$ npm install @nahook/client

See install commands for Python, Go, Java, .NET, PHP, Ruby, Rust →

Your language. Your framework.

First-class SDKs for 8 languages. Copy, paste, ship.

webhooks.ts
import { NahookClient } from "@nahook/client";

const nahook = new NahookClient("nhk_us_...");

// Send directly to an endpoint
const send = await nahook.send("ep_abc123", {
  payload: { orderId: "ord_123", status: "paid" },
});
// { deliveryId: __TOK5__, status: __TOK6__ }

// Fan-out to all subscribers of an event type
const fan = await nahook.trigger("order.paid", {
  payload: { orderId: "ord_123" },
});
// { deliveryIds: [__TOK9__, __TOK10__], status: __TOK11__ }

Install, in one line.

Each SDK is a tagged release published to your language's primary registry. No private feeds, no auth tokens just to pull the package.

Node.js

.ts

npm

npm install @nahook/client
+ Management API package
npm install @nahook/management

Python

.py

pip

pip install nahook

Go

.go

go get

go get github.com/getnahook/nahook-go

Java

.java

Maven

<dependency>...nahook-java</dependency>
Show full snippet
<dependency>
  <groupId>com.nahook</groupId>
  <artifactId>nahook-java</artifactId>
  <version>latest</version>
</dependency>

.NET

.cs

dotnet

dotnet add package Nahook

PHP

.php

Composer

composer require nahook/nahook-php

Ruby

.rb

RubyGems

gem install nahook

Rust

.rs

Cargo

cargo add nahook

Feature parity at a glance

Every SDK ships the same surface — verified against the source in public-sdks/ on every release.

SDK Package Returns Auto-retry Idempotency Batch Version
Node.js @nahook/client Promise 0.2.2
Python nahook value 0.1.4
Go github.com/getnahook/nahook-go value 0.2.1
Java nahook-java value 0.1.2
.NET Nahook Task 0.2.0
PHP nahook/nahook-php value 0.1.0
Ruby nahook value 0.2.0
Rust nahook Future 0.1.2

✓ supported · — not yet shipped

Same shape. Every language.

Two operations cover the whole product surface. Send targets one endpoint; trigger fans out to every endpoint subscribed to an event type. The signature is identical across languages — only the syntax changes.

Auto-retry on send

Network failure? The client retries with exponential backoff before surfacing the error. Configurable per call.

Idempotency keys

Pass idempotency_key and the server dedupes for 15 minutes. Safe to retry from your own code without double-firing webhooks.

Batch endpoints

sendBatch and triggerBatch accept arrays of up to 20 items per call — one round-trip, one response.

Region-aware

The API key is region-scoped. The client picks the right ingestion edge automatically. US is live today; EU and AP coming soon.

Typed responses

Every method returns a typed delivery handle — id, status, accepted-at timestamp — so the caller can correlate against dashboard analytics or downstream logs.

MIT-licensed

Every SDK is open source on GitHub. Read the code, fork it, vendor it. No proprietary blob, no closed-source dependency.

Pick a language, ship in minutes.

Free with every Nahook workspace. No registration to read the source.