---
title: "Modify stop-loss and take-profit settings on an open position"
method: PATCH
path: "/api/v2/trading/positions/{positionId}"
tags: ["Trading - Real"]
---

# Modify stop-loss and take-profit settings on an open position

`PATCH /api/v2/trading/positions/{positionId}`

**Rate limit:** 60 requests per 60 seconds. This is the **default shared quota** — it is shared with every other endpoint that has no dedicated limit, so requests across those endpoints all draw from the same budget.

---

Submits an asynchronous request to update stop-loss and/or take-profit on an open position. You can set a new stopLossRate, takeProfitRate, stopLossType, or clear either value (clearStopLoss, clearTakeProfit). At least one SL/TP-related field is required. The response returns acceptance and correlation metadata only.

## Path parameters

- `positionId` integer, required

## Headers

- `x-request-id` string, uuid, required
- `x-api-key` string, password, required
- `x-user-key` string, password, required

## Request body

- UpdatePositionRequest — Request payload for patching position stop-loss and take-profit risk parameters.
  - `stopLossRate` number, nullable — New stop-loss rate for the position.
  - `takeProfitRate` number, nullable — New take-profit rate for the position.
  - `stopLossType` 'fixed' | 'trailing', nullable — Stop-loss type.
  - `clearStopLoss` boolean, nullable — When true, removes stop-loss from the position.
  - `clearTakeProfit` boolean, nullable — When true, removes take-profit from the position.

## Response `202`

Request accepted and queued for asynchronous execution.

- UpdatePositionResponse — Response returned when a position edit request is accepted for asynchronous processing.
  - `operationId` string, uuid, required — Correlation identifier for the accepted edit operation.
  - `positionId` integer, required — The position identifier from the route.
  - `referenceId` string, uuid, required — Client reference identifier from x-request-id header.

## Other responses

- `400` — Invalid request. Validation failed.
- `401` — Unauthorized. Invalid or missing authentication.
- `404` — Position not found.
- `409` — Position is closed and cannot be edited.
- `429` — Too Many Requests — the shared rate limit (60 requests / 60s) was exceeded.
- `500` — Internal server error.

---

[API](https://skmtc.dev/etoro/apis/etoro-api.md) · [All operations](https://skmtc.dev/etoro/apis/etoro-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/etoro/etoro-api/revisions/69c1fb266c35/schema)
