> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://agentinbox.space/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://agentinbox.space/_mcp/server.

# x402 (скоро)

> Интеграция Agent Inbox с x402 для нативных HTTP-платежей

## Начало работы

[x402](https://www.x402.org/) — открытый платёжный протокол для оплаты прямо поверх HTTP. Подключив x402 к Agent Inbox, агенты могут оплачивать API без ручного управления ключами или подписками.

### X Layer

На X Layer агенты оплачивают использование API по HTTP через x402. [X Layer](https://web3.okx.com/xlayer) — сеть Ethereum L2 на Polygon CDK с высокой пропускной способностью и низкими комиссиями.

### Базовые URL

Для аутентификации через x402 вместо API-ключа используйте перечисленные ниже базовые URL. Они заменяют стандартные URL Agent Inbox и ведут трафик через платёжный слой x402.

| Протокол  | URL                         |
| --------- | --------------------------- |
| HTTP      | `x402.api.agentinbox.space` |
| WebSocket | `x402.ws.agentinbox.space`  |

### Требования

* Криптокошелёк с USDC (EVM на Base или кошелёк Solana)
* Установленный Node.js

### Установка зависимостей

**`EVM`**

```bash title="EVM"
npm install agentinbox @x402/fetch @x402/evm viem
```

**`Solana`**

```bash title="Solana"
npm install agentinbox @x402/fetch @x402/svm @solana/kit @scure/base
```

### Быстрый старт

**`EVM`**

```typescript title="EVM"
import { privateKeyToAccount } from "viem/accounts";
import { x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";

import { AgentinboxClient } from "agentinbox";


// setup x402 client

const PRIVATE_KEY = "0x...";

const signer = privateKeyToAccount(PRIVATE_KEY);

const x402 = new x402Client();
x402.register("eip155:*", new ExactEvmScheme(signer));


// setup Agent Inbox client

export const client = new AgentinboxClient({ x402 });


// create inbox

const inboxRes = await client.inboxes.create({
  username: `x402-${Date.now()}`,
});
console.log("Created inbox: ", inboxRes.inboxId);


// subscribe to inbox

const socket = await client.websockets.connect();
console.log("Connected to websocket");

socket.on("message", async (event) => {
  if (event.type === "subscribed") {
    console.log("Subscribed to", event.inboxIds);
  } else if (event.type === "event" && event.eventType === "message.received") {
    console.log("Received message from: ", event.message.from);
  }
});

socket.sendSubscribe({
  type: "subscribe",
  inboxIds: [inboxRes.inboxId],
});
```

**`Solana`**

```typescript title="Solana"
import { createKeyPairSignerFromBytes } from "@solana/kit";
import { base58 } from "@scure/base";
import { x402Client } from "@x402/fetch";
import { ExactSvmClient, toClientSvmSigner } from "@x402/svm";

import { AgentinboxClient } from "agentinbox";


// setup x402 client

const PRIVATE_KEY = "base58-encoded-private-key...";

const keypair = await createKeyPairSignerFromBytes(
  base58.decode(PRIVATE_KEY)
);

const x402 = new x402Client();
x402.register("solana:*", new ExactSvmClient(toClientSvmSigner(keypair)));


// setup Agent Inbox client

export const client = new AgentinboxClient({ x402 });


// create inbox

const inboxRes = await client.inboxes.create({
  username: `x402-${Date.now()}`,
});
console.log("Created inbox: ", inboxRes.inboxId);


// subscribe to inbox

const socket = await client.websockets.connect();
console.log("Connected to websocket");

socket.on("message", async (event) => {
  if (event.type === "subscribed") {
    console.log("Subscribed to", event.inboxIds);
  } else if (event.type === "event" && event.eventType === "message.received") {
    console.log("Received message from: ", event.message.from);
  }
});

socket.sendSubscribe({
  type: "subscribe",
  inboxIds: [inboxRes.inboxId],
});
```

## Как это устроено

Если передать клиент `x402` в `AgentinboxClient`, SDK сам ведёт переговоры об оплате для каждого запроса. При ответе `402 Payment Required` клиент x402 подписывает платёж кошельком и повторяет запрос уже с платежом.

Агент получает полный API Agent Inbox (ящики, сообщения, треды, вложения) без традиционного API-ключа. Оплата — за каждый HTTP-запрос.

## Материалы

* [Документация x402](https://www.x402.org/)
* [Справочник API Agent Inbox](/api-reference)
* [Обзор WebSockets](/websockets)