# Create a new hopper

`POST https://api.cryptohopper.com/v1/hopper`

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

Creates a new hopper with the given name, config and API keys, optionally from a template. When enabled is 1 the new hopper starts right away.

OAuth scope: `manage`

bot_type accepts 0 (trading bot), 1 (exchange arbitrage), 2 (market maker), 4 (signal bot, only when enabled for the account), 6 (portfolio bot) and 8 (grid bot, test accounts only); 11 (AI Bot) is refused and any other value creates a trading bot. template_id is a template ID, optionally prefixed with user_, market_ or basic_. Set config.load_api_from to the ID of another of your hoppers on the same exchange to copy its API keys. api_config must be a JSON object.

## Headers

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

## Request body

| Field | Type | Required | Description |
|---|---|---|---|
| `name` | string | yes |  |
| `enabled` | integer | no |  |
| `api_config` | object | no |  |
| &nbsp;&nbsp;`api_key` | string | no |  |
| &nbsp;&nbsp;`api_secret` | string | no |  |
| &nbsp;&nbsp;`api_passphrase` | string | no |  |
| &nbsp;&nbsp;`extra_api_key` | string | no |  |
| &nbsp;&nbsp;`extra_api_secret` | string | no |  |
| &nbsp;&nbsp;`kraken_extra_key` | string | no |  |
| &nbsp;&nbsp;`kraken_private_extra_key` | string | no |  |
| &nbsp;&nbsp;`gdax_api_passphrase` | string | no |  |
| &nbsp;&nbsp;`gdax_post_only` | string | no |  |
| `template_id` | string | no |  |
| `config` | object | no |  |
| &nbsp;&nbsp;`exchange` | string | no |  |
| &nbsp;&nbsp;`base_currency` | string | no |  |
| &nbsp;&nbsp;`selected_coins` | array of string | no |  |
| &nbsp;&nbsp;`strategy` | string | no | One of: none, multiple_ta, bbands_easy, bbands_advanced, rsi, fixed_rates. |
| &nbsp;&nbsp;`advanced_settings` | object | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`candle_size` | string | no | One of: 5_min, 15_min, 30_min, 1_hour, 2_hours, 4_hours, 1_day. |
| &nbsp;&nbsp;&nbsp;&nbsp;`stochastic` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stochastic_RSI` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`RSI` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`MACD` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`EMA` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`KAMA` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`SMA` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`bollinger_bands` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_fast_K period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_slow_K_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_slow_KMA_type` | string | no | One of: sma, ema, wma, dema, tema, trima, kama, mama, t3. |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_slow_D_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_slow_DMA_type` | string | no | One of: sma, ema, wma, dema, tema, trima, kama, mama, t3. |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_oversold_threshold` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_overbought_threshold` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_req_for_buy_signal` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_RSI_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_RSI_fast_K_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_RSI_fast_D_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_RSI_fast_DMA_type` | string | no | One of: sma, ema, wma, dema, tema, trima, kama, mama, t3. |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_RSI_oversold_threshold` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_RSI_overbought_threshold` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`stoch_RSI_req_for_buy_signal` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`RSI_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`RSI_oversold_threshold` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`RSI_overbought_threshold` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`RSI_needed_for_buy_signal` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`MACD_fast_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`MACD_slow_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`MACD_signal_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`MACD_req_for_buy_signal` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`EMA_short_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`EMA_long_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`EMA_req_for_buy_signal` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`SMA_short_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`SMA_long_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`SMA_req_for_buy_signal` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`KAMA_short_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`KAMA_long_period` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`KAMA_req_for_buy_signal` | integer | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`bollinger_bands_period` | number | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`bollinger_bands_deviation_upper_band` | number | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`bollinger_bands_deviation_lower_band` | number | no |  |
| &nbsp;&nbsp;&nbsp;&nbsp;`bollinger_bands_MA_type` | string | no | One of: sma, ema, wma, dema, tema, trima, kama, mama, t3. |
| &nbsp;&nbsp;&nbsp;&nbsp;`bollinger_bands_req_for_buy_signal` | integer | no |  |
| &nbsp;&nbsp;`targets_to_buy` | integer | no |  |
| &nbsp;&nbsp;`sell_with_strategy` | integer | no |  |
| &nbsp;&nbsp;`pct_profit` | integer | no |  |
| &nbsp;&nbsp;`ticker_rate` | string | no | One of: highest_bid_lowest_ask, last_tick_if_higher_lower, always_last_tick. |
| &nbsp;&nbsp;`cool_down` | integer | no |  |
| &nbsp;&nbsp;`one_open_order_coin` | integer | no |  |
| &nbsp;&nbsp;`pct_lower_bid` | number | no |  |
| &nbsp;&nbsp;`pct_higher_ask` | number | no |  |
| &nbsp;&nbsp;`stop_loss_pct` | number | no |  |
| &nbsp;&nbsp;`trailing_stop_loss` | integer | no |  |
| &nbsp;&nbsp;`trailing_stop_loss_pct` | number | no |  |
| &nbsp;&nbsp;`trailing_stop_arm_pct` | number | no |  |
| &nbsp;&nbsp;`trailing_stop_buy_pct` | number | no |  |
| &nbsp;&nbsp;`hold_target_is_same` | integer | no |  |
| &nbsp;&nbsp;`only_buy_positive_pairs` | integer | no |  |
| &nbsp;&nbsp;`autoclose_position` | integer | no |  |
| &nbsp;&nbsp;`DCA` | integer | no |  |
| &nbsp;&nbsp;`DCA_after_time` | integer | no |  |
| &nbsp;&nbsp;`DCA_max_retries` | integer | no |  |
| &nbsp;&nbsp;`DCA_pct_trigger` | integer | no |  |
| &nbsp;&nbsp;`DCA_buy_immediately` | integer | no |  |
| &nbsp;&nbsp;`DCA_order_size` | string | no | One of: double_down, triple_down. |
| &nbsp;&nbsp;`sell_order_max_open_time` | integer | no |  |
| &nbsp;&nbsp;`buy_order_max_open_time` | integer | no |  |
| &nbsp;&nbsp;`max_open_positions` | integer | no |  |
| &nbsp;&nbsp;`coin_max_open_pos` | integer | no |  |
| &nbsp;&nbsp;`coin_max_open_pos_pct` | number | no |  |
| &nbsp;&nbsp;`buy_order_amount_pct` | number | no |  |
| &nbsp;&nbsp;`buy_order_min_amount` | number | no |  |
| &nbsp;&nbsp;`max_amount_allocated` | number | no |  |

## Example request

```bash
curl -X POST "https://api.cryptohopper.com/v1/hopper" \
  -H "access-token: YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"My BTC bot","enabled":0,"bot_type":0,"template_id":"market_12345","config":{"exchange":"binance","base_currency":"usdt","paper_trading":0},"api_config":{"api_key":"your-exchange-api-key","api_secret":"your-exchange-api-secret"}}'
```

## Response

Example response (illustrative values):

```json
{
    "data": {
        "id": 123457
    }
}
```

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.
