
# List connections

`GET /v1/connections` · permission `connections:read`

Lists the connections of the environment the credential belongs to, newest first, in cursor pages. The environment always comes from the credential; connections of other environments are never returned. Changing `type` or `status` invalidates cursors issued for another filter (`400 invalid_cursor`).

## Request

Query parameters:

| Field | Type | Required | Description |
|---|---|---|---|
| `limit` | integer | no | 1-100, default 20. |
| `after / before` | string | no | Opaque cursors from `list_metadata`; mutually exclusive. |
| `order` | string | no | `asc` or `desc` (default) by creation time. |
| `type` | string | no | Filter by connection type, for example `social`. |
| `status` | string | no | Filter by status: `active` or `inactive`. |

## Response

`200 OK` with `data` (connections) and `list_metadata` (`before`, `after`; `null` when there is no further page in that direction). No total count is returned.

```json
{
  "data": [{
      "id": "conn_0k3v8m1q2x9dz4h7s5t6w0y1ab",
      "key": "google",
      "type": "social",
      "strategy": "google",
      "name": "Google",
      "display_name": "Sign in with Google",
      "status": "inactive",
      "org_id": null,
      "allowed_email_domains": [],
      "allow_external_domains": false,
      "jit_mode": null,
      "email_trust": null,
      "default_role_ids": [],
      "trust_idp_mfa": null,
      "allow_idp_initiated": null,
      "idp_initiated_default_application_id": null,
      "idp_initiated_allowed_application_ids": [],
      "settings": {},
      "created_at": "2026-10-05T09:30:00.123456Z",
      "updated_at": "2026-10-05T09:30:00.123456Z"
    }],
  "list_metadata": { "before": null, "after": "<cursor>" }
}
```

## Errors

| HTTP | code | When |
|---|---|---|
| 400 | `invalid_cursor` | The cursor is malformed or was issued for another filter. |
| 422 | `validation_failed` | A query parameter is invalid. |
| 401 | `unauthenticated` | The credential is missing, invalid or revoked. |
| 403 | `insufficient_permissions` | The credential lacks the required permission. |
| 429 | `rate_limited` | The rate limit was exceeded; retry after the `Retry-After` period. |
| 503 | `service_unavailable` | A dependency is temporarily unavailable; retry after the `Retry-After` period. |

## Example

```bash
curl "https://api.eu.keenauth.com/v1/connections?type=social&limit=20" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```
