Skip to content

API reference

Activity

The record of every change, with who made it and through what.

2 actions · base URL https://api.bizisy.com/v1 · generated from the same definitions as the API.

List activity#

POST/v1/platform/activity.listRead

Lists Activity entries, newest first: every change made in Bizisy (and, for AI assistants, every preview and failed attempt), with who did it, through what (web or which API key), status (ok, dry_run = preview only, error), a one-line summary and links to what it touched. Owners, admins and HR (in Manage) see the whole organization; everyone else, and every call through the me audience, sees only their own activity. Filter by status, channel (ui, api, mcp, job), action_id, actor_user_id, or subject_id: entries about one record, e.g. a person id from org_people_list (changes to their profile, job, pay, invites and login link). Each entry lists subject_ids (ids only, never names). Page with before = next_before from the previous page; limit defaults to 50 (at most 100).

Who can call it
Manage key any Manage role
Me key anyone
MCP tool
platform_activity_list on My Workplace, HR Assistant
Method
POST with a JSON body, or GET with the input as query parameters

Input

  • status"ok" | "dry_run" | "error"
  • actor_user_idstring
  • action_idstring
  • channel"ui" | "api" | "mcp" | "job"
  • subject_idstring

    A record id (e.g. a person id): only entries about it.

  • beforestring | null

    An entry id: return only entries older than it (next_before of the previous page).

  • limitinteger

    From 1 to 100. Default 50.

Returns

  • entriesobject[]required
    16 fields
    • idstringrequired
    • created_atstringrequired
    • action_idstringrequired
    • action_titlestringrequired
    • kind"read" | "write" | "destructive"required
    • channel"ui" | "api" | "mcp" | "job"required
    • status"ok" | "dry_run" | "error"required
    • dry_runbooleanrequired
    • summarystringrequired
    • actorobject | nullrequired
      5 fields
      • user_idstringrequired
      • person_idstring | nullrequired
      • namestring | nullrequired
      • emailstring | nullrequired
      • credentialobjectrequired
        4 fields
        • kind"session" | "api_key"required
        • idstringrequired
        • namestring | nullrequired
        • appbooleanrequired

          A connected app (signed in with OAuth) rather than an API key; name is the app's.

    • inputobject | nullrequired
    • input_keysstring[] | nullrequired
    • errorobject | nullrequired
      2 fields
      • codestringrequired
      • messagestringrequired
    • linksobject[]required
      2 fields
      • labelstringrequired
      • pathstringrequired
    • subject_idsstring[]required
    • eventsstring[]required
  • next_beforestring | nullrequired

Errors

validation_failed unauthenticated forbidden not_found rate_limited internal

curl
curl https://api.bizisy.com/v1/platform/activity.list \
  -H "Authorization: Bearer $BIZISY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "actor_user_id": "u1",
  "action_id": "org.people.hire",
  "before": "01k0000000000000000000000a"
}'
Response
{
  "data": {
    "entries": [
      {
        "id": "01k0000000000000000000000a",
        "created_at": "2026-10-04T10:00:00.000Z",
        "action_id": "org.people.change_job",
        "action_title": "Change a person's job (effective-dated)",
        "kind": "write",
        "channel": "mcp",
        "status": "dry_run",
        "dry_run": true,
        "summary": "Changed a person's job (from 2026-11-01)",
        "actor": {
          "user_id": "usr1",
          "person_id": "p1",
          "name": "Ana Ferreira",
          "email": "ana@acme.test",
          "credential": {
            "kind": "api_key",
            "id": "k1",
            "name": "Claude",
            "app": false
          }
        },
        "input": {
          "person_id": "p1",
          "title": "Lead"
        },
        "input_keys": null,
        "error": null,
        "links": [
          {
            "label": "Open person",
            "path": "/manage/people/p1"
          }
        ],
        "subject_ids": [
          "p1"
        ],
        "events": [
          "org.person.job_changed.v1"
        ]
      }
    ],
    "next_before": null
  }
}

Get an activity entry#

POST/v1/platform/activity.getRead

Returns one Activity entry by id (the id at the end of a view_url). Owners, admins and HR (in Manage) see the whole organization; everyone else, and every call through the me audience, sees only their own activity. not_found otherwise.

Who can call it
Manage key any Manage role
Me key anyone
MCP tool
platform_activity_get on My Workplace, HR Assistant
Method
POST with a JSON body, or GET with the input as query parameters

Input

  • idstringrequired

Returns

16 fields
  • idstringrequired
  • created_atstringrequired
  • action_idstringrequired
  • action_titlestringrequired
  • kind"read" | "write" | "destructive"required
  • channel"ui" | "api" | "mcp" | "job"required
  • status"ok" | "dry_run" | "error"required
  • dry_runbooleanrequired
  • summarystringrequired
  • actorobject | nullrequired
    5 fields
    • user_idstringrequired
    • person_idstring | nullrequired
    • namestring | nullrequired
    • emailstring | nullrequired
    • credentialobjectrequired
      4 fields
      • kind"session" | "api_key"required
      • idstringrequired
      • namestring | nullrequired
      • appbooleanrequired

        A connected app (signed in with OAuth) rather than an API key; name is the app's.

  • inputobject | nullrequired
  • input_keysstring[] | nullrequired
  • errorobject | nullrequired
    2 fields
    • codestringrequired
    • messagestringrequired
  • linksobject[]required
    2 fields
    • labelstringrequired
    • pathstringrequired
  • subject_idsstring[]required
  • eventsstring[]required

Errors

validation_failed unauthenticated forbidden not_found rate_limited internal

curl
curl https://api.bizisy.com/v1/platform/activity.get \
  -H "Authorization: Bearer $BIZISY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":"01k0000000000000000000000a"}'
Response
{
  "data": {
    "id": "01k0000000000000000000000a",
    "created_at": "2026-10-04T10:00:00.000Z",
    "action_id": "org.people.change_job",
    "action_title": "Change a person's job (effective-dated)",
    "kind": "write",
    "channel": "mcp",
    "status": "dry_run",
    "dry_run": true,
    "summary": "Changed a person's job (from 2026-11-01)",
    "actor": {
      "user_id": "usr1",
      "person_id": "p1",
      "name": "Ana Ferreira",
      "email": "ana@acme.test",
      "credential": {
        "kind": "api_key",
        "id": "k1",
        "name": "Claude",
        "app": false
      }
    },
    "input": {
      "person_id": "p1",
      "title": "Lead"
    },
    "input_keys": null,
    "error": null,
    "links": [
      {
        "label": "Open person",
        "path": "/manage/people/p1"
      }
    ],
    "subject_ids": [
      "p1"
    ],
    "events": [
      "org.person.job_changed.v1"
    ]
  }
}

Something missing or wrong on this page? Write to hello@bizisy.com.

Developer docs