All first-party SDKs are generated from the same OpenAPI 3.1 spec we publish the API from, so they track the reference exactly — every code sample in the docs type-checks against the current release. Community libraries are listed with their maintainers; we don't control their release cadence.
@thirdpartyapi/sdkNode 18+. Works in Deno and Bun too, though our CI only tests Node.
Typed responses, retries with jitter baked in, and a tiny helper for cursor pagination so you don't hand-roll it at 2am.
# npm npm install @thirdpartyapi/sdk # or: pnpm add @thirdpartyapi/sdk
import ThirdPartyApi from "@thirdpartyapi/sdk"; const tpa = new ThirdPartyApi({ apiKey: process.env.THIRDPARTY_KEY }); const result = await tpa.verify.email({ email: "ada@example.com" }); if (result.state === "deliverable") { console.log(`safe to send (${result.qualityScore})`); }
thirdpartyapiPython 3.9+. No runtime dependencies beyond httpx.
Both a sync client and an async one. Dataclasses for every response, so your IDE knows what quality_score is before runtime does.
# pip pip install thirdpartyapi # or: pip install "thirdpartyapi[async]"
from thirdpartyapi import Client client = Client() # reads THIRDPARTY_KEY from the environment geo = client.geo.ip("98.207.254.17") print(geo.city, geo.org, geo.is_vpn)
thirdpartyapi-goGo 1.21+. Context-aware: every method takes a context.Context first, as is right and proper.
Version 2.0 shipped with the v2.2.0 webhook-signature scheme. The 1.x line still compiles but is frozen.
go get github.com/third-party-api/thirdpartyapi-go/v2
import ( tpapi "github.com/third-party-api/thirdpartyapi-go/v2" ) client := tpapi.NewClient(tpapi.WithAPIKey(os.Getenv("THIRDPARTY_KEY"))) person, err := client.Enrich.ContactByEmail(ctx, "ada@lovelace.dev") if err != nil { return fmt.Errorf("enrich failed: %w", err) } fmt.Println(person.FullName, person.Title)
third-party-api/phpPHP 8.1+. Uses Guzzle under the hood; a PSR-18 adapter is pluggable if you're on something else.
# Composer
composer require third-party-api/php
$tpa = \ThirdPartyApi\Client::fromEnv(); $result = $tpa->verifyEmail('ada@example.com'); if ($result->state === 'risky') { error_log("careful with this one"); }
third_party_api (Ruby)Maintained by Marta K. and two co-maintainers who stepped up in late 2025. Gem name is third_party_api.
The Ruby SDK was first-party until 2023; our Ruby usage inside the company was one script and a grudge, so we handed it to people who actually write Ruby. It's in better shape now than it ever was under our roof.
# Gemfile gem "third_party_api"
require "third_party_api" client = ThirdPartyApi::Client.new(api_key: ENV["THIRDPARTY_KEY"]) result = client.verify.email(email: "ada@example.com") puts "#{result.state} — score #{result.quality_score}"
| Language | Package | Maintainer | Notes |
|---|---|---|---|
| Rust | thirdpartyapi-rs | @henning | Tokio-based, well-documented |
| Elixir | third_party_api (hex) | @cline-labs | Only covers verification so far |
| Java | io.thirdpartyapi:sdk | @slowikm | Maven Central, targets 21+ |
Written a library we're missing? Open a PR against the forum post that mirrors this page — we link rather than vendor, so your release process stays yours.
First-party SDKs follow the API's major version: SDK 2.x talks to API v2 and refuses to start against v1 (moot since October 2024, but still). We won't ship a breaking SDK change without a minor-version runway and a note in the changelog. Community libraries version however their maintainers see fit — pin accordingly.