Optimizing Transaction Speed: Jito Tips and Priority Fees on Solana #
If you’ve ever missed a token launch by a fraction of a second, you know the pain. In Solana trading, milliseconds matter – especially when you’re sniping new tokens or trying to exit a position before everyone else. The difference between landing a transaction and watching it fail often comes down to one thing: how much you’re willing to tip.
This guide covers every transaction speed setting available through the Sniperoo API. You’ll learn how Jito tips and priority fees work, how to configure them programmatically, and how to build reusable configuration profiles that let you switch between “maximum speed” and “save my SOL” modes with a single API call.
Unlike most bots where you click buttons and hope for the best, the Sniperoo API lets you configure all of these settings programmatically – and switch between profiles instantly based on market conditions.
{% admonition type=“info” name=“Prerequisites” %} Before diving in, make sure you have:
- A Sniperoo account with an API key (generate one here)
- At least one Solana wallet with SOL funded
- Basic familiarity with making API requests {% /admonition %}
Understanding Solana Transaction Mechanics #
Before we get into the settings, let’s quickly cover how Solana processes transactions – this will help you understand why these settings matter.
Solana validators process transactions in blocks. When the network is busy (like during a hot token launch), there are more transactions than can fit in a single block. Validators need to decide which transactions to include first, and that’s where fees and tips come in.
There are two complementary mechanisms for getting your transactions processed faster:
-
Priority fee: This is a fee you pay directly to the Solana network. It tells validators “hey, process my transaction before the ones with lower fees.” Think of it like paying for express shipping.
-
Jito tip: This is a tip paid specifically to Jito validators. Jito is a protocol that allows you to tip validators directly for better transaction ordering. Jito validators run specialized software that provides MEV (Maximal Extractable Value) protection and tends to produce blocks with better transaction ordering for traders.
Why use both? Priority fees and Jito tips serve different but complementary purposes. Priority fees work across all validators, while Jito tips specifically target Jito validators (which handle a significant portion of Solana’s block production). Using both together gives you the best chance of landing time-sensitive trades.
{% admonition type=“info” name=“The Bottom Line” %} For trading, Jito tips tend to have more impact than priority fees alone. But using both together gives you the highest probability of fast transaction inclusion, especially during network congestion. {% /admonition %}
Jito Tip Settings #
All of the settings below are configured through a single endpoint: POST /user/update-user-settings. Let’s break down the Jito-related fields.
Buy-Side Jito Tips #
These settings control how much you tip when buying tokens:
| Field | Type | Min | Default | Description |
|---|---|---|---|---|
jitoTipInSolana |
number | 0.000001 | 0.005 SOL | Fixed Jito tip amount for buy transactions |
dynamicJitoTip |
enum | – | “Disabled” | Automatically adjusts tip based on network conditions |
dynamicJitoTipMax |
number | 0.000001 | 0.005 SOL | Maximum cap on dynamic tips to prevent overspending |
Sell-Side Jito Tips #
These are the same settings but for sell transactions:
| Field | Type | Min | Default | Description |
|---|---|---|---|---|
sellJitoTipInSolana |
number | 0.000001 | 0.005 SOL | Fixed Jito tip amount for sell transactions |
sellDynamicJitoTip |
enum | – | “Disabled” | Automatically adjusts tip for sells |
sellDynamicJitoTipMax |
number | 0.000001 | 0.005 SOL | Maximum cap on dynamic tips for sells |
Dynamic Jito Tip Options #
The dynamicJitoTip and sellDynamicJitoTip fields accept the following values:
| Value | What It Means |
|---|---|
"Disabled" |
No dynamic adjustment – uses your fixed tip amount |
"75%" |
Tip at the 75th percentile of recent network tips |
"75% - 80%" |
Tip between the 75th and 80th percentile |
"80% - 85%" |
Tip between the 80th and 85th percentile |
"85% - 95%" |
Tip between the 85th and 95th percentile |
"99%" |
Tip at the 99th percentile – top 1% of all tips |
How Dynamic Tips Work #
When dynamic tipping is enabled, the Sniperoo API monitors recent Jito tip levels across the network in real time. Instead of using your fixed tip amount, it calculates a tip based on the percentile you’ve chosen.
Here’s what that means in practice:
-
“75%” means your tip will be higher than 75% of all recent tips on the network. This is a moderate level – good enough for most situations, but might not cut it during a token launch frenzy.
-
“85% - 95%” means the API picks a tip somewhere between the 85th and 95th percentile of recent tips. This gives you strong priority without always paying top dollar.
-
“99%” means you’re tipping in the top 1% of everyone on the network. This is the “I absolutely need this transaction to land NOW” option.
The dynamicJitoTipMax field is your safety net. It caps the dynamic tip so that even if network tip levels spike (which happens during big launches), you won’t accidentally spend 0.5 SOL on a single tip. Always set this to a value you’re comfortable with.
{% admonition type=“warning” name=“Watch Your Max Tips” %}
During extremely congested periods (like a major token launch), the 99th percentile tip can spike dramatically. Always set dynamicJitoTipMax and sellDynamicJitoTipMax to a value you’re comfortable with. Without a reasonable cap, a sudden spike could drain your wallet faster than you expect.
{% /admonition %}
Priority Fees #
In addition to Jito tips, you can set a priority fee for your transactions:
| Field | Type | Min | Description |
|---|---|---|---|
prioritizationFeeInSolana |
number | 0 | Priority fee in SOL for buy transactions |
Priority fees are paid to the Solana network directly (not to Jito validators). They work across all validators, not just Jito ones.
When do priority fees matter more than Jito tips?
- During general network congestion (not just trading-related), priority fees help across all validators.
- When interacting with programs that aren’t heavily targeted by MEV bots, priority fees alone might be sufficient.
When do Jito tips matter more?
- For trading specifically (buying/selling tokens on DEXes), Jito tips tend to be more impactful.
- During token launches where MEV protection and transaction ordering are critical.
Best practice: Use both for maximum speed on time-sensitive trades. For non-urgent transactions, priority fees alone (or even zero fees) may be fine.
Slippage Settings #
Slippage tolerance is closely related to transaction speed – it determines how much price movement you’ll accept between when you submit a transaction and when it executes.
| Field | Type | Range | Description |
|---|---|---|---|
slippage |
number | 1 - 100% | Buy slippage tolerance |
sellSlippage |
number | 1 - 100% | Sell slippage tolerance |
The Slippage Tradeoff #
- Too low = Your transactions fail because the price moved more than your tolerance before execution. You waste gas fees and miss the trade entirely.
- Too high = Your transactions succeed but at a potentially worse price. You might buy at a higher price or sell at a lower price than expected.
Recommended Slippage Values #
| Token Type | Buy Slippage | Sell Slippage |
|---|---|---|
| Meme coins / New launches | 15 - 30% | 15 - 25% |
| Established tokens (moderate volume) | 5 - 15% | 5 - 12% |
| Blue-chip / High-liquidity tokens | 3 - 10% | 3 - 8% |
General rules of thumb:
- High-volume tokens with deep liquidity can use lower slippage – there’s enough liquidity that prices don’t swing as wildly.
- Low-liquidity tokens (especially brand new ones) need higher slippage because even small buys can move the price significantly.
- If your transactions keep failing, bump up slippage by 5-10% increments until they land reliably.
Configuring Settings via the API #
All of these settings are updated through a single endpoint:
POST /user/update-user-settings
This endpoint accepts a PartialUserSettings object. The key word here is partial – you only need to include the fields you want to change. Everything else stays the same.
The API responds with status 201 and returns the complete updated UserSettings object, so you can verify your changes took effect.
Here’s a complete example that configures Jito tips, priority fees, and slippage all at once:
{% tabs syncId=“programming-language” %} {% tab label=“JavaScript” %}
const axios = require('axios');
const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://api.sniperoo.app';
async function updateTransactionSettings() {
try {
const response = await axios.post(
`${BASE_URL}/user/update-user-settings`,
{
// Jito tips for buys
jitoTipInSolana: 0.01,
dynamicJitoTip: '85% - 95%',
dynamicJitoTipMax: 0.05,
// Jito tips for sells
sellJitoTipInSolana: 0.008,
sellDynamicJitoTip: '75% - 80%',
sellDynamicJitoTipMax: 0.03,
// Priority fee
prioritizationFeeInSolana: 0.002,
// Slippage
slippage: 20,
sellSlippage: 15
},
{
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
}
}
);
console.log('Settings updated successfully!');
console.log('Current settings:', JSON.stringify(response.data, null, 2));
} catch (error) {
console.error('Failed to update settings:', error.response?.data || error.message);
}
}
updateTransactionSettings();{% /tab %} {% tab label=“Python” %}
import requests
import json
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.sniperoo.app"
def update_transaction_settings():
url = f"{BASE_URL}/user/update-user-settings"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
# Jito tips for buys
"jitoTipInSolana": 0.01,
"dynamicJitoTip": "85% - 95%",
"dynamicJitoTipMax": 0.05,
# Jito tips for sells
"sellJitoTipInSolana": 0.008,
"sellDynamicJitoTip": "75% - 80%",
"sellDynamicJitoTipMax": 0.03,
# Priority fee
"prioritizationFeeInSolana": 0.002,
# Slippage
"slippage": 20,
"sellSlippage": 15
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 201:
print("Settings updated successfully!")
print("Current settings:", json.dumps(response.json(), indent=2))
else:
print(f"Failed to update settings: {response.status_code}")
print(response.text)
update_transaction_settings(){% /tab %} {% /tabs %}
{% admonition type=“info” name=“Partial Updates” %}
You don’t need to send every field. If you only want to change your Jito tip, just send jitoTipInSolana and nothing else. All other settings remain unchanged.
{% /admonition %}
Ready-to-Use Configuration Profiles #
Instead of remembering which numbers to use in different situations, here are three battle-tested profiles you can apply with a single API call. We’ll start with the profile definitions, then build a reusable script to switch between them.
Profile 1: Sniper Mode #
Use case: New token launches, pump.fun listings, Raydium migrations – anything where being first matters more than saving on fees.
This profile uses the highest dynamic tip percentile, aggressive slippage, and a generous max tip cap. It’s designed to get your transaction included in the very next block, no matter how congested the network is.
{
"jitoTipInSolana": 0.02,
"sellJitoTipInSolana": 0.015,
"dynamicJitoTip": "99%",
"sellDynamicJitoTip": "85% - 95%",
"dynamicJitoTipMax": 0.1,
"sellDynamicJitoTipMax": 0.05,
"prioritizationFeeInSolana": 0.005,
"slippage": 30,
"sellSlippage": 25
}Profile 2: Standard Trading #
Use case: Day trading established meme coins, swing trading, general active trading where speed matters but you don’t need to be in the absolute top 1%.
A balanced profile that gives you solid transaction priority without burning through your SOL on fees.
{
"jitoTipInSolana": 0.005,
"sellJitoTipInSolana": 0.005,
"dynamicJitoTip": "75% - 80%",
"sellDynamicJitoTip": "75%",
"dynamicJitoTipMax": 0.02,
"sellDynamicJitoTipMax": 0.02,
"prioritizationFeeInSolana": 0.001,
"slippage": 15,
"sellSlippage": 12
}Profile 3: Cost Saver #
Use case: DCA (dollar-cost averaging) into blue-chip Solana tokens, accumulation over time, or any trade where you’re not in a rush.
Dynamic tipping is disabled entirely, tips are at the minimum, and slippage is tight. Transactions might take a bit longer to land, but you’ll save significantly on fees.
{
"jitoTipInSolana": 0.001,
"sellJitoTipInSolana": 0.001,
"dynamicJitoTip": "Disabled",
"sellDynamicJitoTip": "Disabled",
"dynamicJitoTipMax": 0.005,
"sellDynamicJitoTipMax": 0.005,
"prioritizationFeeInSolana": 0,
"slippage": 10,
"sellSlippage": 8
}Profile Switcher Script #
Here’s a complete, reusable script that lets you switch between profiles by name. Save it and call it whenever market conditions change.
{% tabs syncId=“programming-language” %} {% tab label=“JavaScript” %}
const axios = require('axios');
const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://api.sniperoo.app';
// Define your trading profiles
const PROFILES = {
sniper: {
name: 'Sniper Mode',
settings: {
jitoTipInSolana: 0.02,
sellJitoTipInSolana: 0.015,
dynamicJitoTip: '99%',
sellDynamicJitoTip: '85% - 95%',
dynamicJitoTipMax: 0.1,
sellDynamicJitoTipMax: 0.05,
prioritizationFeeInSolana: 0.005,
slippage: 30,
sellSlippage: 25
}
},
standard: {
name: 'Standard Trading',
settings: {
jitoTipInSolana: 0.005,
sellJitoTipInSolana: 0.005,
dynamicJitoTip: '75% - 80%',
sellDynamicJitoTip: '75%',
dynamicJitoTipMax: 0.02,
sellDynamicJitoTipMax: 0.02,
prioritizationFeeInSolana: 0.001,
slippage: 15,
sellSlippage: 12
}
},
costsaver: {
name: 'Cost Saver',
settings: {
jitoTipInSolana: 0.001,
sellJitoTipInSolana: 0.001,
dynamicJitoTip: 'Disabled',
sellDynamicJitoTip: 'Disabled',
dynamicJitoTipMax: 0.005,
sellDynamicJitoTipMax: 0.005,
prioritizationFeeInSolana: 0,
slippage: 10,
sellSlippage: 8
}
}
};
async function switchProfile(profileKey) {
const profile = PROFILES[profileKey];
if (!profile) {
const available = Object.keys(PROFILES).join(', ');
console.error(`Unknown profile "${profileKey}". Available profiles: ${available}`);
return null;
}
console.log(`Switching to profile: ${profile.name}...`);
try {
const response = await axios.post(
`${BASE_URL}/user/update-user-settings`,
profile.settings,
{
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
}
}
);
console.log(`Successfully switched to "${profile.name}"!`);
console.log('Applied settings:');
console.log(` Jito tip (buy): ${profile.settings.jitoTipInSolana} SOL`);
console.log(` Jito tip (sell): ${profile.settings.sellJitoTipInSolana} SOL`);
console.log(` Dynamic tip (buy): ${profile.settings.dynamicJitoTip}`);
console.log(` Dynamic tip (sell): ${profile.settings.sellDynamicJitoTip}`);
console.log(` Max tip (buy): ${profile.settings.dynamicJitoTipMax} SOL`);
console.log(` Max tip (sell): ${profile.settings.sellDynamicJitoTipMax} SOL`);
console.log(` Priority fee: ${profile.settings.prioritizationFeeInSolana} SOL`);
console.log(` Slippage (buy): ${profile.settings.slippage}%`);
console.log(` Slippage (sell): ${profile.settings.sellSlippage}%`);
return response.data;
} catch (error) {
console.error('Failed to switch profile:', error.response?.data || error.message);
return null;
}
}
// --- Usage Examples ---
// Switch to Sniper Mode before a token launch
// switchProfile('sniper');
// Switch to Standard Trading for day trading
// switchProfile('standard');
// Switch to Cost Saver for accumulation
// switchProfile('costsaver');
// Run from the command line: node profile-switcher.js sniper
const profileArg = process.argv[2];
if (profileArg) {
switchProfile(profileArg);
} else {
console.log('Usage: node profile-switcher.js <profile>');
console.log('Available profiles:');
for (const [key, profile] of Object.entries(PROFILES)) {
console.log(` ${key.padEnd(12)} - ${profile.name}`);
}
}To run this:
# Switch to sniper mode
node profile-switcher.js sniper
# Switch to standard trading
node profile-switcher.js standard
# Switch to cost saver
node profile-switcher.js costsaver{% /tab %} {% tab label=“Python” %}
import requests
import json
import sys
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.sniperoo.app"
# Define your trading profiles
PROFILES = {
"sniper": {
"name": "Sniper Mode",
"settings": {
"jitoTipInSolana": 0.02,
"sellJitoTipInSolana": 0.015,
"dynamicJitoTip": "99%",
"sellDynamicJitoTip": "85% - 95%",
"dynamicJitoTipMax": 0.1,
"sellDynamicJitoTipMax": 0.05,
"prioritizationFeeInSolana": 0.005,
"slippage": 30,
"sellSlippage": 25
}
},
"standard": {
"name": "Standard Trading",
"settings": {
"jitoTipInSolana": 0.005,
"sellJitoTipInSolana": 0.005,
"dynamicJitoTip": "75% - 80%",
"sellDynamicJitoTip": "75%",
"dynamicJitoTipMax": 0.02,
"sellDynamicJitoTipMax": 0.02,
"prioritizationFeeInSolana": 0.001,
"slippage": 15,
"sellSlippage": 12
}
},
"costsaver": {
"name": "Cost Saver",
"settings": {
"jitoTipInSolana": 0.001,
"sellJitoTipInSolana": 0.001,
"dynamicJitoTip": "Disabled",
"sellDynamicJitoTip": "Disabled",
"dynamicJitoTipMax": 0.005,
"sellDynamicJitoTipMax": 0.005,
"prioritizationFeeInSolana": 0,
"slippage": 10,
"sellSlippage": 8
}
}
}
def switch_profile(profile_key):
"""Switch to a named trading profile by updating user settings."""
profile = PROFILES.get(profile_key)
if not profile:
available = ", ".join(PROFILES.keys())
print(f'Unknown profile "{profile_key}". Available profiles: {available}')
return None
print(f'Switching to profile: {profile["name"]}...')
url = f"{BASE_URL}/user/update-user-settings"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
response = requests.post(url, headers=headers, json=profile["settings"])
if response.status_code == 201:
settings = profile["settings"]
print(f'Successfully switched to "{profile["name"]}"!')
print("Applied settings:")
print(f' Jito tip (buy): {settings["jitoTipInSolana"]} SOL')
print(f' Jito tip (sell): {settings["sellJitoTipInSolana"]} SOL')
print(f' Dynamic tip (buy): {settings["dynamicJitoTip"]}')
print(f' Dynamic tip (sell): {settings["sellDynamicJitoTip"]}')
print(f' Max tip (buy): {settings["dynamicJitoTipMax"]} SOL')
print(f' Max tip (sell): {settings["sellDynamicJitoTipMax"]} SOL')
print(f' Priority fee: {settings["prioritizationFeeInSolana"]} SOL')
print(f' Slippage (buy): {settings["slippage"]}%')
print(f' Slippage (sell): {settings["sellSlippage"]}%')
return response.json()
else:
print(f"Failed to switch profile: {response.status_code}")
print(response.text)
return None
# --- Usage Examples ---
# Switch to Sniper Mode before a token launch
# switch_profile("sniper")
# Switch to Standard Trading for day trading
# switch_profile("standard")
# Switch to Cost Saver for accumulation
# switch_profile("costsaver")
# Run from the command line: python profile_switcher.py sniper
if __name__ == "__main__":
if len(sys.argv) > 1:
switch_profile(sys.argv[1])
else:
print("Usage: python profile_switcher.py <profile>")
print("Available profiles:")
for key, profile in PROFILES.items():
print(f" {key:<12} - {profile['name']}")To run this:
# Switch to sniper mode
python profile_switcher.py sniper
# Switch to standard trading
python profile_switcher.py standard
# Switch to cost saver
python profile_switcher.py costsaver{% /tab %} {% /tabs %}
Configuring Presets #
Beyond tips and slippage, the same POST /user/update-user-settings endpoint lets you configure quick-select presets and wallet selection:
| Field | Type | Description |
|---|---|---|
solanaAmountPresets |
array of 4 numbers | Quick-select SOL amounts for buying (e.g., [0.1, 0.25, 0.5, 1.0]) |
percentageSellPresets |
array of 4 numbers | Quick-select sell percentages (e.g., [25, 50, 75, 100]) |
selectedWallets |
array of strings | Which wallet addresses are active for trading |
These presets define the quick-select buttons you see in the Sniperoo interface. Setting them via API means you can configure your entire trading environment programmatically.
Here’s an example that configures presets alongside transaction speed settings:
{% tabs syncId=“programming-language” %} {% tab label=“JavaScript” %}
const axios = require('axios');
const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://api.sniperoo.app';
async function configureFullTradingSetup() {
try {
const response = await axios.post(
`${BASE_URL}/user/update-user-settings`,
{
// Transaction speed settings
jitoTipInSolana: 0.01,
sellJitoTipInSolana: 0.008,
dynamicJitoTip: '85% - 95%',
sellDynamicJitoTip: '75% - 80%',
dynamicJitoTipMax: 0.05,
sellDynamicJitoTipMax: 0.03,
prioritizationFeeInSolana: 0.002,
slippage: 20,
sellSlippage: 15,
// Quick-select buy amounts in SOL
solanaAmountPresets: [0.1, 0.25, 0.5, 1.0],
// Quick-select sell percentages
percentageSellPresets: [25, 50, 75, 100],
// Active wallets (replace with your actual wallet addresses)
selectedWallets: [
'YourWalletAddress1Here',
'YourWalletAddress2Here'
]
},
{
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
}
}
);
console.log('Full trading setup configured!');
console.log('Buy presets:', response.data.solanaAmountPresets);
console.log('Sell presets:', response.data.percentageSellPresets);
console.log('Active wallets:', response.data.selectedWallets);
} catch (error) {
console.error('Failed to configure:', error.response?.data || error.message);
}
}
configureFullTradingSetup();{% /tab %} {% tab label=“Python” %}
import requests
import json
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.sniperoo.app"
def configure_full_trading_setup():
url = f"{BASE_URL}/user/update-user-settings"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
# Transaction speed settings
"jitoTipInSolana": 0.01,
"sellJitoTipInSolana": 0.008,
"dynamicJitoTip": "85% - 95%",
"sellDynamicJitoTip": "75% - 80%",
"dynamicJitoTipMax": 0.05,
"sellDynamicJitoTipMax": 0.03,
"prioritizationFeeInSolana": 0.002,
"slippage": 20,
"sellSlippage": 15,
# Quick-select buy amounts in SOL
"solanaAmountPresets": [0.1, 0.25, 0.5, 1.0],
# Quick-select sell percentages
"percentageSellPresets": [25, 50, 75, 100],
# Active wallets (replace with your actual wallet addresses)
"selectedWallets": [
"YourWalletAddress1Here",
"YourWalletAddress2Here"
]
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 201:
data = response.json()
print("Full trading setup configured!")
print(f"Buy presets: {data.get('solanaAmountPresets')}")
print(f"Sell presets: {data.get('percentageSellPresets')}")
print(f"Active wallets: {data.get('selectedWallets')}")
else:
print(f"Failed to configure: {response.status_code}")
print(response.text)
configure_full_trading_setup(){% /tab %} {% /tabs %}
{% admonition type=“info” name=“Preset Arrays” %}
Both solanaAmountPresets and percentageSellPresets expect exactly 4 numbers each. These correspond to the four quick-select buttons in the Sniperoo interface.
{% /admonition %}
When to Switch Profiles #
Knowing which profile to use is just as important as having them configured. Here’s a practical decision guide:
Use Sniper Mode When: #
- A new token is about to launch on pump.fun or Raydium
- You’re monitoring a wallet and need to copy-trade a buy instantly
- Network congestion is extremely high and you absolutely need your transaction to land
- Speed is worth more than the extra fee cost
Use Standard Trading When: #
- Day trading established meme coins with decent liquidity
- Swing trading tokens that have been live for a while
- General active trading where you want reliable execution without overpaying
- Network conditions are normal
Use Cost Saver When: #
- DCA (dollar-cost averaging) into established tokens like SOL, JUP, or BONK
- Accumulating positions over hours or days where timing isn’t critical
- The network is quiet and fees are low anyway
- You’re building up a position and want to minimize total fee drag
Troubleshooting Common Issues #
Transactions keep failing?
- Increase
slippageby 5-10% - Bump up your Jito tip or switch to a higher dynamic tip percentile
- Make sure
dynamicJitoTipMaxis high enough that your dynamic tip isn’t getting capped too aggressively
Spending too much on fees?
- Switch to the Cost Saver profile
- Lower your
dynamicJitoTipMaxto set a tighter cap - Disable dynamic tips and use a fixed, lower Jito tip instead
- Set
prioritizationFeeInSolanato0for non-urgent trades
{% admonition type=“info” name=“Track Your Costs” %} Keep an eye on how much SOL you’re spending on tips and fees versus your actual trading profits. A good practice is to log the settings you used for each trade so you can review whether Sniper Mode was actually worth the extra cost, or if Standard Trading would have landed the transaction just fine. Over time, you’ll develop an intuition for which profile to use in different market conditions. {% /admonition %}
What’s Next #
Now that your transaction settings are optimized, put them to work:
- How to Buy Tokens – Apply your optimized speed settings to actual token purchases
- How to Sell Tokens – Fast sells are just as important as fast buys when taking profit or cutting losses
- Mastering Auto-Sell Strategies – Pair your speed settings with automated exit strategies for hands-free profit taking
{% admonition type=“info” name=“Remember” %}
Replace YOUR_API_KEY with your actual API key before running any of the examples. You can generate one in the API Access section of your Sniperoo dashboard.
{% /admonition %}