GEDX402 — External payer
Wires:
npm run pricing:reportorGET /v1/models?bundle=<name>→worst_case_price_usd.
External payer means you pay GEDX402 hero SKUs from your own wallet on Base — one USDC wire settlement per outcome. No API keys, no operator CDP buyer, no hosted MCP session. You POST a shard URL, get 402 + payment requirements, sign USDC on Base, retry with payment-signature, and receive JSON.
Use this path when you are building an agent, script, or product integration and want direct HTTP + x402 on the route that delivers the result. Each hero SKU below is one payment → one outcome — scrape a page, search the web, or call an upstream API wrapper.
When to use external payer vs MCP
| Path | Who pays | How you call | Best for |
|---|---|---|---|
| External payer (this doc) | Your wallet | @x402/fetch, awal, or any x402 v2 client on shard URLs | Customer agents, production integrations, wallet-in-your-app |
| Hosted MCP | Operator CDP buyer | mcp.gedx402.com/mcp + MCP tools | Internal ops only — see MCP setup |
Primary client: @x402/fetch (TypeScript). Optional CLI: Coinbase Agentic Wallet (awal). Every SKU has a matching hero page with the same snippets.
Winner endpoints (default discovery)
Live prices from the manifest — do not trust static docs alone. Discovery: ?bundle=winners.
Each route’s 402 payment requirement quotes wire_worst_usd from the live catalog (worst_case_price_usd in the manifest). Fund your wallet to that worst-case amount; actual settlement may be lower.
Wire amounts: npm run pricing:report in ged-x402, or GET /v1/models?bundle=winners → worst_case_price_usd per route. Static tables below are illustrative only.
| Shape | Route | Wire |
|---|---|---|
| OpenAI chat | POST https://chat.gedx402.com/v1/chat/completions | manifest |
| Tavily search | POST https://search.gedx402.com/v1/search | manifest |
| Firecrawl scrape | POST https://browser.gedx402.com/v1/firecrawl/scrape | manifest |
| Social profile | POST https://social.gedx402.com/v1/social/outcome/profile | manifest |
| Translate | POST https://embed.gedx402.com/v1/translate | manifest |
| Entry probe | POST https://embed.gedx402.com/v1/embed/ping | manifest |
Quickstart with copy-paste @x402/fetch snippets (chat, search, scrape, translate): integrator quickstart.
Competitive funnel (?bundle=competitive): embed ping → scrape → search → rag-answer (atom routes only — no orchestration recipes).
Extended hero SKUs
Live wires: npm run pricing:report or hero pages at gedx402.com/heroes (settlement from catalog).
| SKU | Route | Hero |
|---|---|---|
| Entry probe | POST https://embed.gedx402.com/v1/embed/ping | embed ping |
| Translate | POST https://embed.gedx402.com/v1/translate | translate |
| Scrape Lite | POST https://browser.gedx402.com/v1/firecrawl/scrape | scrape-lite |
| Search | POST https://search.gedx402.com/v1/search | search |
| Social profile | POST https://social.gedx402.com/v1/social/outcome/profile | social profile |
| RAG answer | POST https://rag.gedx402.com/v1/aisearch/outcome/answer | rag answer |
Browser outcomes (Firecrawl parity)
Same @x402/fetch pattern as scrape — one payment, one outcome.
| SKU | Route | Wire | Hero |
|---|---|---|---|
| Page snapshot | POST /v1/firecrawl/scrape { "url", "formats": ["markdown","screenshot"] } | manifest | use scrape with formats |
| Site map | POST /v1/firecrawl/map { "url": "https://…" } | manifest | site-map |
| Schema extract | POST /v1/firecrawl/extract { "urls", "prompt", "schema?" } | manifest | schema-extract |
Graduated funnel walkthrough: integrator quickstart.
1. @x402/fetch (TypeScript)
Industry-standard x402 client — handles 402 → sign USDC on Base → retry with payment-signature.
npm install @x402/fetch @x402/core @x402/evm viem
Fund USDC on Base before each SKU. Set PRIVATE_KEY to a Base-funded EVM wallet.
Entry probe — hero
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const signer = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(signer));
const fetchWithPayment = wrapFetchWithPayment(fetch, client);
const res = await fetchWithPayment("https://embed.gedx402.com/v1/embed/ping", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text: "ping" }),
});
const data = await res.json();
Translate — hero
const res = await fetchWithPayment("https://embed.gedx402.com/v1/translate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text: "Hello", source_lang: "en", target_lang: "es" }),
});
Scrape Lite — hero
const res = await fetchWithPayment("https://browser.gedx402.com/v1/firecrawl/scrape", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ url: "https://example.com" }),
});
Search — hero
const res = await fetchWithPayment("https://search.gedx402.com/v1/search", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ query: "enterprise llm api pricing", max_results: 5 }),
});
RAG answer — hero
const res = await fetchWithPayment("https://rag.gedx402.com/v1/aisearch/outcome/answer", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
url: "https://example.com/docs",
question: "How do I configure AI Search?",
budget: { max_queries: 5 },
}),
});
2. awal (optional agent convenience)
Coinbase Agentic Wallet CLI — email login, no private key in your app. Same shard URLs as §1.
npx awal@2.12.0 auth login you@company.com
npx awal@2.12.0 auth verify <code>
npx awal@2.12.0 balance --chain base
Entry probe — hero
npx awal@2.12.0 x402 pay \
--url https://embed.gedx402.com/v1/embed/ping \
--method POST \
--body '{"text":"ping"}'
Translate — hero
npx awal@2.12.0 x402 pay \
--url https://embed.gedx402.com/v1/translate \
--method POST \
--body '{"text":"Hello","source_lang":"en","target_lang":"es"}'
Scrape Lite — hero
npx awal@2.12.0 x402 pay \
--url https://browser.gedx402.com/v1/firecrawl/scrape \
--method POST \
--body '{"url":"https://example.com"}'
Search — hero
npx awal@2.12.0 x402 pay \
--url https://search.gedx402.com/v1/search \
--method POST \
--body '{"query":"enterprise llm api pricing","max_results":5}'
RAG answer — hero
npx awal@2.12.0 x402 pay \
--url https://rag.gedx402.com/v1/aisearch/outcome/answer \
--method POST \
--body '{"url":"https://example.com/docs","question":"How do I configure AI Search?","budget":{"max_queries":5}}'
3. curl + discovery
Any HTTP client that follows x402 payment requirements works:
POSTthe route → receive402+payment-requiredheader- Sign USDC transfer on Base to
payToin requirements - Retry with
payment-signatureheader →200+ JSON body
Unauthenticated curl below returns 402 so you can inspect pricing before paying. Use @x402/fetch or awal for automatic settlement.
Entry probe — hero
curl -X POST https://embed.gedx402.com/v1/embed/ping \
-H "Content-Type: application/json" \
-d '{"text":"ping"}'
Translate — hero
curl -X POST https://embed.gedx402.com/v1/translate \
-H "Content-Type: application/json" \
-d '{"text":"Hello","source_lang":"en","target_lang":"es"}'
Scrape Lite — hero
curl -X POST https://browser.gedx402.com/v1/firecrawl/scrape \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
Search — hero
curl -X POST https://search.gedx402.com/v1/search \
-H "Content-Type: application/json" \
-d '{"query":"enterprise llm api pricing","max_results":5}'
RAG answer — hero
curl -X POST https://rag.gedx402.com/v1/aisearch/outcome/answer \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/docs","question":"How do I configure AI Search?","budget":{"max_queries":5}}'
On success, inspect payment-response (settlement receipt) and X-GED-Cache (hit when identical POST was cached ~300s; no second settle).
Advanced — prepaid sessions, batch scrape
Not in the default customer funnel.
| SKU | Route | Settlement | Hero |
|---|---|---|---|
| Batch scrape | POST https://browser.gedx402.com/v1/firecrawl/batch/scrape { "urls": ["https://…"] } | manifest | batch-scrape |
| Voice session | POST https://media.gedx402.com/v1/voice/sessions | scales with budget — see manifest | voice session |
| Memory session | POST https://db.gedx402.com/v1/memory/sessions | manifest (default budget) | memory session |
| Managed RAG session | POST https://rag.gedx402.com/v1/aisearch/sessions | manifest (default budget) | rag session |
Bundle docs: voice · memory · managed RAG.
vs MCP (operator)
External payer (this doc) uses your wallet on shard origins — @x402/fetch primary, awal optional. Hosted MCP at mcp.gedx402.com/mcp is operator-only (CDP buyer pays; not a customer integration path). See MCP setup.