Reference

SDKs

Four thin clients over the same REST API. They handle auth, retries with jitter, idempotency keys and webhook verification — nothing you could not write yourself in an afternoon, which is the point.

LanguagePackageMinimum runtime
TypeScript / JavaScript@fin-techai/sdkNode 18+, or any fetch-capable runtime
Pythonfin-techai3.9+
Gogithub.com/fin-techai/go-sdk1.21+
Javacom.fintechai:sdk17+

TypeScript

npm install @fin-techai/sdk
import { FinTechAI } from '@fin-techai/sdk';

const ftai = new FinTechAI({
  apiKey: process.env.FTAI_KEY,
  environment: 'sandbox',        // or 'production'
  maxRetries: 5,                 // jittered backoff, honours Retry-After
  scoringVersion: 4,             // pin the methodology
});

const r = await ftai.screen.address({
  chain: 'ethereum',
  address: '0x7a25…f3b1',
});

if (r.sanctions.match) freeze(r);          // hard control first
else if (r.risk_score >= 60) review(r);    // your threshold, not ours

if (r.coverage.stale.length) log.warn('stale coverage', r.coverage);

Python

pip install fin-techai
from fin_techai import FinTechAI

ftai = FinTechAI(api_key=os.environ["FTAI_KEY"],
                 environment="sandbox")

profile = ftai.credit.profile(
    chain="ethereum",
    address="0x91cd…8ee0",
    as_of="2026-01-31T00:00:00Z",   # point-in-time replay
)

if profile.thin_file:
    # unknown, not bad — do not decline on this alone
    route_to_manual_review(profile)

Go

go get github.com/fin-techai/go-sdk
client := ftai.New(ftai.Config{
    APIKey:      os.Getenv("FTAI_KEY"),
    Environment: ftai.Sandbox,
})

quote, err := client.Route.Quote(ctx, ftai.QuoteRequest{
    Asset:  "USDT",
    Amount: "250000.00",          // decimal string, never float64
    Destination: ftai.Destination{Chain: "tron", Address: "TQ8x…v2"},
})
if err != nil { return err }

// idempotency key must be stable across retries of the same payout
payout, err := client.Route.Execute(ctx, ftai.ExecuteRequest{
    QuoteID: quote.QuoteID, RouteRank: 1,
}, ftai.WithIdempotencyKey("payout-20614"))

Webhook verification helper

Every client ships a verifier so you do not have to get the constant-time comparison and the freshness window right yourself.

import { verifyWebhook } from '@fin-techai/sdk';

app.post('/hooks/ftai',
  express.raw({ type: 'application/json' }),   // raw bytes, not parsed
  (req, res) => {
    const ok = verifyWebhook(req.body,
      req.header('X-FTAI-Signature'),
      process.env.FTAI_WEBHOOK_SECRET);
    if (!ok) return res.sendStatus(400);
    res.sendStatus(200);                       // ack first
    queue.push(JSON.parse(req.body));          // work after
  });

Using no SDK at all

Entirely supported and reasonably common. The API reference shows raw cURL for every endpoint, and the only things you must implement yourself are the retry policy on errors and limits and the signature verification. Both are about twenty lines.

An OpenAPI 3.1 description is available at https://api.fin-techai.com/v1/openapi.json if you would rather generate a client than use ours.