### Install essential system tools Source: https://fomo-mev.gitbook.io/docs/bot/installation.md Install required dependencies and utilities for the bot environment. ```shell apt update apt install -y curl wget git build-essential pkg-config libssl-dev screen ufw unzip nano ``` -------------------------------- ### API Response Examples Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/ranked-mints-endpoint.md Examples of successful and error responses from the /mints endpoint. ```json { "success": true, "count": 1, "mints": [ { "mint": "9AvytnUKsLxPxFHFqS6VLxaxt5p6BhYNr53SD2Chpump", "win_count": 30, "volume_usd": 28627.68, "market_cap_usd": 15000000.0, "roi": 491, "hit_rate": 180.0, "market_density": 6, "momentum": 1406.79, "fomometer": 0.72 } ... ] } ``` ```json { "error": "Invalid base mints supplied", "invalid": ["InvalidMint123"] } ``` ```json { "error": "Rate limit exceeded", "limit": 50, "unit": "requests/second" } ``` -------------------------------- ### Query documentation via HTTP GET Source: https://fomo-mev.gitbook.io/docs/llms.txt Perform a GET request to the documentation index using the ask and goal parameters to receive a tailored answer. ```http GET https://fomo-mev.gitbook.io/docs/bot/cli-commands/mints.md?ask=&goal= ``` -------------------------------- ### RPC Sender Configuration Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Example configuration for an RPC-based transaction sender. ```toml [[strategy.spam.sender]] type = "rpc" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 200_000 use_different_tx_per_sender = false no_failure_mode = false send_urls = [ "https://mainnet.helius-rpc.com/?api-key=********" ] ``` -------------------------------- ### API Response Examples Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/markets-endpoint.md Examples of successful and error responses from the Markets endpoint. ```json { "success": true, "count": 1, "markets": [ { "mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", "markets": [ { "pubkey": "5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1", "owner": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", "intermedium_mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", "base_mint": "So11111111111111111111111111111111111111112", "liquidity_usd": 150000.0, "total_volume_usd": 1000.0, "total_txs": 20, "updated_at": "2026-01-17T12:00:00Z", "raw_data": ... } ... ] } ] } ``` ```json { "error": "Invalid base mints supplied", "invalid": ["InvalidMint123"] } ``` ```json { "error": "Rate limit exceeded", "limit": 50, "unit": "requests/second" } ``` -------------------------------- ### Configure system limits and directories Source: https://fomo-mev.gitbook.io/docs/bot/installation.md Set the open files limit and prepare the installation directory. ```shell ulimit -n 65535 ``` ```shell mkdir -p /root/fomo cd /root/fomo ``` -------------------------------- ### Jito Sender Configuration Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Example configuration for a Jito block engine transaction sender. ```toml [[strategy.spam.sender]] type = "jito" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config skip_durable_nonce = false use_different_tx_per_block_engine = false tip_amount = { strategy = "tipstream", percentile = 65, max_tip = 20_000 } uuid = "" no_failure_mode = true block_engines = ["ams","dub","fra","lon","nyc","slc","sgr","tyo"] ``` -------------------------------- ### GET /docs/bot/cli-commands/mints.md Source: https://fomo-mev.gitbook.io/docs/llms.txt Queries the documentation index with a specific question and optional goal to retrieve relevant information. ```APIDOC ## GET /docs/bot/cli-commands/mints.md ### Description Perform an HTTP GET request on the documentation index to ask a question and receive a direct answer with relevant excerpts. ### Method GET ### Endpoint https://fomo-mev.gitbook.io/docs/bot/cli-commands/mints.md ### Parameters #### Query Parameters - **ask** (string) - Required - The immediate question to ask, written in natural language. - **goal** (string) - Optional - Describes the broader end goal to help tailor the answer. ### Request Example GET https://fomo-mev.gitbook.io/docs/bot/cli-commands/mints.md?ask=How+do+I+mint+tokens?&goal=Automate+trading ``` -------------------------------- ### Stellium Sender Configuration Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Example configuration for a Stellium region-based transaction sender. ```toml [[strategy.spam.sender]] type = "stellium" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config api_key = "" # required skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 100_000 use_different_tx_per_region = false tip_amount = { strategy = "random", from = 1_000_000, to = 1_500_000 } no_failure_mode = false regions = ["fra"] ``` -------------------------------- ### Fetch Wallet Wins via cURL Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/wallet-transactions-wins-endpoint.md Example request to retrieve transaction data for a specific wallet address using the POST method. ```bash curl -X POST https://api.getfomo.bot/wallet/wins \ -H "Content-Type: application/json" \ -H "x-api-key: your-api-key-here" \ -d '{ "wallet": "hifoTy5geDwq2SG32J7RXjLgB89UJGrtYYESA2dSYCh", "aggregation_window": 3600, "from_bots": [] }' ``` -------------------------------- ### API Response Examples Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/optimal-priority-fees-endpoint.md Standard JSON responses for successful requests and common error states. ```json { "success": true, "result": { "priority_fee_levels": { "min": 0, "low": 2000, "medium": 120000, "high": 500000, "very_high": 1000000 }, "recommended": 120000 } } ``` ```json { "error": "Invalid request." } ``` ```json { "error": "Rate limit exceeded", "limit": 50, "unit": "requests/second" } ``` -------------------------------- ### Helius Sender Configuration Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Example configuration for a Helius region-based transaction sender. ```toml [[strategy.spam.sender]] type = "helius" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config api_key = "" # optional: only add if your API key is > 15tps skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 100_000 use_different_tx_per_region = false tip_amount = { strategy = "random", from = 200_000, to = 500_000 } no_failure_mode = false swqos_only = false regions = ["fra"] ``` -------------------------------- ### API Response Payloads Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/optimal-jito-tips-endpoint.md Examples of successful and error responses from the Jito tips endpoint. ```json { "success": true, "result": { "jito_tip_levels": { "min": 0, "low": 2000, "medium": 120000, "high": 500000, "very_high": 1000000 }, "recommended": 120000 } } ``` ```json { "error": "Invalid request." } ``` ```json { "error": "Rate limit exceeded", "limit": 50, "unit": "requests/second" } ``` -------------------------------- ### ALUTs Endpoint Responses Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/aluts-endpoint.md Example JSON responses for successful requests, invalid market errors, and rate limit exceedances. ```json { "success": true, "count": 1, "aluts": [ { "market": "5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1", "alut": "2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17" }, { "market": "HJPjoWUrhoZzkNfRpHuieeFk9WcZWjwy6PBjZ81ngndJ", "alut": null } ] } ``` ```json { "error": "Invalid market", "invalid": ["InvalidMarket123"] } ``` ```json { "error": "Rate limit exceeded", "limit": 50, "unit": "requests/second" } ``` -------------------------------- ### POST Request to Loot Triggers Endpoint Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/the-loot-triggers-endpoint.md Example of a cURL request to the triggers endpoint, demonstrating the structure for multiple tiered strategies. ```bash curl -X POST https://api.getfomo.bot/loot/triggers \ -H "Content-Type: application/json" \ -H "x-api-key: your-api-key-here" \ -d '{ "first_match_only": true, "base_mints": ["So11111111111111111111111111111111111111112"], "exclude_mints": [], "max_mint_count_per_trigger": 1, "aggregation_window": 300, "from_wallets": [], "from_bots": [], "include_aluts": true, "include_priority_fees": true, "include_jito_tips": true, "exclude_dexes": [], "triggers": [ { "id": "aggressive", "rank_by": "momentum", "min_roi": 500, "min_volume": 10000, "min_txs": 20, "min_market_cap": 0, "max_market_cap": 10000000, "markets_per_mint": { "min_count": 3, "max_count": 5, "min_liquidity_usd": 1000, "min_vol": 500, "min_txs": 5, "rank_by": "volume" } }, { "id": "moderate", "rank_by": "momentum", "min_roi": 200, "min_volume": 5000, "min_txs": 10, "min_market_cap": 0, "max_market_cap": 10000000, "markets_per_mint": { "min_count": 2, "max_count": 4, "min_liquidity_usd": 500 } }, { "id": "conservative", "rank_by": "hit_rate", "min_roi": 100, "min_txs": 5, "min_market_cap": 0, "max_market_cap": 10000000, "markets_per_mint": { "min_count": 2, "max_count": 4, "min_liquidity_usd": 500 } } ... ] }' ``` -------------------------------- ### Market Lookup API Responses Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/market-lookup-endpoint.md Examples of successful and error responses from the market lookup endpoint. ```json { "success": true, "count": 1, "markets": [ { "pubkey": "3iUT1oAAUSqKeHAjkumZJbptihy2yN7AwFij2CrsUZVC", "owner": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", "intermedium_mint": "61Wj56QgGyyB966T7YsMzEAKRLcMvJpDbPzjkrCZc4Bi", "base_mint": "So11111111111111111111111111111111111111112", "updated_at": "2026-01-17T12:00:00Z", "raw_data": [241,154,109,...] } ... ] } ``` ```json { "error": "Invalid request", "invalid": ["InvalidMarket123"] } ``` ```json { "error": "Rate limit exceeded", "limit": 50, "unit": "requests/second" } ``` -------------------------------- ### Configure and prepare binary Source: https://fomo-mev.gitbook.io/docs/bot/installation.md Initialize the configuration file and set execution permissions. ```shell cp config.example.toml config.toml ``` ```shell nano config.toml ``` ```shell cd /root/fomo chmod +x * ``` -------------------------------- ### Configure systemd service Source: https://fomo-mev.gitbook.io/docs/bot/installation.md Create and enable a systemd service to run the bot in the background. ```shell nano /etc/systemd/system/fomo.service ``` ```shell [Unit] Description=FOMO Arbitrage Aggregator Bot [Service] User=root WorkingDirectory=/root/fomo ExecStart=/usr/bin/screen -DmS fomo /root/fomo/FOMO ExecStop=/usr/bin/screen -S fomo -X quit Restart=always RestartSec=10 StandardOutput=journal StandardError=journal LimitNOFILE=65535 [Install] WantedBy=multi-user.target ``` ```shell systemctl daemon-reload systemctl enable fomo systemctl start fomo ``` -------------------------------- ### GET /loot/triggers Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/the-loot-triggers-endpoint.md Retrieves a list of triggered mints based on the provided filter criteria. ```APIDOC ## GET /loot/triggers ### Description Retrieves a list of triggered arbitrage mints based on user-defined filter criteria including ROI, volume, and market cap constraints. ### Method GET ### Endpoint /loot/triggers ### Parameters #### Query Parameters - **id** (string) - Optional - Custom identifier for the trigger. - **rank_by** (string) - Optional - Ranking metric (default: "momentum"). - **min_roi** (number) - Optional - Minimum ROI in basis points. - **min_volume** (number) - Optional - Minimum USD volume. - **min_txs** (number) - Optional - Minimum successful arbitrage transactions. - **min_market_cap** (number) - Optional - Minimum market cap in USD. - **max_market_cap** (number) - Optional - Maximum market cap in USD. - **markets_per_mint** (object) - Optional - Market filtering and ranking options (min_count, max_count, min_liquidity_usd, min_vol, min_txs, rank_by). ### Response #### Success Response (200) - **success** (boolean) - Indicates if the request was successful. - **total_mints** (number) - Total count of mints returned. - **triggered** (array) - List of triggered mint objects. - **priority_fees** (object) - Recommended priority fee settings. - **jito_tips** (object) - Recommended Jito tip settings. #### Response Example { "success": true, "total_mints": 1, "triggered": [ { "id": "aggressive", "mints": [] } ] } ``` -------------------------------- ### Download and extract release Source: https://fomo-mev.gitbook.io/docs/bot/installation.md Download the latest release zip file and extract it into the working directory. ```shell wget https://github.com/FOMO-MEV/FOMO-solana-arbitrage-aggregator-bot/archive/refs/tags/v2.0.3.zip -O fomo-v2.0.3.zip ``` ```shell unzip fomo-v2.0.3.zip ``` ```shell mv FOMO-solana-arbitrage-aggregator-bot-*/* /root/fomo/ rm -rf FOMO-solana-arbitrage-aggregator-bot-* ``` -------------------------------- ### Configure Rebalancer Settings Source: https://fomo-mev.gitbook.io/docs/bot/configuration.md Manages automatic conversion between SOL and WSOL based on balance thresholds. ```toml ## =================================================================== ## REBALANCER ## =================================================================== ## Converts WSOL to SOL when SOL balance drops below a certain threshold. ## ## Settings: ## - Enabled: if true, enables the rebalancer ## - Min SOL Balance: minimum SOL balance (in lamports) before triggering a rebalance ## - Min WSOL Balance: minimum WSOL balance (in lamports) to wrap back after unwrapping ## • If 0, will just create WSOL ATA ## - CU Price TX: compute unit price for the rebalance transaction ## ## Note: Triggers when SOL < min_sol_balance and total balance (SOL + WSOL) covers min_sol_balance + min_wsol_balance. [rebalancer] enabled = true min_sol_balance = 100_000_000 # 0.1 SOL min_wsol_balance = 0 cu_price_tx = 100_000 ``` -------------------------------- ### Configure NextBlock Sender Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Requires a NextBlock API key and a minimum tip of 1,000,000 lamports. ```toml [[strategy.spam.sender]] type = "nextblock" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config api_key = "" # required skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 100_000 use_different_tx_per_region = false tip_amount = { strategy = "random", from = 1_000_000, to = 1_500_000 } no_failure_mode = false mev_protect = false regions = ["fra"] ``` -------------------------------- ### Loot Triggers API Responses Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/the-loot-triggers-endpoint.md Examples of successful and error responses from the Loot Triggers endpoint. ```json { "success": true, "total_mints": 1, "total_markets": 3, "total_aluts": 3, "triggered": [ { "id": "aggressive", "mints": [ { "mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", "symbol": "BONK", "image": "https://arweave.net/hQiPZOsRZXGXBJd_82PhVdlM_hACsT_q6wqwf5cSY7I", "win_count": 150, "volume_usd": 50000.0, "market_cap_usd": 5000000.0, "roi": 500, "hit_rate": 12.5, "market_density": 4, "momentum": 7.5, "fomometer": 0.85, "markets": [ { "rank": 1, "market": "5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1", "dex": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", "intermedium_mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", "base_mint": "So11111111111111111111111111111111111111112", "liquidity_usd": 150000.0, "total_volume_usd": 25000.0, "total_txs": 45, "updated_at": "2026-01-17T12:00:00Z", "alut": "2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17" } ... ] } ] } ... ], "priority_fees": { "min": 0, "low": 2000, "medium": 120000, "high": 500000, "very_high": 1000000, "recommended": 120000 }, "jito_tips": { "min": 10000, "low": 50000, "medium": 100000, "high": 250000, "very_high": 1000000, "recommended": 120000 } } ``` ```json { "error": "Invalid base mints supplied", "invalid": ["InvalidMint123"] } ``` ```json { "error": "Rate limit exceeded", "limit": 50, "unit": "requests/second" } ``` -------------------------------- ### Market Sentiment API Responses Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/market-sentiment-endpoint.md Examples of successful and error responses from the market sentiment endpoint. ```json { "success": true, "market_sentiment": { "sentiment_level": 3, "label": "wagmi", "description": "Massive volume. Heavy market activity and consistent opportunities.", "window": "12hr", "total_transactions": 315000, "total_volume_usd": 4500000.0, "avg_roi_bps": 185.5, "tx_per_min": 327.3 } } ``` ```json { "error": "Invalid window", "invalid": ["24hr"] } ``` ```json { "error": "Rate limit exceeded", "limit": 50, "unit": "requests/second" } ``` -------------------------------- ### Configure Optimal Priority Fee Settings Source: https://fomo-mev.gitbook.io/docs/bot/configuration.md Defines settings for overriding compute unit prices across all strategies using either recommended fees or a specific percentile. ```toml [optimal_priority_fee] enabled = false use_recommended = true percentile = 65 update_interval = 45 ``` -------------------------------- ### Fetch Jito Tip Levels via cURL Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/optimal-jito-tips-endpoint.md Use this request to retrieve current tip recommendations. Ensure the x-api-key header is populated with your valid API key. ```bash curl -X POST https://api.getfomo.bot/jito-tips \ -H "Content-Type: application/json" \ -H "x-api-key: your-api-key-here" ``` -------------------------------- ### Tip Amount Configuration Options Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Available strategies for defining tip amounts in sender configurations. ```toml { strategy = "tipstream", percentile = 65, max_tip = 20_000 } { strategy = "fixed", amount = 20_000 } { strategy = "random", from = 20_000, to = 40_000 } ``` -------------------------------- ### Configure Flashloan Settings Source: https://fomo-mev.gitbook.io/docs/bot/configuration.md Enables or disables flashloan support for trading strategies. ```toml ## =================================================================== ## FLASHLOANS ## =================================================================== ## Enables flashloan support across all strategies. ## Uses onchain provider's (i.e. SMB & NotArb) in-house flashloan programs ## ## Note: enabling flashloans will override min/max trade size settings in Searcher [flashloans] enabled = true ``` -------------------------------- ### Configure Fast (Circular) Sender Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Requires a Circular API key and a minimum tip of 1,000,000 lamports. ```toml [[strategy.spam.sender]] type = "fast" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config api_key = "" # required skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 100_000 use_different_tx_per_region = false tip_amount = { strategy = "random", from = 1_000_000, to = 1_500_000 } no_failure_mode = false mev_protect = false regions = ["fra"] ``` -------------------------------- ### Configure Node1 Sender Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Requires a Node1 API key and a minimum tip of 2,000,000 lamports. ```toml [[strategy.spam.sender]] type = "node1" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config api_key = "" # required skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 200_000 use_different_tx_per_region = false tip_amount = { strategy = "random", from = 2_000_000, to = 2_500_000 } no_failure_mode = false regions = ["fra"] ``` -------------------------------- ### POST https://api.getfomo.bot/jito-tips Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/optimal-jito-tips-endpoint.md Retrieves optimized and recommended Jito tip levels based on recent arbitrage transaction data. ```APIDOC ## POST https://api.getfomo.bot/jito-tips ### Description Returns optimized and recommended Jito tip levels based on recent arbitrage transaction data. ### Method POST ### Endpoint https://api.getfomo.bot/jito-tips ### Request Example ```bash curl -X POST https://api.getfomo.bot/jito-tips \ -H "Content-Type: application/json" \ -H "x-api-key: your-api-key-here" ``` ### Response #### Success Response (200) - **success** (boolean) - Indicates if the request was successful. - **result** (object) - Contains the tip levels and recommendation. - **jito_tip_levels** (object) - Map of tip levels (min, low, medium, high, very_high). - **recommended** (number) - The recommended tip amount. #### Response Example ```json { "success": true, "result": { "jito_tip_levels": { "min": 0, "low": 2000, "medium": 120000, "high": 500000, "very_high": 1000000 }, "recommended": 120000 } } ``` ``` -------------------------------- ### Configure Astralane Sender Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Requires an Astralane API key and a minimum tip of 10,000 lamports. ```toml [[strategy.spam.sender]] type = "astralane" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config api_key = "" # required skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 100_000 use_different_tx_per_region = false tip_amount = { strategy = "random", from = 10_000, to = 20_000 } no_failure_mode = false mev_protect = false regions = ["fra"] ``` -------------------------------- ### Configure FlashBlock Sender Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Requires a FlashBlock API key and a minimum tip of 100,000 lamports. ```toml [[strategy.spam.sender]] type = "flashblock" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config api_key = "" # required skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 200_000 use_different_tx_per_region = false tip_amount = { strategy = "random", from = 100_000, to = 200_000 } no_failure_mode = false regions = ["fra"] ``` -------------------------------- ### Connect to server via SSH Source: https://fomo-mev.gitbook.io/docs/bot/installation.md Establish a remote connection to the Linux server. ```shell ssh root@ ``` -------------------------------- ### Configure Market Settings Source: https://fomo-mev.gitbook.io/docs/bot/configuration.md Specifies enabled DEXes and pool filtering preferences for the bot. ```toml ## =================================================================== ## MARKETS ## =================================================================== ## Configures market settings across all strategies. ## ## Settings: ## - Skip Pools Without ALUTs: if true, skips pools with no found ALUTs ## - Enabled DEXes: list of enabled DEXes. DEX availability varies by onchain provider. [markets] skip_pools_without_aluts = false enabled_dexes = [ "pump_swap", "meteora_dlmm", "meteora_damm_v2", "raydium_amm", "raydium_clmm", "raydium_cpmm", "whirlpool" ] ``` -------------------------------- ### Fetch Priority Fees via cURL Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/optimal-priority-fees-endpoint.md Use this request to retrieve current priority fee recommendations. Ensure the x-api-key header is populated with your valid API key. ```bash curl -X POST https://api.getfomo.bot/priority-fees \ -H "Content-Type: application/json" \ -H "x-api-key: your-api-key-here" ``` -------------------------------- ### Fetch ALUTs via cURL Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/aluts-endpoint.md Request Address Lookup Tables for specific market addresses using a POST request. ```bash curl -X POST https://api.getfomo.bot/aluts \ -H "Content-Type: application/json" \ -H "x-api-key: your-api-key-here" \ -d '{ "markets": [ "5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1", "HJPjoWUrhoZzkNfRpHuieeFk9WcZWjwy6PBjZ81ngndJ" ] }' ``` -------------------------------- ### Configure Falcon (Corvus) Sender Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Requires a Falcon API key and a minimum tip of 1,000,000 lamports. ```toml [[strategy.spam.sender]] type = "falcon" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config api_key = "" # required skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 200_000 use_different_tx_per_region = false tip_amount = { strategy = "random", from = 1_000_000, to = 1_500_000 } no_failure_mode = false regions = ["fra"] ``` -------------------------------- ### Configure BlockRazor Sender Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Requires a BlockRazor API key and a minimum tip of 100,000 lamports. ```toml [[strategy.spam.sender]] type = "razor" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config api_key = "" # required skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 200_000 use_different_tx_per_region = false tip_amount = { strategy = "random", from = 100_000, to = 1_000_000 } no_failure_mode = false revert_protection = false regions = ["fra"] ``` -------------------------------- ### Encrypt Private Key Command Source: https://fomo-mev.gitbook.io/docs/bot/cli-commands/encrypt-private-key.md Executes the encryption process for a private key. The private key must be provided in a specific array format without spaces. ```shell ./FOMO encrypt-key [your_private_key] ``` -------------------------------- ### Manage bot process Source: https://fomo-mev.gitbook.io/docs/bot/installation.md Commands to view, restart, or stop the running bot service. ```shell screen -r fomo ``` ```shell systemctl restart fomo ``` ```shell systemctl stop fomo ## To start it again systemctl start fomo ``` -------------------------------- ### Run FOMO mints command Source: https://fomo-mev.gitbook.io/docs/bot/cli-commands/mints.md Executes the mints command with specific filtering parameters for momentum, transaction count, aggregation window, and volume. ```shell ./FOMO mints --rank-by "momentum" --min-txs 1 --aggregation-window 300 --min-volume 100 ``` -------------------------------- ### Update Bot with Service Management Source: https://fomo-mev.gitbook.io/docs/bot/cli-commands/update-bot.md Standard procedure for updating the bot by stopping the systemd service, running the update, and restarting the service. ```shell systemctl stop fomo ./FOMO update systemctl restart fomo ``` -------------------------------- ### Configure RPC Sender Source: https://fomo-mev.gitbook.io/docs/bot/configuration.md Sets up an RPC-based transaction sender linked to the conservative trigger ID. ```toml [[strategy.spam.sender]] type = "rpc" enabled = true trigger_id = "conservative" # must match the trigger id set in the trigger config skip_durable_nonce = false compute_unit_price = 8_000 max_compute_unit_price = 100_000 use_different_tx_per_sender = false no_failure_mode = true send_urls = [ "https://beta.helius-rpc.com/?api-key=********************" ] ``` -------------------------------- ### Fetch Market Data via cURL Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/market-lookup-endpoint.md Use this POST request to retrieve market data for specific addresses. Ensure the x-api-key header is included for authentication. ```bash curl -X POST https://api.getfomo.bot/market-lookup \ -H "Content-Type: application/json" \ -H "x-api-key: your-api-key-here" \ -d '{ "markets": ["3iUT1oAAUSqKeHAjkumZJbptihy2yN7AwFij2CrsUZVC"] }' ``` -------------------------------- ### Configure FOMO Bot Settings Source: https://fomo-mev.gitbook.io/docs/bot/configuration.md Defines the main bot parameters including RPC URL, restart intervals, and API key settings in config.toml. ```toml ## =================================================================== ## BOT SETTINGS ## =================================================================== ## Configures general bot settings. ## ## Settings: ## - RPC URL: RPC url for fetching onchain related data (NOT for sending) ## - Auto Restart: auto restart interval (in minutes). 0 => run indefinitely ## - Debug Mode: if true, enables debug mode with verbose error logging ## - Slot Memo: if true, prepends the slot the tx landed to memo message ## - Close Unused ATAs: if true, closes unused ATAs at start-up not in the current mint list (that have 0 balance) to reclaim rent-exempt SOL. ## - FOMO API Key: optional API key. If present, waives the FOMO Platform Fee of 3.75%. ## ## For more info, visit: https://discord.gg/RaEa694AH5 [bot] rpc_url = "https://solana-rpc.publicnode.com" auto_restart = 10 debug_mode = false slot_memo = false close_unused_atas = true fomo_api_key = "" ``` -------------------------------- ### Configure Spam Strategy and Base Mints Source: https://fomo-mev.gitbook.io/docs/bot/configuration.md Defines the spam strategy execution parameters and the list of enabled base mints for market pair selection. ```toml [strategy.spam] enabled = true onchain_program = ["notarb"] memo = "" disable_durable_nonces = false disable_set_loaded_accounts = false refresh_interval = 1 stagger_txs = false max_compute_unit_limit = 409_690 max_markets_per_tx = 4 stay_on_winner = { enabled = true, min_wins = 2 } [[strategy.spam.base_mint]] # WSOL enabled = true base_mint = "So11111111111111111111111111111111111111112" [[strategy.spam.base_mint]] # USDC enabled = true base_mint = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" [[strategy.spam.base_mint]] # USD1 enabled = true base_mint = "USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB" ``` -------------------------------- ### Configure 0Slot Sender Source: https://fomo-mev.gitbook.io/docs/bot/senders.md Defines the 0Slot sender strategy with region-specific RPC endpoints and tip parameters. ```toml [[strategy.spam.sender]] type = "0slot" enabled = true trigger_id = "yolo" # must match the trigger id set in the trigger config api_key = "" # required skip_durable_nonce = false compute_unit_price = 40_000 max_compute_unit_price = 200_000 use_different_tx_per_region = false tip_amount = { strategy = "random", from = 1_000_000, to = 1_500_000 } no_failure_mode = false regions = ["fra"] ``` -------------------------------- ### Configure Loot Mint Strategy and Senders Source: https://fomo-mev.gitbook.io/docs/bot/mint-finder-via-loot.md Basic configuration for enabling the Loot API mint feed and defining associated triggers and RPC senders. ```toml ## =================================================================== ## SPAM MINT TRIGGERS ## Powered by FOMO's Loot API ## =================================================================== ## For more info, visit: https://fomo-mev.gitbook.io/docs/bot/configuration [strategy.spam.mints.fomo] enabled = true first_match_only = true max_mint_count_per_trigger = 1 aggregation_window = 300 from_wallets = [] from_bots = [] exclude_mints = [ "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", "USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB" ] ## =================================================================== ## SPAM MINT TRIGGER ## =================================================================== ## For list of all available senders, visit: https://fomo-mev.gitbook.io/docs/bot/senders [[strategy.spam.mints.fomo.trigger]] enabled = true id = "some-trigger" # each trigger must have a unique ID, can be ANY string process_delay = 200 rank_by = "momentum" min_roi = 100 min_volume = 10_000 min_txs = 300 min_market_cap = 0 max_market_cap = 100_000_000 markets_per_mint = { min_liquidity_usd = 500, min_vol = 0, min_txs = 0, rank_by = "liquidity" } [[strategy.spam.sender]] type = "rpc" enabled = true trigger_id = "some-trigger" # must match the trigger id set in the trigger config skip_durable_nonce = false compute_unit_price = 100_000 max_compute_unit_price = 250_000 use_different_tx_per_sender = false no_failure_mode = true send_urls = [ "https://beta.helius-rpc.com/?api-key=********" ] ``` -------------------------------- ### POST https://api.getfomo.bot/aluts Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/aluts-endpoint.md Retrieves Address Lookup Tables for a list of provided market addresses. ```APIDOC ## POST https://api.getfomo.bot/aluts ### Description Returns Address Lookup Tables for specified market addresses. Only ALUTs used in recent arbitrage transactions (last 12 hours) are stored and indexed. ### Method POST ### Endpoint https://api.getfomo.bot/aluts ### Parameters #### Request Body - **markets** (string[]) - Required - Market/pool addresses to fetch ALUTs for. ### Request Example { "markets": [ "5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1", "HJPjoWUrhoZzkNfRpHuieeFk9WcZWjwy6PBjZ81ngndJ" ] } ### Response #### Success Response (200) - **success** (boolean) - Indicates if the request was successful. - **count** (number) - The number of ALUTs returned. - **aluts** (array) - List of market and corresponding ALUT address objects. #### Response Example { "success": true, "count": 1, "aluts": [ { "market": "5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1", "alut": "2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17" }, { "market": "HJPjoWUrhoZzkNfRpHuieeFk9WcZWjwy6PBjZ81ngndJ", "alut": null } ] } ``` -------------------------------- ### Request Ranked Mints via cURL Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/ranked-mints-endpoint.md Use this cURL command to query the /mints endpoint. Ensure the x-api-key header is set with your valid API key. ```bash curl -X POST https://api.getfomo.bot/mints \ -H "Content-Type: application/json" \ -H "x-api-key: your-api-key-here" \ -d '{ "base_mints": ["So11111111111111111111111111111111111111112"], "max_mint_count": 20, "aggregation_window": 3600, "exclude_mints": [], "from_wallets": [], "from_bots": [], "min_roi": 50, "min_volume": 1000, "min_txs": 10, "min_market_cap": 0, "max_market_cap": 50000000, "min_markets": 2, "rank_by": "momentum" }' ``` -------------------------------- ### POST https://api.getfomo.bot/market-lookup Source: https://fomo-mev.gitbook.io/docs/loot-api/api-reference/market-lookup-endpoint.md Fetches raw market data for a list of provided market or pool addresses. ```APIDOC ## POST https://api.getfomo.bot/market-lookup ### Description Fetches raw market data for specific market or pool addresses. Note that this endpoint is limited to 10 markets per request and returns data derived from arbitrage transactions with a 12-hour TTL. ### Method POST ### Endpoint https://api.getfomo.bot/market-lookup ### Parameters #### Request Body - **markets** (string[]) - Required - Market/pool addresses to fetch data for. ### Request Example { "markets": ["3iUT1oAAUSqKeHAjkumZJbptihy2yN7AwFij2CrsUZVC"] } ### Response #### Success Response (200) - **success** (boolean) - Indicates if the request was successful. - **count** (number) - Number of markets returned. - **markets** (array) - List of market data objects. #### Response Example { "success": true, "count": 1, "markets": [ { "pubkey": "3iUT1oAAUSqKeHAjkumZJbptihy2yN7AwFij2CrsUZVC", "owner": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", "intermedium_mint": "61Wj56QgGyyB966T7YsMzEAKRLcMvJpDbPzjkrCZc4Bi", "base_mint": "So11111111111111111111111111111111111111112", "updated_at": "2026-01-17T12:00:00Z", "raw_data": [241, 154, 109] } ] } ``` -------------------------------- ### Configure Auto Standby Settings Source: https://fomo-mev.gitbook.io/docs/bot/configuration.md Sets thresholds for pausing the bot based on market sentiment or transaction volume. ```toml ## =================================================================== ## AUTO STANDBY ## =================================================================== ## Automatically pauses bot when market sentiment is below a set threshold. ## Note: Market sentiment is calculated based on the number of arbitrage transactions in the last X hours ## and is only checked when the bot starts or restarts, not continuously ## ## Settings: ## - Enabled: if true, enables auto standby mode ## - Min Market Sentiment: minimum sentiment level to keep bot active ## • Options: 0 (ngmi, < 168 txs/min), 1 (meh, ≥ 168 txs/min), 2 (neutral, ≥ 243 txs/min), 3 (wagmi, ≥ 278 txs/min) ## - Window: time window for sentiment calculation ## • Options: 1hr, 6hr, 12hr ## - Custom Threshold: set a custom txs/min threshold vs. using sentiment levels (0 = disabled) ## • If > 0, bypasses min_market_sentiment and uses this 'txs per minute' threshold instead [auto_standby] enabled = true min_market_sentiment = 1 window = "6hr" custom_threshold = 0 ```