{"openapi":"3.1.0","info":{"title":"NanoAPI","version":"1.1.0","description":"Pay-per-use APIs for AI agents on Base and Solana: image processing plus Solana data endpoints (transaction parsing, priority-fee oracle). USDC micropayments via x402 protocol. No signup or API keys required.","x-guidance":"Pay-per-use APIs for AI agents and autonomous workflows on Base and Solana. Image processing: resize (thumbnails, responsive images, social media optimization), compress (reduce file size, save bandwidth, lower storage costs), and convert (PNG, JPEG, WebP, AVIF format conversion for web delivery). Solana data: transaction parser (human-readable swap/transfer/mint details from any signature across Jupiter, Raydium, Meteora, Pump.fun, Orca, Phoenix, SPL tokens) and priority-fee oracle (recommended microLamports/CU for submitting Solana transactions with low/medium/high/veryHigh priority levels). Pricing $0.001-$0.01 USDC per call, payable on Base (EVM) or Solana. No signup, no API keys — pay via x402 protocol. Use when you need to resize screenshots, compress photos, convert images for web optimization, prepare thumbnails, batch-process user uploads, debug a Solana transaction, explain a swap to a user, audit a wallet's activity, classify on-chain events, or estimate priority fees before submitting a Solana tx."},"servers":[{"url":"https://nanoapi.org"}],"paths":{"/image/resize":{"post":{"summary":"Resize an image to target dimensions","description":"Resize images to target width and height. Useful for thumbnails, social media optimization (Instagram, Twitter, LinkedIn), responsive web images, reducing bandwidth costs, and preparing assets for different display sizes. Accepts PNG, JPEG, WebP, AVIF. Returns resized image as PNG.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image","width","height"],"properties":{"image":{"type":"string","format":"binary","description":"Image file (PNG, JPEG, WebP, AVIF, max 10MB)"},"width":{"type":"integer","minimum":1,"maximum":4096,"description":"Target width in pixels"},"height":{"type":"integer","minimum":1,"maximum":4096,"description":"Target height in pixels"}}}}}},"responses":{"200":{"description":"Successful response for /image/resize","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (malformed parameters)"},"402":{"description":"Payment Required (x402 protocol)"},"429":{"description":"Rate limit exceeded"},"503":{"description":"Upstream service temporarily unavailable"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/image/compress":{"post":{"summary":"Compress an image to reduce file size","description":"Compress images to reduce file size with configurable quality. A photo compressed to quality 30 is typically 90-95% smaller with acceptable visual quality. Useful for reducing storage costs, optimizing web page load times, preparing image uploads, and bandwidth reduction for mobile users. Accepts PNG, JPEG, WebP, AVIF. Returns JPEG.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image","quality"],"properties":{"image":{"type":"string","format":"binary","description":"Image file (PNG, JPEG, WebP, AVIF, max 10MB)"},"quality":{"type":"integer","minimum":1,"maximum":100,"description":"Compression quality (1 = smallest file, 100 = best quality)"}}}}}},"responses":{"200":{"description":"Successful response for /image/compress","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (malformed parameters)"},"402":{"description":"Payment Required (x402 protocol)"},"429":{"description":"Rate limit exceeded"},"503":{"description":"Upstream service temporarily unavailable"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/image/convert":{"post":{"summary":"Convert an image between formats","description":"Convert images between formats: PNG, JPEG, WebP, AVIF. WebP and AVIF offer 25-50% better compression than PNG/JPEG for web delivery, ideal for Core Web Vitals optimization. PNG for transparency, JPEG for photos with broadest compatibility. Accepts PNG, JPEG, WebP, AVIF input. Returns image in the requested format.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image","format"],"properties":{"image":{"type":"string","format":"binary","description":"Image file (PNG, JPEG, WebP, AVIF, max 10MB)"},"format":{"type":"string","enum":["png","jpg","webp","avif"],"description":"Target output format"}}}}}},"responses":{"200":{"description":"Successful response for /image/convert","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input (malformed parameters)"},"402":{"description":"Payment Required (x402 protocol)"},"429":{"description":"Rate limit exceeded"},"503":{"description":"Upstream service temporarily unavailable"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]}}},"/sol/tx/parse":{"post":{"summary":"Parse a Solana transaction into human-readable form","description":"Parse any Solana transaction signature into structured, human-readable details. Returns transaction type (swap/transfer/mint/liquidity), a natural-language description, token transfers with amounts and counterparties, native SOL transfers, fee payer, and which programs were involved. Supports 100+ Solana programs including Jupiter, Raydium, Meteora (DLMM/DAMM), Pump.fun, Orca, Phoenix, Lifinity, Magic Eden, Tensor, Metaplex, and standard SPL token transfers. Use when you need to understand what a transaction did, audit a wallet's recent activity, explain a transaction to a user, detect suspicious behavior, identify counterparties in a trade, or classify tx types.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["signature"],"properties":{"signature":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{87,88}$","description":"Solana transaction signature (base58, 87-88 chars)"}}}}}},"responses":{"200":{"description":"Successful response for /sol/tx/parse","content":{"application/json":{"schema":{"type":"object","required":["signature","found"],"properties":{"signature":{"type":"string","description":"The input signature"},"found":{"type":"boolean","description":"true if parsed data was available; false if the signature is not yet indexed"},"type":{"type":"string","description":"High-level tx type (e.g. SWAP, TRANSFER, NFT_MINT, UNKNOWN). Absent when found=false."},"source":{"type":"string","description":"Program source (JUPITER, RAYDIUM, METEORA, PUMP_FUN, etc.)"},"description":{"type":"string","description":"Natural-language summary"},"timestamp":{"type":"integer","description":"Unix seconds"},"fee":{"type":"integer","description":"Fee paid in lamports"},"feePayer":{"type":"string","description":"Wallet that paid the fee"},"tokenTransfers":{"type":"array","items":{"type":"object","properties":{"mint":{"type":"string"},"tokenAmount":{"type":"number"},"fromUserAccount":{"type":"string"},"toUserAccount":{"type":"string"}}}},"nativeTransfers":{"type":"array","items":{"type":"object","properties":{"amount":{"type":"integer","description":"Lamports"},"fromUserAccount":{"type":"string"},"toUserAccount":{"type":"string"}}}},"programsInvolved":{"type":"array","items":{"type":"string"},"description":"Raw program IDs (base58 pubkeys) of all programs touched by this transaction. For the human-readable primary program name, use the `source` field."},"classified":{"type":"boolean","description":"false when the parser could not classify the transaction type (token/native transfer data is still included)"},"suggestion":{"type":"string","description":"Agent-facing hint (only when found=false)"}}}}}},"400":{"description":"Invalid input (malformed parameters)"},"402":{"description":"Payment Required (x402 protocol)"},"429":{"description":"Rate limit exceeded"},"503":{"description":"Upstream service temporarily unavailable"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]}}},"/sol/fees/recommend":{"post":{"summary":"Get recommended Solana priority fee","description":"Returns recommended priority fee (in microLamports per compute unit) for submitting Solana transactions. Based on recent network conditions from a priority-fee oracle. Provide the transaction's writable accounts for location-aware recommendations, or leave accounts empty for a global network estimate. Pick a priority level (low/medium/high/veryHigh) or omit it to receive all levels. Use when you need to estimate the priority fee before submitting a Solana transaction, avoid overpaying during calm periods, or avoid being dropped during congestion.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"accounts":{"type":"array","items":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"Solana public key (base58)"},"maxItems":64,"description":"Writable accounts for the transaction (optional; empty = global estimate)"},"priority":{"type":"string","enum":["low","medium","high","veryHigh"],"description":"Priority level; omit to receive all levels in `levels` object"},"computeUnits":{"type":"integer","minimum":1000,"maximum":1400000,"description":"Compute unit limit for the intended tx (default 200000). Used to compute lamport totals."}}}}}},"responses":{"200":{"description":"Successful response for /sol/fees/recommend","content":{"application/json":{"schema":{"type":"object","required":["microLamportsPerCU","computeUnitLimit","priorityFeeLamports","priorityFeeSOL","baseFeeLamports","estimatedTotalFeeLamports","estimatedTotalFeeSOL"],"properties":{"microLamportsPerCU":{"type":"integer","description":"Recommended priority fee, microLamports per compute unit"},"computeUnitLimit":{"type":"integer","description":"CU limit used for the lamport estimates (echo of input or default)"},"priorityFeeLamports":{"type":"integer","description":"microLamportsPerCU × computeUnitLimit ÷ 1e6"},"priorityFeeSOL":{"type":"number"},"baseFeeLamports":{"type":"integer","description":"Fixed Solana base fee (5000 lamports per signature, 1 signer assumed)"},"estimatedTotalFeeLamports":{"type":"integer"},"estimatedTotalFeeSOL":{"type":"number"},"priorityLevel":{"type":"string","description":"Echo of requested priority level, or 'custom' if `levels` returned"},"levels":{"type":"object","description":"Present only when caller omitted `priority`. Min/UnsafeMax are stripped.","properties":{"low":{"type":"integer"},"medium":{"type":"integer"},"high":{"type":"integer"},"veryHigh":{"type":"integer"}}}}}}}},"400":{"description":"Invalid input (malformed parameters)"},"402":{"description":"Payment Required (x402 protocol)"},"429":{"description":"Rate limit exceeded"},"503":{"description":"Upstream service temporarily unavailable"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}}}}