---
title: "Inicio rápido de MPP"
description: "Paga una página de búsqueda avanzada de TwexAPI con Tempo USDC y el cliente mppx."
---

# Inicio rápido de MPP

Realiza una solicitud pay-per-use de búsqueda avanzada de TwexAPI sin una API key de TwexAPI. Esta guía usa el cliente `mppx` para responder al desafío HTTP 402, pagar con Tempo USDC y reintentar la solicitud automáticamente.

## Paso 1: Instala las dependencias del cliente

```bash
npm install mppx viem
```

`mppx` maneja desafíos y pagos MPP. `viem` convierte una clave privada Tempo en la cuenta de wallet usada por el cliente.

## Paso 2: Crea y financia una wallet Tempo

Crea una cuenta MPP local, luego exporta su clave privada:

```bash
mppx account create
mppx account export
```

Financia la dirección impresa con USDC en Tempo. Almacena la clave privada `0x...` exportada en una variable de entorno:

```bash
export TEMPO_PRIVATE_KEY="0x..."
```

:::warning
  Nunca hagas commit de una clave privada. Mantenla en tu gestor de secretos o entorno de shell, y financia la wallet solo con el monto que tu integración puede gastar.
:::

## Paso 3: Realiza una solicitud MPP

Crea `mpp-search.ts`:

```ts
import { Mppx, tempo } from "mppx/client";
import { privateKeyToAccount } from "viem/accounts";

Mppx.create({
  methods: [
    tempo({
      account: privateKeyToAccount(
        process.env.TEMPO_PRIVATE_KEY as `0x${string}`,
      ),
    }),
  ],
});

const response = await fetch(
  "https://api.twexapi.io/twitter/advanced_search/page",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      searchTerms: ["openai"],
      sortBy: "Latest",
    }),
  },
);

if (!response.ok) {
  throw new Error(`TwexAPI request failed: ${response.status}`);
}

console.log(await response.json());
```

`Mppx.create()` configura `fetch` para manejar un desafío MPP `402 Payment Required`. Para un endpoint elegible, paga la oferta Tempo proporcionada por el servidor y reintenta la misma solicitud con la credencial de pago. Inspecciona `response.headers.get("Payment-Receipt")` cuando necesites registrar la liquidación.

Pasa `next_cursor` en el cuerpo JSON al continuar desde una página anterior:

```json
{
  "searchTerms": ["openai"],
  "sortBy": "Latest",
  "next_cursor": "cursor-from-the-previous-response"
}
```

## Paso 4: Implementa el flujo HTTP en bruto

Sin `mppx`, primero solicita la página de búsqueda normalmente:

```bash
curl -i --request POST 'https://api.twexapi.io/twitter/advanced_search/page' \
  --header 'Content-Type: application/json' \
  --data '{"searchTerms":["openai"],"sortBy":"Latest"}'
```

En `402`, procesa el desafío `WWW-Authenticate: Payment` con una implementación MPP Tempo compatible. Luego reintenta la solicitud exacta con la credencial generada:

```bash
curl -i --request POST 'https://api.twexapi.io/twitter/advanced_search/page' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Payment eyJjaGFsbGVuZ2UiOnsi...' \
  --data '{"searchTerms":["openai"],"sortBy":"Latest"}'
```

La respuesta exitosa contiene el envelope JSON habitual de TwexAPI y un header de respuesta `Payment-Receipt`. Guarda recibos con tus propios registros de solicitud si tu aplicación necesita reconciliación.

## Próximos pasos

- [Machine Payments Protocol](/mpp/machine-payments-protocol) — revisa la operación soportada, la secuencia de pago y la comparación con API key.
- [API overview](/api-reference/overview) — explora autenticación con API key y el catálogo completo de endpoints.
