> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbitaio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Settings

> Take complete control over the functionality of OrbitAIO and configure the bot according to your requirements.

The bot will generate a `settings.toml` file in the same directory as the executable. Learn more about the individual [settings](#general-settings) below.

## General Settings

<ResponseField name="license_key" type="string" required>
  Your license key (retrieved from the [dashboard](https://orbitaio.com)).

  Example: `ORBIT-GEQA52-201891-068569`
</ResponseField>

<ResponseField name="private_key" type="string" required>
  Private key of the Solana wallet which holds your OrbitAIO Pass NFT.
</ResponseField>

<ResponseField name="discord_webhook" type="url">
  Your Discord webhook url where transaction logs will be sent.
</ResponseField>

<ResponseField name="orbit_webhook_secret" type="string">
  OrbitAIO webhook secret (retrieved from the [dashboard](https://orbitaio.com) - trades history section).
  This is used to send transaction logs to your OrbitAIO account.

  Example: `LEM4cfDSObp1uoFSxo8W`
</ResponseField>

<ResponseField name="log_to_file" type="boolean">
  Log to a file in the same directory as the executable.
</ResponseField>

## RPCs `[rpc]`

<ResponseField name="eth_rpc" type="url" required>
  Ethereum RPC used for Ethereum wallet management functions.

  Example: `https://eth.drpc.org`
</ResponseField>

<ResponseField name="sei_rpc" type="url" required>
  SEI RPC used for SEI wallet management functions.

  Example: `https://sei-rpc.polkachu.com`
</ResponseField>

<ResponseField name="sol_rpc" type="url" required>
  Solana RPC used for Solana wallet management functions.

  Example: `https://api.mainnet-beta.solana.com`
</ResponseField>

<ResponseField name="btc_rpc" type="url">
  BTC RPC (currently not required, will be used for modules on our roadmap).
</ResponseField>

## Hotkeys `[hotkeys]`

Use hot keys to quickly sell a token (when bot is in the process of auto selling)

<ResponseField name="use_hotkeys" type="boolean" required>
  Indicates whether hotkeys are enabled for quick selling.

  Example: `true` (hotkeys enabled)
</ResponseField>

<ResponseField name="sell_1_pc" type="integer" required>
  Percentage of the token(s) to sell with hotkey 1.

  Example: `25` (25% of the token)
</ResponseField>

<ResponseField name="sell_2_pc" type="integer" required>
  Percentage of the token(s) to sell with hotkey 2.

  Example: `50` (50% of the token)
</ResponseField>

<ResponseField name="sell_3_pc" type="integer" required>
  Percentage of the token(s) to sell with hotkey 3.

  Example: `75` (75% of the token)
</ResponseField>

<ResponseField name="sell_4_pc" type="integer" required>
  Percentage of the token(s) to sell with hotkey 4.

  Example: `100` (100% of the token)
</ResponseField>

## Solana `[solana]`

<ResponseField name="precreate_ata" type="boolean" required>
  Whether to pre-create the ATA or not. Setting this to true will only allow for 1 transaction to succeed for a token when spamming.

  Default: `true`
</ResponseField>

<ResponseField name="compute_unit_limit" type="integer" required>
  Compute Unit limit to apply to transactions.
  Default: `80000`
</ResponseField>

<ResponseField name="max_node_retries_fast" type="integer" required>
  Max node retries to apply when using `fast` mode.
  Default: `0`
</ResponseField>

<ResponseField name="max_node_retries_spam" type="integer" required>
  Max node retries to apply when using `spam` mode.
  Default: `1`
</ResponseField>

<ResponseField name="wm_extra_fee" type="float" required>
  Extra fee to use when using wallet management functions like `Wrap SOL` or `Close ATAs`.
  Default: `0.0`
</ResponseField>

<ResponseField name="simulate_transaction" type="boolean" optional>
  Setting to simulate your transactions. Set to `true` to enable transaction simulation.
</ResponseField>

## Jito `[jito]`

<ResponseField name="block_engine_url" type="string" required>
  Jito block engine URL to use. Enter the full URL including the protocol.

  Example: `https://ny.mainnet.relayer.jito.wtf`
</ResponseField>

<ResponseField name="spam_block_engine_urls" type="array[string]" required>
  Jito block engine URLs to use when using `spam` mode. Enter the full URLs including the protocol.

  Example:

  ```
  spam_block_engine_urls = [
      "https://ny.mainnet.block-engine.jito.wtf",
      "https://frankfurt.mainnet.block-engine.jito.wtf",
      "https://amsterdam.mainnet.block-engine.jito.wtf",
      "https://tokyo.mainnet.block-engine.jito.wtf",
  ]
  ```
</ResponseField>

<ResponseField name="confirmation_timeout" type="integer" required>
  Jito confirmation timeout (how long to wait for bundle confirmation) in milliseconds.

  Example: `10000`
</ResponseField>

<ResponseField name="dynamic_tip_percentile_buy" type="string" optional>
  Real-time Jito percentile tip to use for buy tasks. Options: `P25`, `P50`, `P75`, `P95`, `P99`. Leave empty to not use.
</ResponseField>

<ResponseField name="dynamic_tip_percentile_sell" type="string" optional>
  Real-time Jito percentile tip to use for sell tasks. Options: `P25`, `P50`, `P75`, `P95`, `P99`. Leave empty to not use.
</ResponseField>

## Retries `[retry]`

<ResponseField name="max_tasks" type="integer" required>
  Maximum number of tasks to run simultaneously.

  Example: `10` (10 tasks)
</ResponseField>

<ResponseField name="max_tx_retries" type="integer" required>
  Maximum number of retries when buying/selling in FAST mode.

  Example: `10` (10 retries)
</ResponseField>

<ResponseField name="max_spam_tx_retries" type="integer" required>
  Maximum number of retries when buying/selling in SPAM mode.

  Example: `200` (200 retries)
</ResponseField>

<ResponseField name="max_wm_retries" type="integer" required>
  Maximum number of transaction retries for wallet management functions.

  Example: `10` (10 retries)
</ResponseField>

## Refresh Rates `[refresh_rates]`

<ResponseField name="price_refresh_rate" type="integer" required>
  How often to refresh the price (when auto selling) in milliseconds.

  Example: `1000` (1 second)
</ResponseField>

<ResponseField name="ui_refresh_rate" type="integer" required>
  How often to refresh the UI in milliseconds.

  Example: `1000` (1 second)
</ResponseField>

## Blacklists `[blacklist]`

<ResponseField name="use_internal" type="boolean" required>
  Indicates whether to use internal blacklist database.

  Example: `false` (checking disabled)
</ResponseField>

<ResponseField name="creator_check" type="boolean" required>
  Indicates whether to check the token creator's address against a list of blacklisted addresses specified in the `blacklists/creators.txt` file.

  Example: `false` (checking disabled)
</ResponseField>

<ResponseField name="name_check" type="boolean" required>
  Indicates whether to check the token's name against a list of blacklisted names specified in the `blacklists/names.txt` file.

  Example: `false` (checking disabled)
</ResponseField>

<ResponseField name="token_check" type="boolean" required>
  Indicates whether to check the token's address against a list of blacklisted token addresses specified in the `blacklists/tokens.txt` file.

  Example: `false` (checking disabled)
</ResponseField>

## PumpItPro `[pumpitpro]`

<ResponseField name="wl_key" type="string" required>
  API key for accessing the PumpItPro whitelist.

  Example: `your-whitelist-api-key`
</ResponseField>

<ResponseField name="bl_key" type="string" required>
  API key for accessing the PumpItPro blacklist.

  Example: `your-blacklist-api-key`
</ResponseField>

## Pumpfun CT `[pf_copytrader]`

<ResponseField name="pf_buy_cu_limit" type="integer" required>
  Sets the compute units limit for buying via Pumpfun.

  Example: `80000`
</ResponseField>

<ResponseField name="pf_sell_cu_limit" type="integer" required>
  Sets the compute units limit for selling via Pumpfun.

  Example: `80000`
</ResponseField>

<ResponseField name="ray_buy_cu_limit" type="integer" required>
  Sets the compute units limit for buying via Raydium.

  Example: `80000`
</ResponseField>

<ResponseField name="ray_sell_cu_limit" type="integer" required>
  Sets the compute units limit for selling via Raydium.

  Example: `80000`
</ResponseField>

<ResponseField name="copy_pf_sells" type="boolean" required>
  Specifies whether to copy Pumpfun sells .

  Example: `true`
</ResponseField>

<ResponseField name="copy_ray_sells" type="boolean" required>
  Specifies whether to copy Raydium sells (after liquidity has migrated).

  Example: `true`
</ResponseField>

<ResponseField name="copy_pf_additional_buys" type="boolean" required>
  Specifies whether to copy additional Pumpfun buy orders from the wallet you're copying.

  Example: `false`
</ResponseField>

<ResponseField name="copy_ray_additional_buys" type="boolean" required>
  Specifies whether to copy additional Raydium buy orders from the wallet you're copying.

  Example: `false`
</ResponseField>

<ResponseField name="use_blacklists" type="boolean" required>
  Indicates whether to use blacklists (see `[blacklist]` settings).

  Example: `true`
</ResponseField>

<ResponseField name="pumpitpro_dev_must_be_wl" type="boolean" optional>
  Toggles whether the Pumpfun token developer must be in the PumpItPro whitelist.

  Example: `false`
</ResponseField>

<ResponseField name="pumpitpro_dev_must_not_be_bl" type="boolean" optional>
  Toggles whether the Pumpfun token developer must not be in the blacklist.

  Example: `false`
</ResponseField>

<ResponseField name="min_buy_sol" type="float" required>
  Specifies the minimum amount of SOL required for a BUY order to be copied from a copy wallet. Only BUY orders equal to or greater than this SOL amount will be copied; orders with lesser amounts will be skipped.

  Example: `0.1` (only copy BUY orders with 0.1 SOL or more)
</ResponseField>

<ResponseField name="min_sell_pc" type="float" required>
  Defines the minimum percentage of tokens being sold in a SELL order to be copied from a copy wallet. Only SELL orders where the seller is selling at least this percentage of their total holdings will be considered.

  Example: `5.0` (only copy SELL orders where at least 5% of holdings are sold)
</ResponseField>

<ResponseField name="require_filters_match_buy" type="boolean" required>
  Specifies whether filters must match before executing a buy.

  Example: `false`
</ResponseField>

<ResponseField name="filters_match_timeout_ms" type="integer" required>
  Sets the timeout in milliseconds for filters to match on buys.

  Example: `30000`
</ResponseField>

<ResponseField name="bonding_curve_progress" type="float" required>
  Specifies the required bonding curve progress (%) for a token.

  Example: `50.00`
</ResponseField>

<ResponseField name="holders_holding_percentage" type="float" required>
  Specifies the **maximum percentage** of the total token supply that any single holder can possess. This setting allows you to avoid tokens where a single holder owns a large share of the supply, which can be a risk factor for market manipulation or rug pulls.

  Example: `10.0` (only consider tokens where no single holder owns more than 10% of the total supply)
</ResponseField>

<ResponseField name="transaction_count" type="integer" required>
  Specifies the minimum transaction count for the token.

  Example: `50`
</ResponseField>

<ResponseField name="holder_count" type="integer" required>
  Specifies the minimum number of unique holders for the token.

  Example: `5`
</ResponseField>

<ResponseField name="has_socials" type="boolean" required>
  Specifies whether the token must have any social media links.

  Example: `false`
</ResponseField>

<ResponseField name="has_twitter" type="boolean" required>
  Specifies whether the token must have a Twitter account.

  Example: `false`
</ResponseField>

<ResponseField name="has_telegram" type="boolean" required>
  Specifies whether the token must have a Telegram channel/group (link).

  Example: `false`
</ResponseField>

<ResponseField name="has_website" type="boolean" required>
  Specifies whether the token must have an official website.

  Example: `false`
</ResponseField>

<ResponseField name="has_description" type="boolean" required>
  Specifies whether the token must have a description.

  Example: `false`
</ResponseField>

<ResponseField name="developer_deploys_count" type="integer" required>
  Specifies the minimum number of deployments by the developer.

  Example: `5`
</ResponseField>

<ResponseField name="developer_completed_count" type="integer" required>
  Specifies the minimum number of completed projects (migrated to Raydium) by a developer.

  Example: `2`
</ResponseField>

<ResponseField name="developer_highest_market_cap" type="float" required>
  Specifies the minimum highest market cap achieved by the developer's projects.

  Example: `200000.0`
</ResponseField>

<ResponseField name="developer_total_buy_amount" type="float" required>
  Specifies the total amount of tokens bought by the developer.

  Example: `100000.0`
</ResponseField>

<ResponseField name="developer_holding_percentage" type="float" required>
  Specifies the maximum percentage of tokens held by the developer.

  Example: `5.0`
</ResponseField>

## Sleep Mode (AFK) `[sleep]`

<ResponseField name="only_timed_pools" type="boolean" required>
  Specifies whether the bot should only buy tokens from timed liquidity pools during sleep mode.

  Example: `false` (no restriction on pool timing)
</ResponseField>

<ResponseField name="only_untimed_pools" type="boolean" required>
  Specifies whether the bot should only buy tokens from untimed liquidity pools during sleep mode.

  Example: `false` (no restriction on pool timing)
</ResponseField>

<ResponseField name="mint_authority_check" type="boolean" required>
  Determines if the bot should only purchase tokens that do not have mint authority during sleep mode.

  Example: `false` (no mint authority check)
</ResponseField>

<ResponseField name="freeze_authority_check" type="boolean" required>
  Indicates whether the bot should only purchase tokens that do not have freeze authority during sleep mode.

  Example: `false` (no freeze authority check)
</ResponseField>

<ResponseField name="has_socials" type="boolean" required>
  Specifies if the bot should only buy tokens that have at least one linked social media profile during sleep mode.

  Example: `false` (no social media requirement)
</ResponseField>

<ResponseField name="has_twitter" type="boolean" required>
  Determines if the bot should only buy tokens that have a Twitter account during sleep mode.

  Example: `false` (no Twitter account requirement)
</ResponseField>

<ResponseField name="has_telegram" type="boolean" required>
  Specifies if the bot should only buy tokens that have a Telegram account during sleep mode.

  Example: `false` (no Telegram account requirement)
</ResponseField>

<ResponseField name="has_website" type="boolean" required>
  Indicates if the bot should only buy tokens that have a website during sleep mode.

  Example: `false` (no website requirement)
</ResponseField>

<ResponseField name="min_liquidity_sol" type="float" required>
  Sets the minimum liquidity in SOL that a liquidity pool must have for the bot to consider buying during sleep mode.

  Example: `0` (no minimum liquidity requirement)
</ResponseField>

<ResponseField name="max_liquidity_sol" type="float" required>
  Sets the maximum liquidity in SOL that a liquidity pool can have for the bot to consider buying during sleep mode.

  Example: `0` (no maximum liquidity limit)
</ResponseField>

<ResponseField name="min_market_cost_sol" type="float" required>
  Specifies the minimum market cost in SOL that the bot is willing to pay for tokens during sleep mode.

  Example: `0` (no minimum market cost)
</ResponseField>

<ResponseField name="max_market_cost_sol" type="float" required>
  Specifies the maximum market cost in SOL that the bot is willing to pay for tokens during sleep mode.

  Example: `0` (no maximum market cost)
</ResponseField>

<ResponseField name="min_supply_in_lp" type="integer" required>
  Determines the minimum token supply in a liquidity pool that the bot will consider for purchasing during sleep mode.

  Example: `0` (no minimum supply requirement)
</ResponseField>

<ResponseField name="max_supply_in_lp" type="integer" required>
  Specifies the maximum token supply in a liquidity pool that the bot will consider for purchasing during sleep mode.

  Example: `0` (no maximum supply limit)
</ResponseField>

<ResponseField name="min_supply_in_lp_pc" type="integer" required>
  Determines the minimum token supply (percentage %) in a liquidity pool that the bot will consider for purchasing during sleep mode.

  Example: `0` (no minimum supply requirement)
</ResponseField>

<ResponseField name="max_supply_in_lp_pc" type="integer" required>
  Specifies the maximum token supply (percentage %) in a liquidity pool that the bot will consider for purchasing during sleep mode.

  Example: `0` (no maximum supply limit)
</ResponseField>

<ResponseField name="min_supply_burnt_pc" type="integer" required>
  Indicates the minimum percentage of the token supply that should be burnt for the bot to consider buying during sleep mode.

  Example: `0` (no minimum burnt supply requirement)
</ResponseField>
