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 APINow
1Send this prompt to your agent
2Agent reads the skill file & discovers APIs
3Agent calls endpoints & pays per use via x402

Quick Add by Platform

Search Filter Lists (optional)

Loading lists...

Selected lists: none (search unrestricted)

Cursordocs
GitHub Copilotdocs
Claude Codedocs
OpenClawdocs

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/lists

Call 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 → retry

Full 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