Activity

Read a subject's activity

The newest entries recorded against one subject, limit at a time (50 by default, 200 at most), newest first. Name the subject by alias and id:

curl "https://api.subscriby.net/v1/activity?subject_type=project&subject_id=$PROJECT_ID&limit=20" \
  -H "Authorization: Bearer $SUBSCRIBY_TOKEN"

There is no paging beyond limit: the endpoint is a recent-history read, not an export. The subject is resolved through its own tenant-scoped query before activity is read, so passing the id of a project (or subscription, plan, member) that belongs to another team returns 404 RESOURCE_NOT_FOUND rather than an empty list; existence never leaks across tenants.

  • subject_type and causer_type use short morph aliases (project, project-subscription, project-subscription-plan, project-user, project-resource, user, …) rather than internal class names. Treat them as opaque strings. The subject_type query parameter accepts only the aliases listed on the endpoint; a class name is 422 VALIDATION_FAILED.
  • actor_kind distinguishes the surface the change came through: human (dashboard click), api_token (REST), mcp (MCP tool), zapier, webhook, system (scheduled job). Filter on it client-side when you need "everything the agent did yesterday" separately from dashboard clicks.
  • properties keys matching token, secret, password, api_key or api_secret (case-insensitive) are stripped at any depth before the response leaves the server, so LLM context windows never see credentials that were logged alongside a write.
get/v1/activity

Request

  • Base URL: https://api.subscriby.net
  • URL: https://api.subscriby.net/v1/activity
  • Auth: HTTP bearer

Query parameters

subject_type'project' | 'subscription' | 'project-subscription' | 'member' | 'project-user' | 'plan' | 'project-subscription-plan' | 'access-code' | 'coupon' | 'project-resource' | 'referral-program' | 'referral-affiliate' | 'smart-link' | 'sequence' required

The subjects the public activity surfaces may be asked about. The alias is the contract, not the class name: the REST endpoint used to accept any model FQCN as a fallback, which let a caller probe for class names and pointed a user-controlled string at ::query(). Only these aliases resolve now, and each names the one model it stands for. Two vocabularies are accepted because two surfaces documented them. The REST endpoint has always said member, subscription and plan; the MCP tool has always said project-user, project-subscription and project-subscription-plan. Both map to the same model, so an agent written against either keeps working.

project <br/>
subscription <br/>
project-subscription <br/> The MCP spelling of a subscription.
member <br/>
project-user <br/> The MCP spelling of a member.
plan <br/>
project-subscription-plan <br/> The MCP spelling of a plan.
access-code <br/> An access code is a pending subscription row, so its history lives under the subscription model.
coupon <br/>
project-resource <br/>
referral-program <br/>
referral-affiliate <br/>
smart-link <br/>
sequence <br/>

The kind of subject, as a short alias: project, subscription (or project-subscription), member (or project-user), plan (or project-subscription-plan), access-code, coupon or project-resource. A class name is refused.

subject_idstring uuid required

The subject's id.

limitinteger

How many of the newest entries to return, 1 to 200; defaults to 50. A value above 200 is refused rather than clamped.

Response

Array of ActivityResource

Example response

{
  "data": [
    {
      "id": "92e4c1b6-70da-4f38-8517-b036ae94d7c2",
      "log_name": "default",
      "description": "updated",
      "event": "updated",
      "subject_type": "project",
      "subject_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
      "causer_type": "user",
      "causer_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80",
      "actor_kind": "api_token",
      "created_at": "2026-05-18T10:05:00Z"
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.