For developers

A developer audit log API without the enterprise ceremony

TypeScript SDK, REST API, real docs with a live playground. Drop Recalled in your Next.js, NestJS or plain Node app in under 5 minutes and never touch your audit-log table again.

Your first event in 5 lines
import { Recalled } from "@recalled/sdk";

const recalled = new Recalled({
  apiKey: process.env.RECALLED_API_KEY!,
});

await recalled.events.create({
  action: "user.login",
  actor: { id: user.id, email: user.email },
  metadata: { ip, userAgent },
});

You have a product to ship. Building your own audit-log table, indexing it, archiving it, exporting it, and explaining it to an auditor is nine months of work you never planned. Recalled gives you a typed SDK, a REST API, hash-chained integrity and EU hosting, so the feature exists before you finish your coffee.

Why developers ship with Recalled

  • Typed SDK, no magic

    `@recalled/sdk` on npm. TypeScript types, promise-based API, zero decorators, no reflection, no framework lock-in.

  • REST API for everything else

    Python, Go, Ruby, PHP, Rust, whatever you ship in, a cURL call works. OpenAPI spec in the docs.

  • A real playground

    Paste your API key, hit Run, see the response. No fake swagger, no broken 'try it' buttons.

  • Framework agnostic

    Next.js App Router, Pages Router, NestJS, Express, Hono, Fastify, Bun, Deno. Node 18+ is the only requirement.

The audit-log table you will never have to build

Append-only writes, cursor pagination for millions of rows, full-text search over metadata, retention jobs, CSV export, signed integrity, EU hosting, DPA-ready, all of that without touching your schema. Emit events, query events, get on with shipping.

Where to start

Three concrete things to wire up on day one.

Priority actions to wire

Your next audit log is 2 minutes away

Stop hacking on your own logs table. Drop in Recalled, send your first event, move on.