# Update position

`POST https://api.cryptohopper.com/v1/hopper/{id}/position/{position_id}/update`

Part of [Positions](https://www.cryptohopper.com/api-documentation/api-reference/positions.md) in the Cryptohopper API reference.

Updates the take profit, stop-loss and trailing stop-loss settings of an open position.

OAuth scope: `read`, `manage`

take_profit is applied when above 0. The stop-loss fields are applied only when stop_loss_percentage is above 0: stop_loss 1 turns stop-loss on, 0 or missing turns it off. The trailing fields are applied only when trailing_stop_loss_percentage is above 0, with trailing_stop_loss 1 or 0 in the same way. The timeout units are minutes, hours or days (default minutes). If the body contains position_ids, those positions are updated instead of the path position. auto_close and auto_close_time are read but currently have no effect. Not available for exchange arbitrage, market maker, copy and grid bots.

## Headers

| Name | Type | Required | Description |
|---|---|---|---|
| `access-token` | string | yes | The OAuth access token of the user. |

## Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `position_id` | string | yes | Open position ID. |
| `id` | string | yes | Hopper ID. |

## Request body

| Field | Type | Required | Description |
|---|---|---|---|
| `take_profit` | number | no | Minimum 0. |
| `stop_loss` | number | no | Minimum 0. |
| `stop_loss_timeout_count` | integer | no | Minimum 0. |
| `stop_loss_timeout_val` | string | no | One of: minutes, hours, days. |
| `stop_loss_percentage` | number | no | Minimum 0. |
| `trailing_stop_loss` | number | no | Minimum 0. |
| `trailing_stop_loss_percentage` | number | no | Minimum 0. |
| `trailing_stop_loss_arm` | number | no | Minimum 0. |
| `auto_close` | number | no | Minimum 0. |
| `auto_close_time` | number | no | Minimum 0. |

## Example request

```bash
curl -X POST "https://api.cryptohopper.com/v1/hopper/HOPPER_ID/position/POSITION_ID/update" \
  -H "access-token: YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"take_profit":4,"stop_loss":1,"stop_loss_percentage":2.5,"stop_loss_timeout_count":30,"stop_loss_timeout_val":"minutes","trailing_stop_loss":1,"trailing_stop_loss_percentage":1,"trailing_stop_loss_arm":2,"trailing_stop_loss_timeout_count":0,"trailing_stop_loss_timeout_val":"minutes"}'
```

## Response

Example response (illustrative values):

```json
{
    "data": "Position(s) config settings updated."
}
```

Status codes: 200. Errors return JSON with `status`, `error` and `message`, plus a numeric `code` when the error comes from the API itself rather than the gateway.
