Skip to main content
1

Sign up and create a workspace

Go to getimmutable.dev and create an account. A workspace is automatically created for you on registration.
2

Create an API key

Navigate to Settings > API Keys in your dashboard and generate a new key. Copy the full key immediately.
API keys are only shown once at creation. The key is bcrypt hashed before storage — Immutable never stores your raw key. If you lose it, revoke and create a new one.
Your key uses the imk_ prefix:
imk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0...
3

Install an SDK

npm install @getimmutable/sdk
4

Send your first event

import { ImmutableClient } from "@getimmutable/sdk";

const client = new ImmutableClient({
  apiKey: "imk_your_api_key_here",
  baseUrl: "https://getimmutable.dev",
});

const result = await client.track({
  actor_id: "user_2hG9kLm",
  actor_name: "Sarah Chen",
  action: "document.created",
  resource_id: "doc_8nXpQr3",
  resource_name: "Q4 Financial Report",
  resource: "document",
  metadata: { folder: "reports", template: "quarterly" },
});

console.log(result.id);     // "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
console.log(result.status); // "queued"
The API returns 202 Accepted with a pre-generated event ID:
{
  "id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  "status": "queued"
}
5

Query your events

const response = await client.getEvents({
  actor_id: "user_2hG9kLm",
  limit: 10,
});

console.log(response.data);
console.log(response.pagination.has_more);
Response:
{
  "data": [
    {
      "id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
      "actor": { "id": "user_2hG9kLm", "name": "Sarah Chen", "type": null },
      "action": "document.created",
      "action_category": null,
      "resource": { "type": "document", "id": "doc_8nXpQr3", "name": "Q4 Financial Report" },
      "targets": [],
      "metadata": { "folder": "reports", "template": "quarterly" },
      "tenant_id": null,
      "session_id": null,
      "ip_country": "US",
      "ip_city": "San Francisco",
      "idempotency_key": null,
      "version": null,
      "integrity": {
        "event_hash": "a3f2c8d1e4b5...",
        "previous_event_hash": null
      },
      "occurred_at": "2026-03-26T10:15:00.000000Z",
      "created_at": "2026-03-26T10:15:00.000000Z"
    }
  ],
  "pagination": {
    "has_more": false,
    "next_cursor": null,
    "total": 1
  }
}

Next Steps

Event Structure

Understand every field on an event.

Hash Chain

Learn how tamper evidence works.

JavaScript SDK

Full SDK reference with fluent builder.

Laravel SDK

Facade, auto-session, Eloquent observers.