# List activity

`GET https://api.endless.app/organizations/{organization_id}/activity`

Source: https://endless.app/docs/api/activity/list

Lists the activity the caller can read. Scoped to the organization named by `organization_id`.

## Authentication

- `bearerAuth`: HTTP bearer (JWT)

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `organization_id` | path | string | yes |  |
| `categories` | query | string | no |  |
| `actors` | query | string | no |  |
| `teams` | query | string | no |  |
| `media` | query | string | no |  |
| `search` | query | string | no |  |
| `since` | query | string | no |  |
| `limit` | query | integer | no |  |
| `cursor` | query | string | no |  |
| `Endless-Api-Version` | header | string | no | Pin the caller to an API major (`1`). Omit to accept the current version. A major this deployment cannot serve is refused with 400 `unsupported_api_version`. |

## Responses

### 200 OK

Content type: `application/json` — object

- `items` (array<object>, required)
  - `id` (string, required)
  - `action` ("generation.ran" | "asset.uploaded" | "asset.trashed" | "chat.ran" | "chat.created" | "chat.trashed" | "canvas.created" | "canvas.trashed" | "connector.created" | "connector.deleted" | "credit.transaction" | "credit.spent" | "member.joined" | "invitation.sent" | "workspace.imported" | "project.created" | "project.trashed" | "access.granted" | "project.asset_linked" | "project.chat_linked" | "project.canvas_linked" | "project.skill_linked" | "team.created" | "team.deleted" | "team.member_added" | "team.member_removed", required)
  - `category` ("generation" | "content" | "credit" | "member", required)
  - `event_at` (string, required)
  - `actor_id` (string | null, required)
  - `target_id` (string, required)
  - `title` (string | null, required)
  - `conversation_key` (string)
  - `legacy_source` ("mod" | "dual" | null)
  - `generation` (object)
    - `status` ("pending" | "running" | "completed" | "failed", required)
    - `output_count` (integer, required)
    - `duration_ms` (number | null, required)
    - `model_name` (string | null, required)
    - `media` ("text" | "image" | "video" | "audio" | null, required)
    - `prompt` (string | null, required)
    - `credits` (integer, required)
    - `outputs` (array<object>, required)
  - `chat_run` (object)
    - `status` ("completed" | "failed" | "declined" | "partial" | "unknown", required)
    - `credits` (integer, required)
    - `conversation_id` (string | null, required)
    - `tools` (object, required)
  - `asset` (object)
    - `type` ("image" | "video" | "audio" | "document" | "text" | "transcript", required)
    - `url` (string | null, required)
  - `credit` (object)
    - `type` ("subscription" | "purchase" | "free_refill" | "gift" | "welcome_gift" | "claim" | "refunded_usage" | "usage" | "expiration" | "opening_adjustment" | "refunded_purchase" | "refunded_subscription" | "adjustment", required)
    - `amount` (integer, required)
    - `feature` (string | null, required)
    - `description` (string | null, required)
    - `conversation_id` (string | null, required)
  - `invitation` (object)
    - `email` (string, required)
    - `role` (string, required)
  - `import_run` (object)
    - `source` ("mod" | "dual", required)
    - `status` ("queued" | "running" | "succeeded" | "failed", required)
    - `members` (integer, required)
    - `assets` (integer, required)
    - `canvases` (integer, required)
  - `access` (object)
    - `resource_type` ("asset" | "chat_conversation" | "canvas" | "project" | "scheduled_task" | "skill", required)
    - `resource_id` (string, required)
    - `member_id` (string, required)
    - `role` ("viewer" | "editor", required)
  - `project` (object)
    - `id` (string, required)
    - `emoji` (string | null, required)
    - `linked_title` (string | null, required)
  - `team` (object)
    - `id` (string, required)
    - `name` (string | null, required)
    - `member_id` (string | null, required)
- `next_cursor` (string | null, required)

### Errors

- `400` (Error): The request is malformed, or failed input validation. `message` names the field and the rule it broke; `data.issues` carries them individually.
- `401` (Error): No bearer token, or a token that failed verification.
- `402` (Error): The workspace has no credits left, or the caller is over a spending limit.
- `403` (Error): Authenticated, but the caller's role in this workspace does not carry the permission this operation needs.
- `404` (Error): No resource with that id, or the caller cannot read it. The two are deliberately one answer, so an id cannot be probed for existence.
- `409` (Error): The request is well-formed, but the resource's current state forbids it — a taken name, a last admin, a limit already reached.
- `429` (Error): The caller has spent its rate-limit window. `Retry-After` says when to come back.
- `500` (Error): The request failed on our side. Safe to retry an idempotent operation with backoff.
