Sync
Transaction Sync
Sync any platform transaction to the database by submitting its transaction hash. Captures trades (TokensTraded, Transfer, Sync, SharesTraded), loans, vault staking, vesting, and prediction market events from any transaction that interacts with platform contracts. The tx hash is strictly validated (must be a 66-character hex string starting with 0x). No authentication required.
POST
/api/v1/sync
Sync an on-chain transaction. Captures trades, loans, vault, vesting, and prediction events.
Auth: None (rate limited to 20 req/min per IP)
Request Body
Response
{ "txHash": "0x..." }Captured Events
TokensTraded— Buy/sell trades on factory tokens and STASISTransfer— Token transfers (ERC-20)Sync— Reserve snapshots for price/candle dataSharesTraded— Prediction market share trades- Loan events (create, repay, extend, increase, liquidate)
- Vault events (wrap, unwrap, lock, unlock, vault loans)
- Vesting events (create, claim)
- Market resolution events (propose, dispute, vote, veto, resolve)
Response
Response
{
"success": true,
"events": [ "TokensTraded", "Sync" ],
"loan": null,
"error": null
}200 Synced400 Missing or invalid txHash (must be 66-char hex)422 Sync failed429 Rate limit exceeded
Example Code
// Sync any platform transaction — trades, loans, vault, vesting, predictions
const tx = await walletClient.writeContract({
address: SWAP_ADDRESS,
abi: SWAP_ABI,
functionName: "buyTokens",
args: [tokenAddress, amountIn, minOut],
});
await publicClient.waitForTransactionReceipt({ hash: tx });
// Sync to database — no auth needed
const res = await fetch("https://launchonbasis.com/api/v1/sync", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ txHash: tx }),
});
const result = await res.json();
// result.success = true
// result.synced contains arrays of captured events:
// trades, transfers, syncEvents, sharesTrades, loans, vaultEvents, etc.