# Controls

The **Controls** type contains your global copy‑trading controls. These settings act as defaults for every mirrored wallet and can be selectively overridden per mirror.

| Field                              | Type / details                                                                                                                                                                                                                        |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tradeSizeLamports`                | **Number** – example `10000000`, lamports spent per buy                                                                                                                                                                               |
| `tradeSpeed`                       | **String** – example `"Turbo"`, valid: `Standard`, `Turbo`, `Godly`                                                                                                                                                                   |
| `buyMinPriorityFee`                | **Number** – example `0.1`, Minimum priority fee for buys. Applies to spot copy buys on Instant buy mode.                                                                                                                             |
| `sellStrategy`                     | **String** – example `"SellProportionally"`, valid: `SellAll`, `SellProportionally`, `NoSell`                                                                                                                                         |
| `maxBuysPerMirrorPerHour`          | **Number** – example `3`                                                                                                                                                                                                              |
| `maxBuysPerMirrorPerDay`           | **Number** – example `10`                                                                                                                                                                                                             |
| `maxBuysPerTokenPerDay`            | **Number** – example `1`                                                                                                                                                                                                              |
| `maxBuysPerTokenPerWeek`           | **Number** – example `5`                                                                                                                                                                                                              |
| `allowPumpFun`                     | **Boolean** – example `true`                                                                                                                                                                                                          |
| `snipeLaunchpadLaunches`           | **Boolean** – example `true`                                                                                                                                                                                                          |
| `launchpadLaunchSnipeTradeSizeSol` | **Number** – example `0.2`, size in SOL for launchpad snipes                                                                                                                                                                          |
| `mevProtection`                    | **String** – example `"Balanced"`, valid: `Fastest`, `Balanced`, `Protected`                                                                                                                                                          |
| `degenMode`                        | **Boolean** – example `false`                                                                                                                                                                                                         |
| `allowBuys`                        | **Boolean** – example `true`                                                                                                                                                                                                          |
| `buyStrategy`                      | **String** – example `"Scaling"`, valid: `Constant`, `Scaling`                                                                                                                                                                        |
| `ssMinBuy`                         | **Number** – example `0.1`, minimum SOL for scaling strategy                                                                                                                                                                          |
| `ssPercent`                        | **Number** – example `40`, percentage for scaling strategy                                                                                                                                                                            |
| `ssMaxBuy`                         | **Number** – example `0.5`, maximum SOL for scaling strategy                                                                                                                                                                          |
| `buyMode`                          | **String** – example `"Instant"`, `Instant` will copy buys instantly. `BuyTheDip` will wait for a dip after the mirror's buy before buying. `BuyTheDip` mode uses `buyDipPct` and `buyDipTimeoutSecs`., valid: `Instant`, `BuyTheDip` |
| `buyDipPct`                        | **Number** – example `5`, Only used in `BuyTheDip` mode. How much the price dips before you buy. Must be a number between 0 and 100. If empty, defaults to 5.                                                                         |
| `buyDipTimeoutSecs`                | **Number** – example `86400`, Only used in `BuyTheDip` mode. How long to wait for a dip after your mirror buys. Max 7 days. If empty, defaults to 1 day.                                                                              |
| `crossMirrorPrevention`            | **Boolean** – example `true`                                                                                                                                                                                                          |
| `pfSlippage`                       | **Number** – example `10`, pump.fun slippage percent                                                                                                                                                                                  |
| `buyExtraTipPct`                   | **Number** – example `1`, extra tip on buys (percent)                                                                                                                                                                                 |
| `sellExtraTipPct`                  | **Number** – example `0.5`, extra tip on sells (percent)                                                                                                                                                                              |
| `minMcUsd`                         | **Number** – example `10000`, minimum market cap in USD                                                                                                                                                                               |
| `maxMcUsd`                         | **Number** – example `200000`, maximum market cap in USD                                                                                                                                                                              |
| `minTokenAgeSecs`                  | **Number** – example `60`, minimum token age (in seconds)                                                                                                                                                                             |
| `maxTokenAgeSecs`                  | **Number** – example `604800`, maximum token age (in seconds)                                                                                                                                                                         |
| `onlyCopyNewPositions`             | **Boolean**, Only copy the buy if the mirror is opening a new position. A new position means the mirror's balance of the token they're buying was 0 immediately before this buy. Defaults to `false`.                                 |
| `autoSellProfileKey`               | **String** – key of an existing auto-sell profile                                                                                                                                                                                     |

### tradeSizeLamports

**Type: Number**\
Total lamports OdinBot spends per buy when no scaling strategy is in effect.\
\&#xNAN;*Example: `10000000` (≈ 0.01 SOL).*

**(optional field)**

***

### tradeSpeed

**Type: String** - `Standard`, `Turbo`, `Godly`\
Selects the speed tier for copy-trades.\
\&#xNAN;*Example: `"Turbo"`.*

**(optional field)**

***

### buyMinPriorityFee

**Type: Number**\
Minimum priority fee for buys. Applies to spot copy buys on Instant buy mode.\
E*xample: `0.1`.*

**(optional field)**

***

### sellStrategy

**Type: String** - `SellAll`, `SellProportionally`, `NoSell`\
Defines how OdinBot exits positions when the mirrored wallet sells.\
\&#xNAN;*Example: `"SellProportionally"`.*

**(optional field)**

***

### maxBuysPerMirrorPerHour

**Type: Number**\
Limits how many buys Odinbot will make for a mirrored wallet within an hour.\
\&#xNAN;*Example: `3`.*

**(optional field)**

***

### maxBuysPerMirrorPerDay

**Type: Number**\
Limits the number of buys Odin will make for a mirrored wallet within a 24-hour window.\
\&#xNAN;*Example: `5`.*

**(optional field)**

***

### maxBuysPerTokenPerDay

**Type: Number**\
Maximum number of buys allowed for the same token in a 24-hour window.\
\&#xNAN;*Example: `1`.*

**(optional field)**

***

### maxBuysPerTokenPerWeek

**Type: Number**\
Maximum number of buys allowed for the same token in a 7-day window.\
\&#xNAN;*Example: `5`.*

**(optional field)**

***

### allowPumpFun

**Type: Boolean**\
If `true`, OdinBot is allowed to copy trades on pump.fun.\
\&#xNAN;*Example: `true`.*

**(optional field)**

***

### snipeLaunchpadLaunches

**Type: Boolean**\
If `true`, OdinBot will snipe (quickly buy) the tokens that your mirror launches (or creates) on a launchpad.\
\&#xNAN;*Example: `true`.*

**(optional field)**

***

### launchpadLaunchSnipeTradeSizeSol

**Type: Number**\
Amount in **SOL** to spend on each launchpad snipe (independent of `tradeSizeLamports`).\
\&#xNAN;*Example: `0.2`.*

**(optional field)**

***

### mevProtection

**Type: String** - `Fastest`, `Balanced`, `Protected`\
Sets MEV protection.\
\&#xNAN;*Example: `"Fastest"`.*

**(optional field)**

***

### degenMode

**Type: Boolean**\
Removes slippage entirely for trades not executed on Pump.fun or PumpSwap.\
\&#xNAN;*Example: `false`.*

**(optional field)**

***

### allowBuys

**Type: Boolean**\
Master switch that disables **all** new buys when set to `false`. Sells remain unaffected.\
\&#xNAN;*Example: `true`.*

**(optional field)**

***

### buyStrategy

**Type: String** - `Constant`, `Scaling`\
`Constant` uses `tradeSizeLamports` for every buy. `Scaling` calculates size from `ssMinBuy`, `ssPercent`, and `ssMaxBuy`.\
\&#xNAN;*Example: `"Constant"`.*

**(optional field)**

***

### ssMinBuy

**Type: Number**\
Defines the smallest trade size (in SOL) that Odinbot will execute. If your buy would be below this size, no trade will be made. (only used when `buyStrategy` is set to `Scaling`).\
\&#xNAN;*Example: `0.1`.*

**(optional field)**

***

### ssPercent

**Type: Number**\
Percentage of the mirror's original buy size OdinBot should match.\
\&#xNAN;*Example: `40`.*

**(optional field)**

***

### ssMaxBuy

**Type: Number**\
Sets the largest trade size (in SOL) that Odinbot will execute. If the calculated buy size exceeds this value, Odinbot will instead use this value for the buy size.\
\&#xNAN;*Example: `0.5`.*

**(optional field)**

***

### buyMode

**Type: String** - `Instant`, `BuyTheDip`\
`Instant` will copy buys instantly. `BuyTheDip` will wait for a dip after the mirror's buy before buying. `BuyTheDip` mode uses `buyDipPct` and `buyDipTimeoutSecs`.\
\&#xNAN;*Example: `"Instant"`.*

**(optional field)**

***

### buyDipPct

**Type: Number**\
Only used in `BuyTheDip` mode. How much the price dips before you buy. Must be a number between 0 and 100. If empty, defaults to 5.\
\&#xNAN;*Example: `5`.*

**(optional field)**

***

### buyDipTimeoutSecs

**Type: Number**\
Only used in `BuyTheDip` mode. How long to wait for a dip after your mirror buys. Max 7 days. If empty, defaults to 1 day.\
\&#xNAN;*Example: `86400`.*

**(optional field)**

***

### crossMirrorPrevention

**Type: Boolean**\
When enabled, only the mirrored wallet that caused the first trade of a token can trade that token until the position is closed.\
\&#xNAN;*Example: `true`.*

**(optional field)**

***

### pfSlippage

**Type: Number**\
Allowed slippage (%) when buying on Pump.fun or PumpSwap.\
\&#xNAN;*Example: `10`.*

**(optional field)**

***

### buyExtraTipPct

**Type: Number**\
Adds a percentage-based additional tip to potentially speed up mirrored buys. The tip scales with the trade size.\
\&#xNAN;*Example: `1` (adds 1 %).*

**(optional field)**

***

### sellExtraTipPct

**Type: Number**\
Adds a percentage-based additional tip to potentially speed up mirrored sells. The tip scales with the trade size.\
\&#xNAN;*Example: `0.5`.*

**(optional field)**

***

### minMcUsd

**Type: Number**\
Minimum market cap (USD) a token must have for OdinBot to buy it.\
\&#xNAN;*Example: `10000`.*

**(optional field)**

***

### maxMcUsd

**Type: Number**\
Maximum market cap (USD) above which OdinBot will not buy.\
\&#xNAN;*Example: `200000`.*

**(optional field)**

***

### minTokenAgeSecs

**Type: Number**

Minimum token age (in seconds) a token must have for OdinBot to buy it.

*Example: `60`.*

**(optional field)**

***

### maxTokenAgeSecs

**Type: Number**

Maximum token age (in seconds) a token must have for OdinBot to buy it.

*Example: `604800`.*

**(optional field)**

***

### onlyCopyNewPositions

**Type: Boolean**\
Only copy the buy if the mirror is opening a new position. A new position means the mirror's balance of the token they're buying was 0 immediately before this buy. Defaults to false.

**(optional field)**

***

### autoSellProfileKey

**Type: String**\
Key of the auto-sell profile OdinBot should apply.

**(optional field)**

{% content-ref url="/pages/0e7H4uTaOzpZ6yewSpak" %}
[Types](/api-documentation/types.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.odinbot.io/api-documentation/types/controls.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
