AI Skills for Agents
Give your agent the entire APINow marketplace — discover, call, and create any API endpoint with pay-per-call payments.
Inspired by Cloudflare's Code Mode — instead of thousands of tool definitions, your agent gets the full API surface through a single skill file.
Connect Your Agent
Open https://www.apinow.fun/skill.md and follow the instructions to use APINowQuick Add by Platform
Search Filter Lists (optional)
Loading lists...
Selected lists: none (search unrestricted)
Commands also create apinow.config.json using your selected list filters.
What Your Agent Can Do
Four capabilities, one skill file. Your agent discovers APIs, executes paid calls with optional spend limits, and can register new endpoints in the marketplace.
Discover Endpoints
Search by meaning, browse lists/catalog, get details/examples
# Semantic search — find by description
curl -X POST https://www.apinow.fun/api/endpoints/semantic-search \
-H "Content-Type: application/json" \
-d '{"query":"summarize long text","limit":5}'
# Browse full API catalog
curl https://www.apinow.fun/api/catalog
# Get endpoint details (schema, pricing, tags)
curl https://www.apinow.fun/api/endpoints/openai/chat/details
# Text search by name or namespace (list-restricted)
curl "https://www.apinow.fun/api/endpoints?search=sentiment&sortBy=popular&allowed_lists=best-ai-tools&allowed_endpoints=openai/chat"
# Trending endpoints
curl https://www.apinow.fun/api/leaderboard/trending
# Query curated endpoint lists (for allowlist mode)
curl https://www.apinow.fun/api/listsCall Any Endpoint
Pay-per-call with spend caps (per query/day) via PKEY or API key
// === EIP-712 Signed Payment (browser / agent with wallet) ===
// No gas, no on-chain tx from caller — facilitator settles
import { x402Client, wrapFetchWithPayment } from '@x402/fetch';
import { registerExactEvmScheme } from '@x402/evm/exact/client';
import { createWalletClient, custom } from 'viem';
import { base } from 'viem/chains';
const wallet = createWalletClient({ chain: base, transport: custom(window.ethereum) });
const [address] = await wallet.requestAddresses();
const signer = {
address,
signTypedData: (args) => wallet.signTypedData({ account: address, ...args }),
};
const client = new x402Client();
registerExactEvmScheme(client, { signer });
const fetchWithPayment = wrapFetchWithPayment(fetch, client);
// 402 → EIP-712 sign → retry happens automatically
const res = await fetchWithPayment(
'https://www.apinow.fun/api/endpoints/openai/chat',
{ method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt: 'Summarize this article...' }) }
);
const data = await res.json();
// === Private Key Payment (server-side / scripts) ===
import { privateKeyToAccount } from 'viem/accounts';
const account = privateKeyToAccount(process.env.APINOW_WALLET_PKEY);
const client2 = new x402Client();
registerExactEvmScheme(client2, { signer: account });
const serverFetch = wrapFetchWithPayment(fetch, client2);
const res2 = await serverFetch(
'https://www.apinow.fun/api/endpoints/openai/chat',
{ method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt: 'Summarize this...' }) }
);
// Optional guardrails before paid calls:
const maxPerQueryUsd = 0.02;
const maxPerDayUsd = 1.0;
// Pull endpoint price from /details and block if over limits.Create & Update Endpoints
Register new APIs, set pricing, manage versions
# Register a new endpoint
curl -X POST https://www.apinow.fun/api/endpoints \
-H "Content-Type: application/json" \
-H "x-wallet-address: 0xYourWallet..." \
-d '{
"namespace": "myteam",
"endpointName": "sentiment-v2",
"url": "https://my-api.com/sentiment",
"description": "Sentiment analysis with confidence scores",
"httpMethod": "POST",
"category": "nlp",
"tags": ["text", "sentiment", "ai"],
"paymentOptions": [{
"tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"tokenSymbol": "USDC",
"decimals": 6,
"amount": "10000",
"usdAmount": "0.01"
}]
}'
# Update endpoint description and tags
curl -X PUT https://www.apinow.fun/api/endpoints/ENDPOINT_ID \
-H "Content-Type: application/json" \
-H "x-wallet-address: 0xYourWallet..." \
-d '{"description":"Updated description","tags":["new","tags"]}'
# Create a new version
curl -X POST https://www.apinow.fun/api/endpoints/ENDPOINT_ID/versions \
-H "Content-Type: application/json" \
-d '{
"name": "v2.0",
"model": "gpt-4o",
"prompt": "Analyze sentiment...",
"changelog": "Added multi-language support"
}'
# AI-powered improvements
curl -X POST https://www.apinow.fun/api/endpoints/ENDPOINT_ID/ai-improve \
-H "Content-Type: application/json"Agent Auth (SIWA)
ERC-8004 identity with CDP/Privy/PKEY signer options + x402
// SIWA: Sign In With Agent — full auth + payment flow
import { signSIWAMessage } from "@buildersgarden/siwa";
import { createLocalAccountSigner } from "@buildersgarden/siwa/signer";
import { signAuthenticatedRequest } from "@buildersgarden/siwa/erc8128";
import { privateKeyToAccount } from "viem/accounts";
// 1. Create signer (also supports Bankr, Circle, Privy, Keyring Proxy)
const account = privateKeyToAccount(process.env.AGENT_PRIVATE_KEY);
const signer = createLocalAccountSigner(account);
// 2. Request nonce
const { nonce, issuedAt } = await fetch(
"https://www.apinow.fun/api/siwa/nonce",
{ method: "POST", headers: { "Content-Type": "application/json" },
body: JSON.stringify({ address: account.address }) }
).then(r => r.json());
// 3. Sign SIWA message (proves ERC-8004 NFT ownership)
const { message, signature } = await signSIWAMessage({
domain: "apinow.fun",
uri: "https://www.apinow.fun/api/siwa",
agentId: 42,
agentRegistry: "eip155:8453:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
chainId: 8453,
nonce, issuedAt,
}, signer);
// 4. Verify → get receipt
const { receipt } = await fetch(
"https://www.apinow.fun/api/siwa/verify",
{ method: "POST", headers: { "Content-Type": "application/json" },
body: JSON.stringify({ message, signature }) }
).then(r => r.json());
// 5. Make authenticated API calls (ERC-8128 HTTP signatures)
const req = new Request("https://www.apinow.fun/api/endpoints/openai/chat", {
method: "POST", headers: { "Content-Type": "application/json" },
body: JSON.stringify({ prompt: "Hello" }),
});
const signed = await signAuthenticatedRequest(req, receipt, signer, 8453);
const response = await fetch(signed);
// If 402 → Payment-Required header → sign payment → retryFull API Surface
Discovery
- GET /api/catalog
- POST /api/endpoints/semantic-search
- GET /api/endpoints?search=...
- GET /api/endpoints/{ns}/{ep}/details
- GET /api/leaderboard/trending
Execution
- POST /api/endpoints/{ns}/{ep}
- GET /api/v1/{ns}/{ep}
- HEAD /api/endpoints/{ns}/{ep}
- GET /api/endpoints/{ns}/{ep}/stats
- GET /api/endpoints/{ns}/{ep}/vibecode
Management
- POST /api/endpoints (create)
- PUT /api/endpoints/{id} (update)
- POST /api/endpoints/{id}/versions
- POST /api/endpoints/{id}/fork
- POST /api/endpoints/{id}/ai-improve
SIWA Auth
- POST /api/siwa/nonce
- POST /api/siwa/verify
- ERC-8128 request signing
- ERC-8004 identity registry
- x402 Payment-Signature