Skip to main content

Guides

SDKs & libraries

Published packages are verified for Node.js and Python. Clients for Go, Ruby, PHP, Java, C#, and Rust are not yet published to a package registry; until they are, call the REST API directly from those languages.

The published packages are version 0.1.1, and two things in them need care

A retried verification can be charged twice. 0.1.1 retries any request after a 5xx or a dropped connection, and it cannot send an Idempotency-Key — no method accepts one and the client never sets the header. Verification is charged when the request is accepted, so a failure arriving after that means the retry submits a second, separately billed job. This affects verify(), verify_batch() / verifyBatch() and verify_batch_and_wait() / verifyBatchAndWait().

Until 0.2.0 is published, make those calls against the REST API directly, where you set the Idempotency-Key header yourself and a retry with the same key is free. Keep using the package for everything else. Turning retries off is not a substitute: the first request still carries no key, so a dropped response is still ambiguous — and in Python max_retries=0 makes the client send no request at all.

find() works differently, and the same advice does not apply. The finder does not read Idempotency-Key at all — the API deduplicates it server-side, charging the same five credits once for an identical search from the same account inside a two-minute window (with a one-minute look-back for a retry that straddles the boundary). The client's own immediate retries therefore settle on one charge. A retry you make later is a new search and is charged again, so do not re-run a finder call minutes afterwards expecting it to be free.

The webhook helpers expect an older payload. 0.1.1's helpers read the flat payload an earlier contract delivered; Kawaa now sends an { event, data } envelope. Verify the signature and read the envelope as shown on the Webhooks page rather than through those helpers.

The rest of 0.1.1 behaves as documented: get_account() / getAccount(), the job reads and the result download. Two gaps worth knowing about rather than discovering: there is no usage method, and the account response the package returns carries the credit fields but not the usage statistics GET /v1/account sends — read those from GET /v1/usage directly. File verification is likewise REST-only; no published client exposes it. The 0.2.0 clients in the repository send an Idempotency-Key on the charged calls by default and, after an ambiguous failure, retry only requests that are safe to repeat: GETs and anything carrying a key. They still retry a 429 for any method, because the rate limiter refuses before doing any work, and the Python client also retries a failure that provably happened before the request was sent. If you need 0.2.0 before it reaches the registries, email developers@kawaa.com.

Node.js

JavaScript / TypeScriptPublished package

npm: kawaa

Installation
npm install kawaa
Quick example
import { Kawaa } from 'kawaa';

const kawaa = new Kawaa('YOUR_API_KEY');

const result = await kawaa.verify('test@example.com');
console.log(result.status); // 'valid'

Python

Python 3.8+Published package

PyPI: kawaa

Installation
pip install kawaa
Quick example
from kawaa import Kawaa

kawaa = Kawaa('YOUR_API_KEY')

result = kawaa.verify('test@example.com')
print(result.status)  # 'valid'

Other languages

  • Go

    Not yet published

    Go 1.21+

    No package registry listing yet

  • Ruby

    Not yet published

    Ruby 2.7+

    No package registry listing yet

  • PHP

    Not yet published

    PHP 8.0+

    No package registry listing yet

  • Java

    Not yet published

    Java 11+

    No package registry listing yet

  • C# / .NET

    Not yet published

    .NET 6+

    No package registry listing yet

  • Rust

    Not yet published

    Rust 1.70+

    No package registry listing yet

There is no Go, Ruby, PHP, Java, C# / .NET or Rust package to install yet. The Node.js and Python packages above are published today; from those languages, call the REST API directly — it is a single JSON POST with an X-Api-Key header. For early access to one of these clients, email developers@kawaa.com.

Additional SDKs

Additional registry packages will be listed here after they are published and verified.

Want to build an SDK for another language? Let us know and we'll feature it here.

SDK features

  • Full API coverage
  • TypeScript support (Node.js)
  • Automatic retries
  • Rate limit handling
  • Batch operations
  • Webhook signature verification
  • Async/await support
  • Comprehensive error handling