# Update strategy

`PATCH https://api.cryptohopper.com/v1/strategy/{strategy_id}`

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

Updates one of the user's own strategies. Fields you leave out or send empty keep their current value.

OAuth scope: `read`, `manage`

Unlike Create strategy, image here is image data encoded as base64; it is uploaded and cropped to 600 by 430 pixels. min_buys or min_sells of 0 keep the current value. Each config item needs id, name, chartperiod, params, type, candle_pattern and keep_signal, and may also have description, necessary, min_buys, min_sells, signal_when, signal_when_value, candle_value and exclusive; any other key makes the config invalid. config may also be sent as a JSON string.

## Headers

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

## Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `strategy_id` | string | yes | ID of the strategy. |

## Request body

| Field | Type | Required | Description |
|---|---|---|---|
| `name` | string | no |  |
| `description` | string | no |  |
| `image` | string | no |  |
| `config` | object | no |  |
| &nbsp;&nbsp;`id` | number | no | Minimum 0. |
| &nbsp;&nbsp;`name` | string | no |  |
| &nbsp;&nbsp;`chartperiod` | string | no |  |
| &nbsp;&nbsp;`params` | string | no |  |
| &nbsp;&nbsp;`type` | string | no |  |
| &nbsp;&nbsp;`description` | string | no |  |
| &nbsp;&nbsp;`signal_when` | string | no |  |
| &nbsp;&nbsp;`signal_when_value` | string | no |  |
| &nbsp;&nbsp;`candle_value` | string | no |  |
| &nbsp;&nbsp;`candle_pattern` | string | no |  |
| &nbsp;&nbsp;`keep_signal` | string | no |  |
| `min_buys` | number | no | Minimum 0. |
| `min_sells` | number | no | Minimum 0. |

## Example request

```bash
curl -X PATCH "https://api.cryptohopper.com/v1/strategy/STRATEGY_ID" \
  -H "access-token: YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"RSI and SAR v2","description":"Tighter RSI thresholds","config":[{"id":"121","name":"RSI with region crossovers (RSI)","type":"buy","params":{"candle_value":{"type":"select","name":"OHLCV Value","options":["open","close","high","low","volume"],"default":"close"},"period":{"type":"number","step":1,"min":1,"max":500,"name":"RSI Period","default":14},"oversold":{"type":"number","step":0.01,"min":0,"max":100,"name":"Oversold threshold","default":30},"overbought":{"type":"number","step":0.01,"min":0,"max":100,"name":"Overbought threshold","default":70},"region_type":{"type":"select","name":"Signal on region","options":["in","out"],"default":"in"}},"chartperiod":"900","candle_pattern":0,"necessary":1,"keep_signal":0}],"min_buys":1}'
```

## Response

Example response (illustrative values):

```json
{
    "data": {
        "strategy_id": "369000",
        "message": "Strategy has been saved."
    }
}
```

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.
