# List agents (machine)

Source: https://immiscible.fly.dev/docs/api/get-v1-admin-agents

`GET /v1/admin/agents`

`agents:read`. Paged: `limit` (1 to 500, default 100) and the `next` cursor from the page before. Each agent carries its standing.

## Authentication

Service token. A scoped machine token (`ims_...`) made by an owner or admin under Settings, sent as `Authorization: Bearer`. Each route needs one scope; tokens expire within 90 days and can be pinned to address ranges. A token can stop agents but never start them, and never decides an approval.

## Request

curl:

```bash
curl "https://immiscible.fly.dev/v1/admin/agents?limit=100" \
  -H "authorization: Bearer $IMMISCIBLE_SERVICE_TOKEN"
```

Node:

```ts
const res = await fetch('https://immiscible.fly.dev/v1/admin/agents?limit=100', {
  headers: {
    authorization: `Bearer ${process.env.IMMISCIBLE_SERVICE_TOKEN}`,
  },
});
const data = await res.json();
console.log(res.status, data);
```

Python:

```python
import os
import requests

res = requests.get(
    "https://immiscible.fly.dev/v1/admin/agents",
    params={
        "limit": "100",
    },
    headers={
        "authorization": f"Bearer {os.environ['IMMISCIBLE_SERVICE_TOKEN']}",
    },
)
print(res.status_code, res.json())
```

## Response

```json
{ "data": [{ "id": "agt_4f2c91a7", "name": "Invoice bot", "vendor": "anthropic", "principalId": "prp_21b7", "status": "active", "tier": "junior", "frozenAt": null, "sponsor": "cfo@acme.example", "killOwner": "secops@acme.example", "standing": {} }], "next": null, "limit": 100 }
```
