gedx402 · docs

GEDX402 — External payer

Wires: npm run pricing:report or GET /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

PathWho paysHow you callBest for
External payer (this doc)Your wallet@x402/fetch, awal, or any x402 v2 client on shard URLsCustomer agents, production integrations, wallet-in-your-app
Hosted MCPOperator CDP buyermcp.gedx402.com/mcp + MCP toolsInternal 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.

ShapeRouteWire
OpenAI chatPOST https://chat.gedx402.com/v1/chat/completionsmanifest
Tavily searchPOST https://search.gedx402.com/v1/searchmanifest
Firecrawl scrapePOST https://browser.gedx402.com/v1/firecrawl/scrapemanifest
Social profilePOST https://social.gedx402.com/v1/social/outcome/profilemanifest
TranslatePOST https://embed.gedx402.com/v1/translatemanifest
Entry probePOST https://embed.gedx402.com/v1/embed/pingmanifest

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).

SKURouteHero
Entry probePOST https://embed.gedx402.com/v1/embed/pingembed ping
TranslatePOST https://embed.gedx402.com/v1/translatetranslate
Scrape LitePOST https://browser.gedx402.com/v1/firecrawl/scrapescrape-lite
SearchPOST https://search.gedx402.com/v1/searchsearch
Social profilePOST https://social.gedx402.com/v1/social/outcome/profilesocial profile
RAG answerPOST https://rag.gedx402.com/v1/aisearch/outcome/answerrag answer

Browser outcomes (Firecrawl parity)

Same @x402/fetch pattern as scrape — one payment, one outcome.

SKURouteWireHero
Page snapshotPOST /v1/firecrawl/scrape { "url", "formats": ["markdown","screenshot"] }manifestuse scrape with formats
Site mapPOST /v1/firecrawl/map { "url": "https://…" }manifestsite-map
Schema extractPOST /v1/firecrawl/extract { "urls", "prompt", "schema?" }manifestschema-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:

  1. POST the route → receive 402 + payment-required header
  2. Sign USDC transfer on Base to payTo in requirements
  3. Retry with payment-signature header → 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.

SKURouteSettlementHero
Batch scrapePOST https://browser.gedx402.com/v1/firecrawl/batch/scrape { "urls": ["https://…"] }manifestbatch-scrape
Voice sessionPOST https://media.gedx402.com/v1/voice/sessionsscales with budget — see manifestvoice session
Memory sessionPOST https://db.gedx402.com/v1/memory/sessionsmanifest (default budget)memory session
Managed RAG sessionPOST https://rag.gedx402.com/v1/aisearch/sessionsmanifest (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.