Local Trade Mode
You can also include transferConfig in your requests to /local-trade if you want to send through a transaction processor (e.g. Astralane, Jito, Helius Sender etc)
Copy
Ask AI
use anyhow::Result;
use base64::{engine::general_purpose::STANDARD as BASE64, Engine};
use serde::{Deserialize, Serialize};
use solana_client::rpc_client::RpcClient;
use solana_sdk::{signature::Keypair, signer::Signer, transaction::VersionedTransaction};
use std::env;
const BLITZZ_API: &str = "http://api.blitzz.fun";
const RPC_URL: &str = "https://api.mainnet-beta.solana.com";
#[derive(Serialize)]
struct ClaimRequest {
#[serde(rename = "type")]
tx_type: String,
pool: String,
mint: String,
payer: String,
amount: u64,
slippage_pct: f64,
#[serde(rename = "prioFee")]
prio_fee: f64,
}
#[derive(Deserialize)]
struct TxResponse {
tx: Option<String>,
error: Option<String>,
}
#[tokio::main]
async fn main() -> Result<()> {
let mint = "YourTokenMintAddressHere";
let private_key = env::var("SOLANA_PRIVATE_KEY")?;
let keypair = Keypair::from_base58_string(&private_key);
// Build unsigned transaction
let request = ClaimRequest {
tx_type: "claimCreatorFees".to_string(),
pool: "pump".to_string(),
mint: mint.to_string(),
payer: keypair.pubkey().to_string(),
amount: 0,
slippage_pct: 0.0,
prio_fee: 0.0005,
};
let client = reqwest::Client::new();
let tx_res: TxResponse = client
.post(format!("{}/local-trade", BLITZZ_API))
.json(&request)
.send()
.await?
.json()
.await?;
if let Some(error) = tx_res.error {
anyhow::bail!("API error: {}", error);
}
// Sign and send transaction
let tx_bytes = BASE64.decode(tx_res.tx.unwrap())?;
let mut transaction: VersionedTransaction = bincode::deserialize(&tx_bytes)?;
transaction.sign(&[&keypair], transaction.message.recent_blockhash());
let rpc_client = RpcClient::new(RPC_URL);
let signature = rpc_client.send_and_confirm_transaction(&transaction)?;
println!("Creator fees claimed! Signature: {}", signature);
Ok(())
}
Blitzz Mode
Copy
Ask AI
use anyhow::Result;
use serde::{Deserialize, Serialize};
use std::env;
const BLITZZ_API: &str = "http://api.blitzz.fun";
#[derive(Serialize)]
struct ClaimRequest {
#[serde(rename = "type")]
tx_type: String,
pool: String,
mint: String,
amount: u64,
slippage_pct: f64,
#[serde(rename = "prioFee")]
prio_fee: f64,
#[serde(rename = "privateKey")]
private_key: String,
}
#[derive(Deserialize)]
struct BlitzzResponse {
status: Option<String>,
signature: Option<String>,
error: Option<String>,
}
#[tokio::main]
async fn main() -> Result<()> {
let mint = "YourTokenMintAddressHere";
let private_key = env::var("SOLANA_PRIVATE_KEY")?;
// Build, sign, and send in one call
let request = ClaimRequest {
tx_type: "claimCreatorFees".to_string(),
pool: "pump".to_string(),
mint: mint.to_string(),
amount: 0,
slippage_pct: 0.0,
prio_fee: 0.0005,
private_key,
};
let client = reqwest::Client::new();
let res: BlitzzResponse = client
.post(format!("{}/blitzz", BLITZZ_API))
.json(&request)
.send()
.await?
.json()
.await?;
if let Some(error) = res.error {
anyhow::bail!("API error: {}", error);
}
println!("Creator fees claimed! Status: {}", res.status.unwrap());
println!("Signature: {}", res.signature.unwrap());
Ok(())
}