<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: sugi</title>
    <description>The latest articles on Forem by sugi (@fernsugi).</description>
    <link>https://forem.com/fernsugi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3785080%2F9aaf7dc2-8d96-4605-a4b9-05f3fa2808ff.jpg</url>
      <title>Forem: sugi</title>
      <link>https://forem.com/fernsugi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/fernsugi"/>
    <language>en</language>
    <item>
      <title>I Built a DeFi Data API Where AI Agents Pay Per Call — Here's How</title>
      <dc:creator>sugi</dc:creator>
      <pubDate>Sun, 22 Feb 2026 13:53:36 +0000</pubDate>
      <link>https://forem.com/fernsugi/i-built-a-defi-data-api-where-ai-agents-pay-per-call-heres-how-oeg</link>
      <guid>https://forem.com/fernsugi/i-built-a-defi-data-api-where-ai-agents-pay-per-call-heres-how-oeg</guid>
      <description>&lt;p&gt;Last week I deployed something I've wanted to build for a while: a crypto/DeFi data API where &lt;strong&gt;the client pays per call in USDC, with no API keys, no accounts, and no subscriptions&lt;/strong&gt;. The payment happens as part of the HTTP request itself.&lt;/p&gt;

&lt;p&gt;It's live at &lt;a href="https://x402-api.fly.dev" rel="noopener noreferrer"&gt;https://x402-api.fly.dev&lt;/a&gt; and it already has an on-chain identity: &lt;strong&gt;Agent #18763&lt;/strong&gt; on Base via ERC-8004. Here's what it does, how the payment flow works, and what surprised me along the way.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why x402?
&lt;/h2&gt;

&lt;p&gt;If you haven't heard of &lt;a href="https://github.com/coinbase/x402" rel="noopener noreferrer"&gt;x402&lt;/a&gt;, the short version: it's a protocol built on top of the long-forgotten &lt;code&gt;HTTP 402 Payment Required&lt;/code&gt; status code. The idea is simple — a server responds with a 402 and tells the client exactly how much to pay and where. The client sends the payment as a header on the next (or retried) request. The server verifies it and responds with the actual data.&lt;/p&gt;

&lt;p&gt;No OAuth dance. No rate-limit tiers. No billing portal. Just: "this costs 0.003 USDC, pay here, get data."&lt;/p&gt;

&lt;p&gt;Why does this matter for AI agents specifically? Because agents are increasingly autonomous. An agent running a trading strategy or doing research doesn't have a human reaching for a credit card — it needs to be able to buy services on its own. x402 + USDC on Base makes that possible with sub-cent micropayments that settle in seconds.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the API Does
&lt;/h2&gt;

&lt;p&gt;I built 8 paid endpoints, all DeFi/crypto data:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;What it returns&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/price-feed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.001 USDC&lt;/td&gt;
&lt;td&gt;BTC/ETH/SOL prices + top 24h movers (live CoinGecko)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/gas-tracker&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.001 USDC&lt;/td&gt;
&lt;td&gt;Multi-chain gas across ETH, Base, Polygon, Arbitrum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/dex-quotes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.002 USDC&lt;/td&gt;
&lt;td&gt;Swap quote comparison: Uniswap, SushiSwap, 1inch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/token-scanner&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.003 USDC&lt;/td&gt;
&lt;td&gt;Token security analysis + rug-pull risk flags&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/whale-tracker&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.005 USDC&lt;/td&gt;
&lt;td&gt;Holder concentration, Gini coefficient, whale alerts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/yield-scanner&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.005 USDC&lt;/td&gt;
&lt;td&gt;Top DeFi yields: Aave, Compound, Morpho, Lido, Pendle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/funding-rates&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.008 USDC&lt;/td&gt;
&lt;td&gt;Perp funding rates across 6 venues + arb ranking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/wallet-profiler&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.008 USDC&lt;/td&gt;
&lt;td&gt;Wallet portfolio, holdings, activity, risk profile&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Plus &lt;code&gt;/api/endpoints&lt;/code&gt; (free, machine-readable catalog) and &lt;code&gt;/health&lt;/code&gt; (free).&lt;/p&gt;

&lt;p&gt;Pricing is intentionally micro — the most expensive call is less than a cent. The goal isn't to make money off any single call but to prove the payment model works end-to-end.&lt;/p&gt;




&lt;h2&gt;
  
  
  How the Payment Flow Works
&lt;/h2&gt;

&lt;p&gt;Here's the exact HTTP exchange:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Client hits the endpoint without payment:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /api/price-feed HTTP/1.1
Host: x402-api.fly.dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2 — Server responds 402:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"x402Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Payment required"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"accepts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"scheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"exact"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"network"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"base-mainnet"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"maxAmountRequired"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1000"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://x402-api.fly.dev/api/price-feed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Aggregated crypto prices"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"payTo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0x60264c480b67adb557efEd22Cf0e7ceA792DefB7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"maxTimeoutSeconds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"asset"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"extra"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"USDC"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Amounts are in USDC's 6-decimal units: &lt;code&gt;1000&lt;/code&gt; = 0.001 USDC.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Client signs a &lt;code&gt;transferWithAuthorization&lt;/code&gt; EIP-712 payload and retries:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /api/price-feed HTTP/1.1
Host: x402-api.fly.dev
X-Payment: &amp;lt;base64-encoded payment payload&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4 — Server verifies the signature and returns data.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Using It With &lt;code&gt;x402-fetch&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;If you're building an AI agent or just want to test this, Coinbase's &lt;code&gt;x402-fetch&lt;/code&gt; package handles the 402 → pay → retry cycle automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;wrapFetchWithPayment&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x402-fetch&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createWalletClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;http&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;viem&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;privateKeyToAccount&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;viem/accounts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;viem/chains&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;privateKeyToAccount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PRIVATE_KEY&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="s2"&gt;`0x&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;walletClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createWalletClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;chain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;base&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;transport&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;http&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fetchWithPayment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;wrapFetchWithPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;walletClient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetchWithPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://x402-api.fly.dev/api/price-feed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. The agent doesn't know or care about API keys. It just needs USDC in its wallet.&lt;/p&gt;




&lt;h2&gt;
  
  
  ERC-8004: On-Chain Agent Identity
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://eips.ethereum.org/EIPS/eip-8004" rel="noopener noreferrer"&gt;ERC-8004&lt;/a&gt; is a proposed standard for on-chain agent identity. AI agents register themselves in a smart contract registry — anyone can look up the agent, see what it does, what endpoints it exposes, and whether it's active.&lt;/p&gt;

&lt;p&gt;I registered this API as &lt;strong&gt;Agent #18763&lt;/strong&gt; on Base mainnet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Registry: &lt;code&gt;0x8004A169FB4a3325136EB29fA0ceB6D2e539a432&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Chain: Base (chain ID 8453)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://basescan.org/nft/0x8004A169FB4a3325136EB29fA0ceB6D2e539a432/18763" rel="noopener noreferrer"&gt;View on BaseScan&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The vision: AI agents autonomously discover services through on-chain registries. An agent looking for DeFi data queries the registry, finds Agent #18763, reads its endpoint catalog, and starts paying for calls. No human intervention.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Payment verification is the hard part.&lt;/strong&gt; Server-side verification of EIP-3009 &lt;code&gt;transferWithAuthorization&lt;/code&gt; signatures is fiddly. I implemented both signature verification and tx hash verification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Replay protection matters immediately.&lt;/strong&gt; Without it, a client could reuse one payment for unlimited calls. Tracking used nonces in-memory for now — would need Redis for multi-replica.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The 402 response structure is critical.&lt;/strong&gt; If &lt;code&gt;maxAmountRequired&lt;/code&gt;, &lt;code&gt;asset&lt;/code&gt;, or &lt;code&gt;payTo&lt;/code&gt; are wrong, &lt;code&gt;x402-fetch&lt;/code&gt; fails silently. I spent more time debugging the response JSON than anything else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fly.io + Node.js was great for this.&lt;/strong&gt; Cold starts are fast, free tier handles the load, deployed with a single &lt;code&gt;fly deploy&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;The API is live: &lt;strong&gt;&lt;a href="https://x402-api.fly.dev" rel="noopener noreferrer"&gt;https://x402-api.fly.dev&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-i&lt;/span&gt; https://x402-api.fly.dev/api/price-feed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're building with x402, I'd love to hear what you're working on. If the pricing feels wrong or something's broken, tell me. This is a first draft — feedback is the whole point.&lt;/p&gt;

</description>
      <category>x402</category>
      <category>defi</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
