# GET /stage-changes

**Resource:** [Stage Changes](./stage-changes.md)  
**MCP tool:** `list_stage_changes`  
**Scopes:** `opportunities:read`  
**Write operation:** no

List pipeline stage-change (card-movement) events — the audit trail of every time an opportunity moved between stages, on any pipeline. Each event records who moved it (moved_by, null = automation/system), the from-stage and to-stage (id + name), the pipeline, and when (moved_at). This is the source for "who moved this card out of <stage>, and when", card-movement reports, and stage-velocity analysis — human and automated moves alike, told apart by moved_by. Use human_only=true for people-only moves. Covers manual kanban drags, API/MCP moves, and automation moves.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `limit` | query | number | no | Max events (1-100, default 25) |
| `after` | query | string | no | Pagination cursor |
| `opportunity_id` | query | string | no | Filter to one opportunity — its full move history in chronological order |
| `pipeline_id` | query | string | no | Filter to moves within a specific pipeline |
| `moved_by` | query | string | no | Filter to moves made by a specific user (UUID) |
| `human_only` | query | boolean | no | When true, return only moves made by a real user (excludes automation/system moves where moved_by is null) |
| `moved_after` | query | string | no | ISO timestamp — only events at/after this time |
| `moved_before` | query | string | no | ISO timestamp — only events at/before this time |

## Request example

```bash
curl   "https://api.trustpager.com/functions/v1/api/v1/stage-changes"   -H "Authorization: Bearer YOUR_API_KEY"
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`