Make your first paid call.

API Acre uses x402 v2 exact USDC payments on Base. The official buyer client reads the HTTP 402 challenge, signs the payment authorization, retries the request, and returns the result.

2 · Set a wallet

Use a low-value hot wallet with USDC on Base and set EVM_PRIVATE_KEY locally.

3 · Call

The x402 client handles the challenge and payment. Successful responses include settlement metadata.

Python

pip install "x402[httpx]" eth-account · raw example

import asyncio
import os

from eth_account import Account
from x402 import x402Client
from x402.http import x402HTTPClient
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client


async def main() -> None:
    client = x402Client()
    account = Account.from_key(os.environ["EVM_PRIVATE_KEY"])
    register_exact_evm_client(client, EthAccountSigner(account))
    response_parser = x402HTTPClient(client)

    async with x402HttpxClient(client) as http:
        response = await http.post(
            "https://apiacre.com/v1/research/sec-filing-signals",
            json={"identifier": "AAPL"},
        )
        await response.aread()
        response.raise_for_status()
        print(response.json())
        print(
            response_parser.get_payment_settle_response(
                lambda name: response.headers.get(name)
            )
        )


asyncio.run(main())

TypeScript

npm install @x402/fetch @x402/evm @x402/core viem · raw example

import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment, x402HTTPClient } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";

const signer = privateKeyToAccount(process.env.EVM_PRIVATE_KEY as `0x${string}`);
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(signer));

const fetchWithPayment = wrapFetchWithPayment(fetch, client);
const responseParser = new x402HTTPClient(client);
const response = await fetchWithPayment(
  "https://apiacre.com/v1/research/sec-filing-signals",
  {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify({ identifier: "AAPL" }),
  },
);

if (!response.ok) throw new Error(`API Acre returned ${response.status}`);
console.log(await response.json());
console.log(await responseParser.processResponse(response));

Spend safely

Never expose a Ledger seed phrase or primary wallet private key. Fund a separate low-value buyer wallet, inspect the challenge price, network, and recipient before signing, enforce a per-call and daily budget, and keep idempotency keys when retrying.