# POST /opportunities/:id/add-card

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

Add an opportunity card to a pipeline WITHOUT removing existing cards in other pipelines. Enables an opportunity to appear in multiple pipelines simultaneously (dual/multi placement). If the opportunity already has a card in the target pipeline, its stage is updated. Stage_changed automations fire on new placements or stage changes. Supports skip_automations and skip_action_ids for fine-grained automation control. Legacy alias: POST /deals/:id/add-card.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `id` | path | uuid | yes | Opportunity ID |
| `pipeline_id` | body | uuid | yes | Target pipeline ID |
| `stage_id` | body | uuid | yes | Target stage ID |
| `position` | body | number | no | Position within stage (default 0) |
| `skip_automations` | body | boolean | no | Set true to suppress ALL stage_changed automation triggers. Default false. |
| `skip_action_ids` | body | uuid[] | no | Array of automation action UUIDs to suppress on this card add. Automations still fire but these actions are bypassed and logged. |

## Request example

```bash
curl -X POST \
  "https://api.trustpager.com/functions/v1/api/v1/opportunities/opp-uuid/add-card" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "pipeline_id": "pipe-uuid", "stage_id": "stage-uuid" }'
```

## 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`