PageSourceSearch

https://api-production-54bd.up.railway.app/

html api-production-54bd.up.railway.app collected 2026-10-03 12:11:18 UTC 14,208 bytes, 214 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8" />
5<meta name="viewport" content="width=device-width, initial-scale=1" />
6<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 6-7
6
7<script async src="https://www.googletagmanager.com/gtag/js?id=
7G-707XW8MJDF
vendor: 12 bytes, line 7
7"></script>
8<script>
9  
vendor: 134 bytes, lines 9-13
9window.dataLayer = window.dataLayer || [];
10  function gtag(){dataLayer.push(arguments);}
11  gtag('js', new Date());
12
13  gtag('config', '
13G-707XW8MJDF
vendor: 4 bytes, line 13
13');
14</script>
14
15<title>Trading Data API — agent-ready market data</title>
16<meta name="description" content="Agent-ready trading & market-data API: prices, indicators, prediction markets, macro, and an AI momentum score. Pay per call with x402 (USDC) or an API key." />
17<link rel="icon" type="image/x-icon" href="/favicon.ico" />
18<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
19<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
20<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
21<style>
22:root{
23  --bg:#EEE9DD;--fg:#141411;--mut:#6b6759;
24  --line:rgba(20,20,17,.14);--line-strong:#141411;--acc:#4F46E5;--ok:#0f9d58;--bad:#d0392b;
25}
26*{box-sizing:border-box}
27html{-webkit-font-smoothing:antialiased}
28body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.55 "Helvetica Neue",Helvetica,Arial,sans-serif}
29a{color:var(--fg);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px}
30a:hover{color:var(--acc);text-decoration-color:var(--acc)}
31.mono{font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace}
32.wrap{max-width:1080px;margin:0 auto;padding:0 24px}
33.eyebrow{display:flex;align-items:center;gap:8px;font:600 11.5px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-bottom:18px}
34.eyebrow .dot{width:7px;height:7px;background:var(--acc);flex:none}
35.topbar{border-bottom:1px solid var(--line-strong);padding:16px 0}
36.topbar .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
37.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:15px;letter-spacing:-.01em}
38.brand img{height:26px;width:auto;display:block}
39.status{font:600 11px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);display:flex;align-items:center;gap:7px}
40.status .pulse{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px rgba(15,157,88,.18)}
41header.hero{padding:64px 0 48px;border-bottom:1px solid var(--line-strong)}
42.hero-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:48px;align-items:start}
43@media(max-width:860px){.hero-grid{grid-template-columns:1fr}}
44h1{font-size:clamp(40px,6.4vw,74px);line-height:.98;letter-spacing:-.02em;font-weight:850;margin:0 0 22px}
45.sub{font-size:18px;line-height:1.6;color:var(--mut);max-width:520px;margin:0 0 28px}
46.cta{display:flex;gap:10px;flex-wrap:wrap}
47.cta a{display:inline-flex;align-items:center;gap:6px;padding:13px 20px;font-weight:700;font-size:14.5px;text-decoration:none;border:1px solid var(--line-strong)}
48.cta .primary{background:var(--fg);color:var(--bg)}
49.cta .primary:hover{background:var(--acc);border-color:var(--acc);color:#fff}
50.cta .ghost{background:transparent;color:var(--fg)}
51.cta .ghost:hover{border-color:var(--acc);color:var(--acc)}
52.legal{margin-top:16px;font-size:11.5px;color:var(--mut);max-width:480px}
53
54.term{border:1px solid var(--line-strong);background:var(--fg);color:#EEE9DD}
55.term .term-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid rgba(238,233,221,.18);font:600 10.5px/1 ui-monospace,monospace;letter-spacing:.06em;text-transform:uppercase;color:#a8a296}
56.term .term-head .live{color:var(--acc)}
57.term-body{padding:16px}
58.term .cmd{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;color:#8fe0b0;word-break:break-all;margin-bottom:14px}
59.term .cmd .p{color:#a8a296}
60.term .code200{display:inline-block;font:700 12px/1 ui-monospace,monospace;color:#8fe0b0;border:1px solid #8fe0b0;padding:3px 8px;margin-bottom:12px}
61.kv{display:grid;grid-template-columns:auto 1fr;gap:7px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}
62.kv .k{color:#a8a296;text-transform:lowercase}
63.kv .v{color:#EEE9DD;word-break:break-all}
64.kv .v.acc{color:var(--acc)}
65
66section{padding:44px 0;border-bottom:1px solid var(--line-strong)}
67h2{font-size:clamp(26px,3.2vw,38px);line-height:1.05;letter-spacing:-.015em;font-weight:800;margin:0 0 8px}
68.lede{color:var(--mut);font-size:15.5px;max-width:560px;margin:0 0 28px}
69.grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line-strong);border-collapse:collapse}
70.grid.g2{grid-template-columns:repeat(2,1fr)}
71@media(max-width:760px){.grid,.grid.g2{grid-template-columns:1fr}}
72.cell{padding:22px;border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong)}
73.grid .cell:nth-child(3n){border-right:none}
74.grid.g2 .cell:nth-child(2n){border-right:none}
75.cell:nth-last-child(-n+3){border-bottom:none}
76.cell h3{margin:0 0 8px;font-size:16px;font-weight:800}
77.cell p{margin:0;color:var(--mut);font-size:14px;line-height:1.55}
78
79.steps{display:grid;grid-template-columns:repeat(2,1fr);border:1px solid var(--line-strong)}
80@media(max-width:760px){.steps{grid-template-columns:1fr}}
81.step{padding:26px;border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);position:relative}
82.step:nth-child(2n){border-right:none}
83.step:nth-last-child(-n+2){border-bottom:none}
84.step .num{font:800 34px/1 ui-monospace,monospace;color:var(--line-strong);opacity:.18;margin-bottom:6px}
85.step h3{margin:0 0 8px;font-size:17px;font-weight:800}
86.step p{margin:0;color:var(--mut);font-size:14px;line-height:1.55}
87.step code{background:rgba(20,20,17,.06);padding:1px 5px;font-size:13px}
88
89pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:var(--fg);color:#8fe0b0;border:1px solid var(--line-strong);padding:16px;overflow:auto;font-size:13px;margin:0 0 14px}
90code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:rgba(20,20,17,.06);padding:1px 5px;border-radius:3px}
91
92.price{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line-strong)}
93@media(max-width:760px){.price{grid-template-columns:1fr}}
94.price .p{padding:24px;border-right:1px solid var(--line-strong)}
95.price .p:last-child{border-right:none}
96.price .big{font:800 30px/1 ui-monospace,monospace;color:var(--acc);margin-bottom:10px}
97.price .p div:last-child{color:var(--mut);font-size:14px;line-height:1.55}
98.price .p code{font-size:12.5px}
99
100.eplist{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line-strong)}
101@media(max-width:760px){.eplist{grid-template-columns:1fr}}
102.ep{font-size:13.5px;padding:12px 16px;border-bottom:1px solid var(--line)}
103.ep:nth-child(odd){border-right:1px solid var(--line)}
104@media(max-width:760px){.ep:nth-child(odd){border-right:none}}
105.ep .m{display:inline-block;font:700 10.5px/1 ui-monospace,monospace;color:var(--fg);background:rgba(20,20,17,.08);padding:3px 6px;margin-right:8px;vertical-align:middle}
106.ep .pth{font-family:ui-monospace,monospace;color:var(--fg);font-weight:600}
107.ep .free{color:var(--ok);font:700 10px/1 ui-monospace,monospace;text-transform:uppercase;letter-spacing:.04em;margin-left:8px}
108.ep .d{display:block;color:var(--mut);font-size:12.5px;margin-top:4px}
109
110footer{padding:36px 0 70px}
111footer p{margin:0 0 6px;font-size:14px}
112.muted{color:var(--mut)}
113</style>
114</head>
115<body>
116
117<div class="topbar"><div class="wrap">
118  <div class="brand"><img src="/favicon-32x32.png" alt="" /> WICKEDAPI <span class="mono muted" style="font-weight:600;font-size:12px">/ TRADING DATA</span></div>
119  <div class="status"><span class="pulse"></span>PRODUCTION · HTTP 402 · X402 LIVE</div>
120</div></div>
121
122<header class="hero"><div class="wrap">
123  <div class="hero-grid">
124    <div>
125      <div class="eyebrow"><span class="dot"></span>AGENT-READY MARKET DATA</div>
126      <h1>Real data.<br/>No signup.<br/>Pay per call.</h1>
127      <p class="sub">Crypto &amp; stock prices, technical indicators, prediction markets, DeFi, macro events, and an AI momentum score — 24 endpoints an autonomous agent can call with no account, paying in USDC as it goes.</p>
128      <div class="cta">
129        <a class="primary" href="/docs">Interactive docs →</a>
130        <a class="ghost" href="/openapi.json">OpenAPI spec</a>
131        <a class="ghost" href="/v1/status">Live catalog</a>
132      </div>
133      <p class="legal muted">No fabricated data, ever — an upstream failure returns a real error, never a guessed value.</p>
134    </div>
135    <div class="term">
136      <div class="term-head"><span>agent@buyer:~$</span><span class="live">● LIVE</span></div>
137      <div class="term-body">
138        <div class="cmd"><span class="p">$</span> curl https://api.wickedapi.com/v1/momentum-score?symbol=BTC</div>
139        <div class="code200">402 · PAYMENT REQUIRED</div>
140        <div class="kv">
141          <div class="k">scheme</div><div class="v">exact</div>
142          <div class="k">network</div><div class="v acc">base</div>
143          <div class="k">asset</div><div class="v">USDC</div>
144          <div class="k">price</div><div class="v acc">$0.001</div>
145          <div class="k">pay_to</div><div class="v">0x63Eb…C8A4</div>
146          <div class="k">retry</div><div class="v">sign + X-PAYMENT header</div>
147        </div>
148      </div>
149    </div>
150  </div>
151</div></header>
152
153<section><div class="wrap">
154  <div class="eyebrow"><span class="dot"></span>CATALOG</div>
155  <h2>What you get</h2>
156  <p class="lede">Six categories, one consistent envelope, real upstream data only.</p>
157  <div class="grid">
158    <div class="cell"><h3>Prices &amp; candles</h3><p>Spot price and OHLCV for crypto and US equities/ETFs, timeframes that match TradingView exactly.</p></div>
159    <div class="cell"><h3>Indicators</h3><p>Wilder ATR + volatility regime, Fair Value Gaps (standard ICT/LuxAlgo), ICT buy/sell-side liquidity levels.</p></div>
160    <div class="cell"><h3>Derivatives &amp; flow</h3><p>Perp funding &amp; open interest, long/short ratios, order-book depth, spot-vs-perp basis, Hyperliquid.</p></div>
161    <div class="cell"><h3>Markets &amp; macro</h3><p>Kalshi prediction markets, DeFi TVL, crypto sentiment, implied volatility, a verified FOMC/CPI/jobs calendar.</p></div>
162    <div class="cell"><h3>AI momentum score</h3><p>A multi-signal verdict — bias, confidence, thesis, entry/invalidation/targets — for 10 liquid assets.</p></div>
163    <div class="cell"><h3>Honest by design</h3><p>Consistent JSON envelope. Failures return a clear <code>502</code>/<code>503</code>, never a fabricated number.</p></div>
164  </div>
165</div></section>
166
167<section><div class="wrap">
168  <div class="eyebrow"><span class="dot"></span>ACCESS MODEL</div>
169  <h2>Two ways in, zero signup either way</h2>
170  <div class="steps">
171    <div class="step"><div class="num">01</div><h3>Pay-per-call (x402)</h3><p>Call any endpoint with no key. Get a <code>402</code> with a USDC price; your agent's wallet pays automatically and the data returns. No accounts, no invoices.</p></div>
172    <div class="step"><div class="num">02</div><h3>API key</h3><p>Prefer a key? Send <code>x-api-key</code> for keyed, rate-limited access. Built for partners and dashboards.</p></div>
173  </div>
174  <p class="lede" style="margin:26px 0 10px">Try it free, right now — no key, no wallet, no signup:</p>
175  <pre>curl https://api.wickedapi.com/v1/sentiment</pre>
176  <p class="lede" style="margin:20px 0 10px">Or the paid tier (keyless → real 402 challenge):</p>
177  <pre style="margin-bottom:0">curl -i https://api.wickedapi.com/v1/momentum-score?symbol=BTC&amp;timeframe=1h</pre>
178</div></section>
179
180<section><div class="wrap">
181  <div class="eyebrow"><span class="dot"></span>PRICING</div>
182  <h2>No tier requires a signup</h2>
183  <div class="price">
184    <div class="p"><div class="big">FREE</div><div>forever, no key needed: <code>/v1/sentiment</code>, <code>/v1/macro-calendar</code>, <code>/v1/market-overview</code>, <code>/v1/gas</code>, <code>/v1/kalshi-probability</code>.</div></div>
185    <div class="p"><div class="big">$0.001</div><div>per request for everything else — paid in USDC via x402 on Base. No signup, agents pay as they go.</div></div>
186    <div class="p"><div class="big">KEYED</div><div>Rate-limited <code>x-api-key</code> access for partners. <a href="mailto:">Request a key</a>.</div></div>
187  </div>
188</div></section>
189
190<section style="border-bottom:none"><div class="wrap">
191  <div class="eyebrow"><span class="dot"></span>REFERENCE</div>
192  <h2>Endpoints <span class="muted mono" id="epcount" style="font-size:16px"></span></h2>
193  <p class="lede">Live, pulled straight from <code>/v1/status</code> — never out of sync with what's deployed.</p>
194  <div class="eplist" id="eplist"><span class="muted" style="padding:12px 16px;display:block">Loading live catalog…</span></div>
195</div></section>
196
197<footer><div class="wrap">
198  <p><strong>Trading Data API</strong> — built for the agent economy. Discoverable via the x402 Bazaar.</p>
199  <p class="muted">Data sourced from public &amp; licensed providers. Not investment advice.</p>
200  <p class="muted" style="margin-top:14px"><a href="https://protocol-health-oracle.wickedapi.com">Protocol Health Oracle</a> · <a href="https://broker-sync-api.wickedapi.com">Broker Sync API</a> · <a href="https://token-risk-oracle.wickedapi.com">Token Risk Oracle</a></p>
201</div></footer>
202
203<script>
204fetch("/v1/status").then(r=>r.json()).then(j=>{
205  const eps=(j.data&&j.data.endpoints)||[];
206  const el=document.getElementById("eplist");
207  document.getElementById("epcount").textContent="("+eps.length+")";
208  el.innerHTML=eps.map(function(e){
209    return '<div class="ep"><span class="m">'+e.method+'</span><span class="pth">'+e.path+'</span>'+(e.auth?'':' <span class="free">FREE</span>')+'<span class="d">'+(e.description||'')+'</span></div>';
210  }).join("");
211}).catch(function(){document.getElementById("eplist").innerHTML='<span class="muted" style="padding:12px 16px;display:block">Catalog unavailable.</span>';});
212</script>
212
213</body>
214</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.