TypeScript SDK
The official TypeScript client — fully typed against the OpenAPI document, for Node.js and edge runtimes, with a webhook signature verifier.
Getting it
The package is @403ent/transmute. It is not yet on the public npm registry — access is provided during onboarding (contact support); once published, it will be a plain npm install @403ent/transmute.
Convert a message
import { createClient } from "@403ent/transmute";
const client = createClient({
baseUrl: "https://api.transmute.403fin.io",
apiKey: process.env.TRANSMUTE_KEY!,
});
const resp = await client.convert({
to: "camt.053",
message: mt940Text, // raw MT; `from` omitted → auto-detect
});
console.log(resp.meta.detectedType); // "mt940"
for (const w of resp.warnings) {
console.log(`${w.code} (${w.severity}): ${w.detail}`);
}
All request and response shapes — ConvertRequest, ConvertResponse, Problem, Warning, and the rest — are exported types generated from the OpenAPI document, so your compiler knows exactly what the API accepts and returns. normalize, validate, and enrich follow the same pattern.
Verify a webhook delivery
import { verifyWebhookSignature } from "@403ent/transmute";
// In your handler — use the RAW body bytes, before any JSON parsing:
verifyWebhookSignature(
endpointSecret, // "whsec_..." — the full string
req.headers["x-transmute-signature"], // "t=...,v1=..."
rawBody,
{ toleranceSeconds: 300 },
);
See Webhooks for the delivery contract (retries, dedupe, auto-disable).
Notes
- Amounts are strings in every type — use a decimal library (
big.js,decimal.js); JavaScript numbers corrupt money. - API errors carry the parsed RFC 9457 problem, including the
typeslug from the error catalog. - The portal endpoints are intentionally absent from the SDK — they are the web dashboard's internal surface.
Was this page helpful?