> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bravadotrade.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v2/trade/perps/positions: Positions and TP/SL

> The user's open Polymarket Perps positions with their take-profit and stop-loss, and the route that sets them. Scopes perps.read and trade.perps.

> [!NOTE]
>
> Sign each request with a fresh HMAC signature. The cURL and HTTP header values below are placeholders, not reusable credentials. For runnable signing code, use [request signing examples](https://docs.bravadotrade.com/authentication-examples.md).

## List positions

Open positions, with their take-profit and stop-loss. Scope `perps.read`.

```text theme={null}
GET https://partner-api.bravadotrade.com/v2/trade/perps/positions
```

### Query Parameters

**instrument\_id** `integer`

Only the position on this instrument.

### Example

```bash cURL theme={null}
curl -G https://partner-api.bravadotrade.com/v2/trade/perps/positions \
  -H "X-BRAVADO-API-KEY: $BRAVADO_API_KEY" \
  -H "X-BRAVADO-TIMESTAMP: <unix-ms>" \
  -H "X-BRAVADO-SIGNATURE: <signature-for-this-request>" \
  -d instrument_id=1
```

## Set take-profit and stop-loss

Sets the position's take-profit and stop-loss, **replacing** what was armed. Scope `trade.perps`; `Idempotency-Key` is required.

```text theme={null}
POST https://partner-api.bravadotrade.com/v2/trade/perps/positions/{instrument_id}/tpsl
```

A take-profit or stop-loss armed on a position stays armed until you cancel it by `order_id` with [`DELETE /v2/trade/perps/orders/{id}`](https://docs.bravadotrade.com/api/trade/perps/cancel-orders) or replace it here. [`DELETE /v2/trade/perps/orders`](https://docs.bravadotrade.com/api/trade/perps/cancel-orders#cancel-all-open-orders) does not cancel it.

### Path Parameters

**instrument\_id** `string` *required*

The venue instrument id of the position.

### Body

At least one of the two.

**take\_profit** `object`

**take\_profit fields**

**trigger\_price** `string` *required*

Triggered on the mark price. Decimal string.

**stop\_loss** `object`

**stop\_loss fields**

**trigger\_price** `string` *required*

Triggered on the mark price. Decimal string.

### Errors

| Status | When |
| - | - |
| `409 Conflict` | `POSITION_OR_ORDERS_EXIST` with `reason: "no_position"`: TP/SL needs an open position on the instrument |

Every Perps code and its retry rule: [Errors](https://docs.bravadotrade.com/api/trade/perps.md#errors).

### Example

```bash cURL theme={null}
curl -X POST https://partner-api.bravadotrade.com/v2/trade/perps/positions/1/tpsl \
  -H "X-BRAVADO-API-KEY: $BRAVADO_API_KEY" \
  -H "X-BRAVADO-TIMESTAMP: <unix-ms>" \
  -H "X-BRAVADO-SIGNATURE: <signature-for-this-request>" \
  -H "Idempotency-Key: 5f3b8c2a-perps-tpsl-0001" \
  -H "Content-Type: application/json" \
  -d '{ "take_profit": { "trigger_price": "90000" }, "stop_loss": { "trigger_price": "76000" } }'
```

## Related

* [`POST /v2/trade/perps/orders`](https://docs.bravadotrade.com/api/trade/perps/place-order) to attach TP/SL when placing an order, or to close a position.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.