# List member limits

Lists your organization's active members with their monthly limits on Aitronos servers and their Aitronos server spend this month, ordered by name. Use it for the per-person list on a billing screen; change one person's limit with [Set a member's limit](/docs/api-reference/forge-compute/update-member-limit). The input to show for that limit (label, help, bounds) is `fields.member_limit_chf` in [Get spend limits](/docs/api-reference/forge-compute/get-limits).

A person's spend is the spend of the Aitronos servers they own, whoever started them.

Requires a bearer token (or API key) whose principal holds the `manage_billing` capability in the acting organization. It works while Forge cloud compute is switched off.

#### Query Parameters

**`limit`** integer optional

How many members to return, 1 to 500. Default `200`.

**`offset`** integer optional

How many members to skip, `0` or more. Default `0`.

**`organization_id`** string optional

The organization to act in. Defaults to your current organization. You must be an active member of it, or the request is refused with `403 ORGANIZATION_ACCESS_DENIED`.

#### Headers

**`X-Organization-Id`** string optional

The same as `organization_id`, as a header. When both are sent, the query parameter wins.

## Returns

Amounts are CHF strings with two decimals. A limit of `null` is not set; a spend of `null` could not be read, never `"0.00"` in its place.

- **`currency`** string — always `CHF`.
- **`month`** string — the UTC calendar month the spend covers, `YYYY-MM`.
- **`member_default_chf`** string or `null` — the organization's default monthly limit per person.
- **`spend_known`** boolean — `false` when the spend could not be read; every member's `spent_chf` is then `null`.
- **`members`** array — one page of members, each with:
  - **`user_id`** string — the person's user id.
  - **`name`** string — the person's name, else their email.
  - **`email`** string — the person's email.
  - **`override_chf`** string or `null` — the limit set for this person; `null` means the default per person applies.
  - **`admin_limit_chf`** string or `null` — what the organization allows the person: `override_chf`, else the default per person.
  - **`self_limit_chf`** string or `null` — the limit the person set on themselves.
  - **`effective_limit_chf`** string or `null` — the smaller of the two: what the person is held to. `null` means no per-person limit applies.
  - **`limit_source`** string or `null` — which limit binds: `self`, `override` or `default`; `null` with no limit.
  - **`spent_chf`** string or `null` — the person's Aitronos server spend this month (`"0.00"` when they spent nothing).
- **`total`** integer — the number of active members in the organization.
- **`limit`**, **`offset`** integer — the page that was returned.



```json
{
  "currency": "CHF",
  "month": "2026-10",
  "member_default_chf": "12.50",
  "spend_known": true,
  "members": [
    {
      "user_id": "usr_7f3a9c2e1b8d4e6fa0c5b3d9e2f1a4c7",
      "name": "Anna Keller",
      "email": "anna.keller@example.com",
      "override_chf": null,
      "admin_limit_chf": "12.50",
      "self_limit_chf": null,
      "effective_limit_chf": "12.50",
      "limit_source": "default",
      "spent_chf": "1.66"
    },
    {
      "user_id": "usr_2b8e4d1a9c3f4e7b8a6d5c2e1f0b9a83",
      "name": "Marco Rossi",
      "email": "marco.rossi@example.com",
      "override_chf": "35.00",
      "admin_limit_chf": "35.00",
      "self_limit_chf": "20.00",
      "effective_limit_chf": "20.00",
      "limit_source": "self",
      "spent_chf": "9.80"
    }
  ],
  "total": 2,
  "limit": 200,
  "offset": 0
}
```

## Errors

| Status | Code | When |
|  --- | --- | --- |
| 401 | `AUTHENTICATION_REQUIRED` | No valid credential. |
| 403 | `ORGANIZATION_ACCESS_DENIED` | `organization_id` or `X-Organization-Id` names an organization you are not an active member of. |
| 403 | `INSUFFICIENT_PERMISSIONS` | The caller does not hold `manage_billing` in the acting organization. |
| 422 | `VALIDATION_ERROR` | `limit` outside 1 to 500 or a negative `offset`. `details.fields` names the parameter. |



```bash cURL
curl "https://api.aitronos.com/v1/forge/compute/limits/members?limit=200&offset=0" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```


```python Python SDK
# pip install aitronos-sdk
#
# The Python SDK does not expose a typed `forge_compute` namespace yet, so call
# the endpoint directly with the same credential you would pass to `Aitronos(...)`
# — an API key or a bearer token, both sent as `Authorization: Bearer <value>`.
import httpx

API_KEY = "your-api-key"

page = httpx.get(
    "https://api.aitronos.com/v1/forge/compute/limits/members",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={"limit": 200, "offset": 0},
).json()
for member in page["members"]:
    print(member["name"], member["spent_chf"], member["effective_limit_chf"])
```


```python Python
import os
import requests

token = os.environ["AITRONOS_TOKEN"]
members, offset = [], 0
while True:
    page = requests.get(
        "https://api.aitronos.com/v1/forge/compute/limits/members",
        headers={"Authorization": f"Bearer {token}"},
        params={"limit": 500, "offset": offset},
    ).json()
    members.extend(page["members"])
    offset += page["limit"]
    if offset >= page["total"]:
        break
print(len(members), "members")
```


```javascript JavaScript
const url = new URL("https://api.aitronos.com/v1/forge/compute/limits/members");
url.searchParams.set("limit", "200");
const response = await fetch(url, {
  headers: { Authorization: `Bearer ${process.env.AITRONOS_TOKEN}` },
});
const page = await response.json();
console.log(page.total, page.members.map((m) => `${m.name}: ${m.spent_chf ?? "unknown"}`));
```

**Response:**

200 OK

```json
{
  "currency": "CHF",
  "month": "2026-10",
  "member_default_chf": "12.50",
  "spend_known": true,
  "members": [
    {
      "user_id": "usr_7f3a9c2e1b8d4e6fa0c5b3d9e2f1a4c7",
      "name": "Anna Keller",
      "email": "anna.keller@example.com",
      "override_chf": null,
      "admin_limit_chf": "12.50",
      "self_limit_chf": null,
      "effective_limit_chf": "12.50",
      "limit_source": "default",
      "spent_chf": "1.66"
    },
    {
      "user_id": "usr_2b8e4d1a9c3f4e7b8a6d5c2e1f0b9a83",
      "name": "Marco Rossi",
      "email": "marco.rossi@example.com",
      "override_chf": "35.00",
      "admin_limit_chf": "35.00",
      "self_limit_chf": "20.00",
      "effective_limit_chf": "20.00",
      "limit_source": "self",
      "spent_chf": "9.80"
    }
  ],
  "total": 2,
  "limit": 200,
  "offset": 0
}
```

200 Spend unknown

```json
{
  "currency": "CHF",
  "month": "2026-10",
  "member_default_chf": "12.50",
  "spend_known": false,
  "members": [
    {
      "user_id": "usr_7f3a9c2e1b8d4e6fa0c5b3d9e2f1a4c7",
      "name": "Anna Keller",
      "email": "anna.keller@example.com",
      "override_chf": null,
      "admin_limit_chf": "12.50",
      "self_limit_chf": null,
      "effective_limit_chf": "12.50",
      "limit_source": "default",
      "spent_chf": null
    },
    {
      "user_id": "usr_2b8e4d1a9c3f4e7b8a6d5c2e1f0b9a83",
      "name": "Marco Rossi",
      "email": "marco.rossi@example.com",
      "override_chf": "35.00",
      "admin_limit_chf": "35.00",
      "self_limit_chf": "20.00",
      "effective_limit_chf": "20.00",
      "limit_source": "self",
      "spent_chf": null
    }
  ],
  "total": 2,
  "limit": 200,
  "offset": 0
}
```

422 Page too large

```json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Input should be less than or equal to 500",
    "system_message": "Request validation failed",
    "type": "validation_error",
    "status": 422,
    "details": {
      "fields": [
        {
          "field": "limit",
          "message": "Input should be less than or equal to 500",
          "type": "less_than_equal"
        }
      ]
    },
    "trace_id": "3f1c9a52-7d4e-4b8a-9c21-6e0d5f7a8b34",
    "timestamp": "2026-10-01T09:00:00Z"
  }
}
```

403 Forbidden

```json
{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_PERMISSIONS",
    "message": "You don't have permission to perform this action.",
    "system_message": "Missing required capability: manage_billing",
    "type": "authorization_error",
    "status": 403,
    "details": {"required_capability": "manage_billing"},
    "trace_id": "3f1c9a52-7d4e-4b8a-9c21-6e0d5f7a8b34",
    "timestamp": "2026-10-01T09:00:00Z"
  }
}
```

## Related Resources

- [Forge cloud compute overview](/docs/api-reference/forge-compute/introduction)
- [List billing organizations](/docs/api-reference/forge-compute/list-billing-organizations)
- [Choose the default billing organization](/docs/api-reference/forge-compute/choose-billing-organization)
- [List project groups](/docs/api-reference/forge-compute/list-project-groups)
- [Register or update a project group](/docs/api-reference/forge-compute/put-project-group)
- [Delete a project group](/docs/api-reference/forge-compute/delete-project-group)
- [List compute offerings](/docs/api-reference/forge-compute/list-offerings)
- [Get offering options](/docs/api-reference/forge-compute/get-offering-options)
- [Resolve a free size](/docs/api-reference/forge-compute/resolve-offering-size)
- [List connected accounts](/docs/api-reference/forge-compute/list-credentials)
- [Connect a cloud account](/docs/api-reference/forge-compute/put-credential)
- [Disconnect a cloud account](/docs/api-reference/forge-compute/delete-credential)
- [Create a server](/docs/api-reference/forge-compute/create-host)
- [List servers](/docs/api-reference/forge-compute/list-hosts)
- [List your servers in every organization](/docs/api-reference/forge-compute/list-my-hosts)
- [Get a server](/docs/api-reference/forge-compute/get-host)
- [Get a server's daily cost and uptime](/docs/api-reference/forge-compute/get-host-usage)
- [List a server's running intervals](/docs/api-reference/forge-compute/list-host-intervals)
- [List a server's event history](/docs/api-reference/forge-compute/list-host-events)
- [Report a setup step](/docs/api-reference/forge-compute/report-progress)
- [Report the server's host key](/docs/api-reference/forge-compute/report-host-key)
- [Mark a server ready](/docs/api-reference/forge-compute/report-ready)
- [Report activity](/docs/api-reference/forge-compute/report-activity)
- [Park a server](/docs/api-reference/forge-compute/park-host)
- [Resume a server](/docs/api-reference/forge-compute/resume-host)
- [Delete a server](/docs/api-reference/forge-compute/delete-host)
- [Revoke a server](/docs/api-reference/forge-compute/revoke-host)
- [Get compute settings](/docs/api-reference/forge-compute/get-settings)
- [Update compute settings](/docs/api-reference/forge-compute/update-settings)
- [Get spend limits](/docs/api-reference/forge-compute/get-limits)
- [Change the organization's limits](/docs/api-reference/forge-compute/update-organization-limits)
- [Set your own limit](/docs/api-reference/forge-compute/update-my-limit)
- [List member limits](/docs/api-reference/forge-compute/list-member-limits)
- [Set a member's limit](/docs/api-reference/forge-compute/update-member-limit)
- [Delete a leftover resource](/docs/api-reference/forge-compute/delete-orphan)