# GET /v1/agents/activity - Org-wide agent and channel activity

Source: <https://everruns.com/docs/api/operations/get_agent_activity/>

GET

/v1/agents/activity

Select code samplecURL (shell:curl)

```js
const url = 'https://app.everruns.com/api/v1/agents/activity';
const options = {method: 'GET'};


try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```sh
curl --request GET \
  --url https://app.everruns.com/api/v1/agents/activity
```

* Production APIapp.everruns.com/api/v1/agents/activity

## Responses

### 200

Agent and channel activity

Media typeapplication/json

Activity for every agent and channel in the organization.

object

**agents**

required

Array\<object>

What one agent is doing now and how its last day went.

object

**agent\_id**

required

Public agent identifier.

string

**failed**

required

Turns that failed in the window.

integer format: int64

**hourly**

required

One bucket per hour, oldest first; the last bucket ends at `generated_at`.

Array\<object>

Turns started and failed in one bucket.

object

**failed**

required

integer format: int64

**runs**

required

integer format: int64

**last\_turn\_at**

When the agent’s most recent turn ended or started.

string | null format: date-time

**running\_sessions**

required

Sessions executing a turn right now.

integer format: int64

**runs**

required

Turns started in the window.

integer format: int64

**triggers**

required

Active triggers, oldest first.

Array\<object>

A trigger: a run the agent starts itself (schedule, webhook, GitHub, MCP event).

object

**enabled**

required

boolean

**trigger\_type**

required

string

**channels**

required

Array\<object>

Traffic one channel brought in over the last week.

object

**channel\_id**

required

Public channel identifier.

string

**daily**

required

Sessions per day, oldest first; the last day ends at `generated_at`.

Array\<integer>

**identified\_sessions**

required

Sessions that carried an end-user identity. Zero means the channel cannot tell people apart (webhook, API, anonymous callers), so `people` says nothing about its audience.

integer format: int64

**last\_session\_at**

When the channel last started a session inside the window.

string | null format: date-time

**median\_first\_reply\_ms**

Median milliseconds from a session’s first user message to the agent’s first completed reply, over sessions that got one.

integer | null format: int64

**people**

required

Distinct end users behind the channel’s sessions in the window.

integer format: int64

**sessions**

required

Sessions the channel started in the window.

integer format: int64

**days**

required

Days covered by `ChannelActivity.daily`.

integer format: int32

**generated\_at**

required

string format: date-time

**hours**

required

Hours covered by `AgentActivity.hourly`.

integer format: int32

**totals**

required

Org-wide totals for the page masthead.

object

**channel\_sessions**

required

Sessions channels started in the last 7 days.

integer format: int64

**failed**

required

Turns that failed in the last 24 hours.

integer format: int64

**max\_active\_turns**

required

The organization’s active-turn limit (`ORG_MAX_ACTIVE_TURNS`).

integer format: int64

**people\_reached**

required

Distinct end users across every channel in the last 7 days.

integer format: int64

**running\_sessions**

required

Sessions executing a turn right now, across every agent.

integer format: int64

**runs**

required

Turns started in the last 24 hours.

integer format: int64

##### Example

```json
{
  "agents": [
    {
      "agent_id": "agent_01933b5a00007000800000000000001",
      "triggers": [
        {
          "trigger_type": "github"
        }
      ]
    }
  ],
  "channels": [
    {
      "channel_id": "appchan_01933b5a000070008000000000000001"
    }
  ]
}
```

### 403

Forbidden

Media typeapplication/json

Standard error response.

Wire shape is [RFC 9457 Problem Details](https://www.rfc-editor.org/rfc/rfc9457): every error response includes `title` and `status`, and may include `detail`, `code`, `allowed_actions`, `retry_after_seconds`, `instance`, and `type`. The content type is rewritten to `application/problem+json` with the `application/problem+json` content type.

object

**allowed\_actions**

Recovery actions the caller can take next.

Array\<object>

Agent-actionable link describing a follow-up the caller can take. Used in two contexts:

* **Error recovery** — `ErrorResponse.allowed_actions` carries `rel`s like `retry`, `retry-later`, `unarchive`, `get-existing` so the agent knows the right next call after a 4xx/429.
* **Entity hypermedia** — `WithUrls<T>.allowed_actions` carries state-aware `rel`s like `cancel`, `events`, `self`, `update` on the entity itself so the agent can follow links instead of reconstructing routes from prose.

The shape is intentionally identical across both contexts; the closed `rel` vocabulary distinguishes them.

object

**hint**

Short, agent-readable hint (e.g. “Shorten ‘name’ to <= 200 chars.”, “Cancel the active turn for this session.”).

string | null

**href**

Absolute (preferred) or relative URL the caller may invoke directly. **Always present on entity hypermedia actions** (`WithUrls<T>.allowed_actions`); **optional on error-recovery actions** (`ErrorResponse.allowed_actions`) where the matching `operation_id` is enough and the URI is implicit from the failed call.

string | null

**method**

HTTP method to use against `href`. Required for entity hypermedia actions; usually omitted on error-recovery actions where the same operation is retried with its original method.

string | null

**operation\_id**

OpenAPI `operationId` the caller should invoke. Lets an MCP client resolve the call without parsing `href`.

string | null

**rel**

required

Link relation describing the action. Examples: `self`, `cancel`, `pause`, `resume`, `events`, `retry`, `retry-later`, `unarchive`, `get-existing`, `delete`, `update`.

string

**schema\_ref**

OpenAPI `$ref` to the request-body schema, when the action takes one (e.g. `#/components/schemas/UpdateSessionRequest`). Lets a tool-calling agent fetch the input shape without scanning the whole spec.

string | null

**code**

Stable, machine-readable error code (snake\_case).

string | null

**detail**

Human-readable explanation specific to this occurrence.

string | null

**instance**

Request URI for this occurrence.

string | null

**retry\_after\_seconds**

Seconds the caller should wait before retrying (429 / transient 503).

integer | null format: int32

**status**

required

HTTP status code; mirrors the response status line.

integer format: int32

**title**

required

Short, human-readable summary of the problem (e.g. “Not Found”).

string

**type**

RFC 9457 problem type URI. Optional; identifies the problem class.

string | null

##### Example

```json
{
  "allowed_actions": [
    {
      "method": "POST"
    }
  ],
  "code": "session_not_found",
  "detail": "Session session_01933b5a000070008000000000000001 not found in org org_01933b5a000070008000000000000001.",
  "instance": "/v1/sessions/session_01933b5a000070008000000000000001",
  "retry_after_seconds": 30,
  "status": 404,
  "title": "Session not found",
  "type": "https://everruns.com/docs/errors/session_not_found"
}
```

### 500

Internal server error

Media typeapplication/json

Standard error response.

Wire shape is [RFC 9457 Problem Details](https://www.rfc-editor.org/rfc/rfc9457): every error response includes `title` and `status`, and may include `detail`, `code`, `allowed_actions`, `retry_after_seconds`, `instance`, and `type`. The content type is rewritten to `application/problem+json` with the `application/problem+json` content type.

object

**allowed\_actions**

Recovery actions the caller can take next.

Array\<object>

Agent-actionable link describing a follow-up the caller can take. Used in two contexts:

* **Error recovery** — `ErrorResponse.allowed_actions` carries `rel`s like `retry`, `retry-later`, `unarchive`, `get-existing` so the agent knows the right next call after a 4xx/429.
* **Entity hypermedia** — `WithUrls<T>.allowed_actions` carries state-aware `rel`s like `cancel`, `events`, `self`, `update` on the entity itself so the agent can follow links instead of reconstructing routes from prose.

The shape is intentionally identical across both contexts; the closed `rel` vocabulary distinguishes them.

object

**hint**

Short, agent-readable hint (e.g. “Shorten ‘name’ to <= 200 chars.”, “Cancel the active turn for this session.”).

string | null

**href**

Absolute (preferred) or relative URL the caller may invoke directly. **Always present on entity hypermedia actions** (`WithUrls<T>.allowed_actions`); **optional on error-recovery actions** (`ErrorResponse.allowed_actions`) where the matching `operation_id` is enough and the URI is implicit from the failed call.

string | null

**method**

HTTP method to use against `href`. Required for entity hypermedia actions; usually omitted on error-recovery actions where the same operation is retried with its original method.

string | null

**operation\_id**

OpenAPI `operationId` the caller should invoke. Lets an MCP client resolve the call without parsing `href`.

string | null

**rel**

required

Link relation describing the action. Examples: `self`, `cancel`, `pause`, `resume`, `events`, `retry`, `retry-later`, `unarchive`, `get-existing`, `delete`, `update`.

string

**schema\_ref**

OpenAPI `$ref` to the request-body schema, when the action takes one (e.g. `#/components/schemas/UpdateSessionRequest`). Lets a tool-calling agent fetch the input shape without scanning the whole spec.

string | null

**code**

Stable, machine-readable error code (snake\_case).

string | null

**detail**

Human-readable explanation specific to this occurrence.

string | null

**instance**

Request URI for this occurrence.

string | null

**retry\_after\_seconds**

Seconds the caller should wait before retrying (429 / transient 503).

integer | null format: int32

**status**

required

HTTP status code; mirrors the response status line.

integer format: int32

**title**

required

Short, human-readable summary of the problem (e.g. “Not Found”).

string

**type**

RFC 9457 problem type URI. Optional; identifies the problem class.

string | null

##### Example

```json
{
  "allowed_actions": [
    {
      "method": "POST"
    }
  ],
  "code": "session_not_found",
  "detail": "Session session_01933b5a000070008000000000000001 not found in org org_01933b5a000070008000000000000001.",
  "instance": "/v1/sessions/session_01933b5a000070008000000000000001",
  "retry_after_seconds": 30,
  "status": 404,
  "title": "Session not found",
  "type": "https://everruns.com/docs/errors/session_not_found"
}
```