API sellers
Monetize any HTTP endpoint without building a billing layer. Set a per-call price in USDC, list the URL, get paid every time it's called. No dunning, no invoices, no churn.
22 AI agent endpoints. $0.05–$0.10/call. Powered by x402 on Base.
Explore EndpointsA caller sends a normal HTTP request to an x402 endpoint. If the endpoint charges, the server replies with HTTP 402 Payment Required and a WWW-Authenticate header that names a price and a USDC-on-Base recipient. The caller pays USDC, signs the payment, retries the request with a PAYMENT-SIGNATURE header, and gets the JSON response. No signup, no key, no session.
Every successful retry triggers a USDC transfer to the endpoint's wallet on Base mainnet, minus the facilitator fee. Because each call is metered, an endpoint earns USDC only when it is actually used — and can scale its price per endpoint without rewriting billing code.
The 402 Payment Required status has been part of HTTP since 1999 but was never wired to a real payment rail. x402 reuses it the way 401 is used for authentication: the response tells the client how to pay, the client pays, retries, and gets through. Status codes do what they were designed to do.
A simple 4-step HTTP payment flow — no accounts, no subscriptions.
Client sends a GET or POST request to the endpoint with a query parameter. No API key required.
Server responds with 402 Payment Required and a WWW-Authenticate header containing payment details.
Client pays USDC to the recipient wallet on Base mainnet and includes the PAYMENT-SIGNATURE header in a retry.
Endpoint unlocks and returns the AI-generated JSON response. Done — no session, no token, no expiry.
https://gig-x402-api.jayson-be1.workers.dev
0x2b6c16fb557291b98222a570526ff2430848b723
WWW-Authenticate header with PAYMENT-SIGNATURE
https://gig-x402-api.jayson-be1.workers.dev/x402 (no auth required)
| Endpoint | Method | Price | Description |
|---|---|---|---|
/thread-from-article |
GET | $0.05 | Article URL → X/Twitter thread |
/repurpose-long-form |
GET | $0.05 | Blog post → multi-format content (social, email, slides) |
/generate-show-notes |
GET | $0.05 | Podcast show notes generation |
| Endpoint | Method | Price | Description |
|---|---|---|---|
/extract-pain-points |
POST | $0.05 | Extract from customer reviews/feedback |
/analyze-sentiment |
GET | $0.05 | Sentiment analysis for URL or raw text |
/research-competitor-pricing |
GET | $0.10 | Competitor pricing research |
/generate-positioning-statement |
GET | $0.10 | Product positioning + messaging |
/analyze-review-velocity |
GET | $0.05 | Review trends and velocity tracking |
| Endpoint | Method | Price | Description |
|---|---|---|---|
/generate-cold-outreach |
GET | $0.10 | Personalized cold email copy |
/generate-case-study-outline |
POST | $0.05 | Structured case study template |
/identify-event-mentions |
GET | $0.05 | Find event references in URLs |
/extract-testimonials |
POST | $0.05 | Pull testimonials from reviews |
/generate-nurture-sequence |
POST | $0.10 | Multi-email nurture campaign template |
| Endpoint | Method | Price | Description |
|---|---|---|---|
/generate-agent-system-prompt |
POST | $0.10 | Custom AI agent system instructions |
/optimize-workflow-json |
POST | $0.05 | Improve automation workflow JSON |
/generate-error-recovery |
POST | $0.05 | Failure case handling templates |
/analyze-usage-patterns |
POST | $0.10 | User behavior pattern analysis |
/map-skill-gaps |
POST | $0.10 | Identify team skill gaps |
/generate-training-module |
POST | $0.10 | Custom training content generation |
/forecast-scaling-needs |
POST | $0.10 | Infrastructure scaling predictions |
# Step 1: Initial request (returns 402 Payment Required)
curl -X GET "https://gig-x402-api.jayson-be1.workers.dev/thread-from-article?url=https://example.com/article"
# Step 2: Pay 0.05 USDC to 0x2b6c16fb557291b98222a570526ff2430848b723 on Base
# Step 3: Retry with PAYMENT-SIGNATURE header
curl -X GET "https://gig-x402-api.jayson-be1.workers.dev/thread-from-article?url=https://example.com/article" \n -H "PAYMENT-SIGNATURE: <your-signature>"
{
"endpoint": "/thread-from-article",
"input": {
"url": "https://example.com/article"
},
"thread": [
{ "position": 1, "text": "Hook line that frames the article's claim." },
{ "position": 2, "text": "Supporting fact or stat from the piece." },
{ "position": 3, "text": "Counterpoint or implication." },
{ "position": 4, "text": "Closing takeaway + CTA." }
],
"payment": {
"amount_usdc": "0.05",
"tx_hash": "0x…",
"recipient": "0x2b6c16fb557291b98222a570526ff2430848b723"
}
}
# Step 1: Initial request with JSON body (returns 402 Payment Required)
curl -X POST "https://gig-x402-api.jayson-be1.workers.dev/extract-pain-points" \n -H "Content-Type: application/json" \n -d '{"text": "The checkout process is too slow and the UI is confusing."}'
# Step 2: Pay 0.05 USDC to 0x2b6c16fb557291b98222a570526ff2430848b723 on Base
# Step 3: Retry with PAYMENT-SIGNATURE header
curl -X POST "https://gig-x402-api.jayson-be1.workers.dev/extract-pain-points" \n -H "Content-Type: application/json" \n -H "PAYMENT-SIGNATURE: <your-signature>" \n -d '{"text": "The checkout process is too slow and the UI is confusing."}'
# Step 1: Initial request (returns 402 Payment Required)
import requests
resp = requests.get(
"https://gig-x402-api.jayson-be1.workers.dev/thread-from-article",
params={"url": "https://example.com/article"}
)
if resp.status_code == 402:
auth_header = resp.headers.get("WWW-Authenticate")
# auth_header → 'x402 url="https://pay.example.com/..."'
# Extract payment URL and complete USDC transfer off-chain
# Step 3: Retry with PAYMENT-SIGNATURE header
resp = requests.get(
"https://gig-x402-api.jayson-be1.workers.dev/thread-from-article",
params={"url": "https://example.com/article"},
headers={"PAYMENT-SIGNATURE": "<your-signature>"}
)
print(resp.json())
# Step 1: Initial request with JSON body (returns 402 Payment Required)
import requests
resp = requests.post(
"https://gig-x402-api.jayson-be1.workers.dev/extract-pain-points",
json={"text": "The checkout process is too slow and the UI is confusing."}
)
if resp.status_code == 402:
auth_header = resp.headers.get("WWW-Authenticate")
# Extract payment URL and complete USDC transfer off-chain
# Step 3: Retry with PAYMENT-SIGNATURE header
resp = requests.post(
"https://gig-x402-api.jayson-be1.workers.dev/extract-pain-points",
headers={"PAYMENT-SIGNATURE": "<your-signature>"},
json={"text": "The checkout process is too slow and the UI is confusing."}
)
print(resp.json())
// Step 1: Initial request (returns 402 Payment Required)
const url = "https://gig-x402-api.jayson-be1.workers.dev/thread-from-article?url=https://example.com/article";
const resp = await fetch(url);
if resp.status === 402) {
const authHeader = resp.headers.get("WWW-Authenticate");
// authHeader → 'x402 url="https://pay.example.com/..."'
// Extract payment URL and complete USDC transfer off-chain
// Step 3: Retry with PAYMENT-SIGNATURE header
const retryResp = await fetch(url, {
headers: { "PAYMENT-SIGNATURE": "<your-signature>" }
});
const data = await retryResp.json();
console.log(data);
}
// Step 1: Initial request with JSON body (returns 402 Payment Required)
const endpoint = "https://gig-x402-api.jayson-be1.workers.dev/extract-pain-points";
const resp = await fetch(endpoint, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text: "The checkout process is too slow and the UI is confusing." })
});
if resp.status === 402) {
const authHeader = resp.headers.get("WWW-Authenticate");
// Extract payment URL and complete USDC transfer off-chain
// Step 3: Retry with PAYMENT-SIGNATURE header
const retryResp = await fetch(endpoint, {
method: "POST",
headers: {
"Content-Type": "application/json",
"PAYMENT-SIGNATURE": "<your-signature>"
},
body: JSON.stringify({ text: "The checkout process is too slow and the UI is confusing." })
});
const data = await retryResp.json();
console.log(data);
}
// Step 1: Initial request (returns 402 Payment Required)
const axios = require("axios");
try {
const resp = await axios.get(
"https://gig-x402-api.jayson-be1.workers.dev/thread-from-article",
{ params: { url: "https://example.com/article" } }
);
console.log(resp.data);
} catch (err) {
if err.response && err.response.status === 402) {
const authHeader = err.response.headers["www-authenticate"];
// authHeader → 'x402 url="https://pay.example.com/..."'
// Extract payment URL and complete USDC transfer off-chain
// Step 3: Retry with PAYMENT-SIGNATURE header
const retryResp = await axios.get(
"https://gig-x402-api.jayson-be1.workers.dev/thread-from-article",
{
params: { url: "https://example.com/article" },
headers: { "PAYMENT-SIGNATURE": "<your-signature>" }
}
);
console.log(retryResp.data);
}
}
// Step 1: Initial request with JSON body (returns 402 Payment Required)
const axios = require("axios");
try {
const resp = await axios.post(
"https://gig-x402-api.jayson-be1.workers.dev/extract-pain-points",
{ text: "The checkout process is too slow and the UI is confusing." }
);
console.log(resp.data);
} catch (err) {
if err.response and err.response.status === 402) {
const authHeader = err.response.headers["www-authenticate"];
// Extract payment URL and complete USDC transfer off-chain
// Step 3: Retry with PAYMENT-SIGNATURE header
const retryResp = await axios.post(
"https://gig-x402-api.jayson-be1.workers.dev/extract-pain-points",
{ text: "The checkout process is too slow and the UI is confusing." },
{ headers: { "PAYMENT-SIGNATURE": "<your-signature>" } }
);
console.log(retryResp.data);
}
}
npm install gigsoul-sdk
or
pip install gigsoul-sdk
Who's It For
x402 fits any HTTP endpoint that earns by the request — and any agent that pays for what it uses.
Monetize any HTTP endpoint without building a billing layer. Set a per-call price in USDC, list the URL, get paid every time it's called. No dunning, no invoices, no churn.
Give your agent a wallet, not an API key. It discovers endpoints, pays per call, and retries — letting you chain 22 paid capabilities into a single workflow with no upfront contract.
Charge fractions of a cent per request where Stripe would refuse. x402 is built for high-volume, low-fee calls — LLM tooling, paywalled data, single-use webhooks.