# POST /opportunities/:opportunity_id/move

**Resource:** [Opportunities](./opportunities.md)  
**MCP tool:** `move_opportunity`  
**Scopes:** `opportunities:write`  
**Write operation:** yes

Move an opportunity to a different stage. Provide pipeline_id + stage_id (or just stage_id if it already has a placement).

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `opportunity_id` | path | string | yes |  |
| `pipeline_id` | body | string | no |  |
| `stage_id` | body | string | yes |  |
| `require_approval` | body | boolean | no | Optional. Set true to route this write into the approval queue for human review instead of executing it immediately (returns 202 + an approval_id). Works even when your key/token has permission to execute directly. |

## Request example

```bash
curl -X POST   "https://api.trustpager.com/functions/v1/api/v1/opportunities/:opportunity_id/move"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"   -d '{"pipeline_id":"...","stage_id":"..."}'
```

## Response example

```json
{
  "data": {
    "id": "placement-uuid",
    "deal_id": "opp-uuid",
    "pipeline_id": "pipe-uuid",
    "stage_id": "stage-uuid",
    "position": 0
  },
  "meta": { "credits_remaining": 9499 }
}
```

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