Skip to main content
Call Xquik endpoints without an account or subscription. Pay per request with Tempo (USDC) using the mppx SDK.

1. Install the SDK

npm i mppx viem
The mppx package provides both client and server utilities. You only need the client. viem is required for wallet account management.

2. Set up a Tempo wallet

You need a Tempo wallet funded with USDC. Create one at tempo.xyz and note your private key.
Store your private key securely. Never commit it to version control. Use environment variables.

3. Make a charge request

Look up a single tweet. The SDK intercepts 402 responses, pays via Tempo, and retries automatically.
import { Mppx, tempo } from "mppx/client";
import { privateKeyToAccount } from "viem/accounts";

// Configure the MPP client — this patches global fetch
// to automatically handle 402 Payment Required challenges
Mppx.create({
  methods: [
    tempo({
      account: privateKeyToAccount(process.env.TEMPO_PRIVATE_KEY as `0x${string}`),
    }),
  ],
});

// Now any fetch to an MPP-enabled endpoint auto-pays
const response = await fetch(
  "https://xquik.com/api/v1/x/tweets/1893456789012345678"
);
const data = await response.json();
console.log(data.tweet.text);
Mppx.create() patches the global fetch function. When a request returns 402 with a WWW-Authenticate: Payment header, the SDK pays the requested amount ($0.00015) and retransmits the request with an Authorization: Payment credential. The response includes a Payment-Receipt header confirming settlement.

4. Make a session request

Search tweets with per-result pricing. You pay $0.00015 per tweet returned.
// Global fetch is already patched by Mppx.create() above
const response = await fetch(
  "https://xquik.com/api/v1/x/tweets/search?q=TypeScript&limit=20"
);
const data = await response.json();
console.log(`Found ${data.tweets.length} tweets`);
// Cost: $0.00015 × number of tweets returned
Session payments deposit funds upfront and deduct per result. The SDK manages the deposit and voucher exchange automatically. Your maximum cost = price × limit parameter (e.g., searching with limit=20 at 0.00015/tweetcostsatmost0.00015/tweet costs at most 0.003).

5. Raw HTTP flow (without SDK)

If you are not using the mppx SDK, you can implement the protocol manually. Step 1: Request the endpoint
curl -i https://xquik.com/api/v1/x/tweets/1893456789012345678
Step 2: Receive the 402 challenge
HTTP/2 402
WWW-Authenticate: Payment id="abc...", realm="xquik.com", method="tempo", intent="charge", request="eyJhbW91bnQiOi..."
The request parameter is a base64url-encoded JSON object containing the amount, currency, and recipient address. Step 3: Pay and retry After completing the Tempo payment, retry the request with the payment credential:
curl -i https://xquik.com/api/v1/x/tweets/1893456789012345678 \
  -H "Authorization: Payment eyJjaGFsbGVuZ2UiOnsi..."
The Authorization: Payment value is a base64url-encoded JSON object containing the original challenge and your payment proof. Step 4: Receive the response + receipt
HTTP/2 200
Payment-Receipt: eyJzdGF0dXMiOiJzdWNjZXNzIiwi...
Content-Type: application/json

{"tweet": {"id": "1893456789012345678", "text": "..."}}
The Payment-Receipt header confirms the payment was settled.

Next steps

MPP overview

Eligible endpoints, pricing, and protocol details.

Get tweet

Full endpoint reference for tweet lookups.

Search tweets

Full endpoint reference for tweet search.