
# List Admin Portal links

`GET /v1/admin-portal-links` · permission `admin-portal-links:read`

Lists the environment's Admin Portal links, newest first; `organization_id` narrows the list to one organization. Only forward pagination is supported. The cursor is bound to the filter. Link URLs are never listed. `consumed_at` is set once a link opened its portal session; `revoked_at` once it was revoked.

## Request

| Field | Type | Required | Description |
|---|---|---|---|
| `limit` | query | no | 1–100, default 20. |
| `after` | query | no | Cursor from `list_metadata.after`. |
| `organization_id` | query | no | Organization ID (`org_…`). |

No request body.

## Response

`200 OK` with a page of links.

```json
{
  "data": [
    {
      "id": "apl_01j9xv2c4d6e8f0g2h4j6k8m0n",
      "organization_id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
      "intents": [
        "dsync",
        "sso"
      ],
      "delivery": "link",
      "return_url": "https://app.example.com/settings/sso",
      "expires_at": "2026-10-12T09:36:00.123456Z",
      "consumed_at": null,
      "revoked_at": null,
      "created_at": "2026-10-12T09:31:00.123456Z"
    }
  ],
  "list_metadata": {
    "before": null,
    "after": null
  }
}
```

## Errors

| HTTP | code | When |
|---|---|---|
| 400 | `invalid_cursor` | The cursor is invalid or belongs to another filter. |
| 422 | `validation_failed` | `organization_id` or `limit` is invalid, or `before` or `order` was given. |
| 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 -i "https://api.eu.keenauth.com/v1/admin-portal-links?organization_id=org_01j9xk3m7q8r2s4t6v8w0y2z4a" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```
