x402 API для запуска AI-аудита

Публичный paid API TCCC-AI: клиент получает HTTP 402, оплачивает USDC через x402 и после успешной оплаты сразу запускает аудит проекта.

Быстрый старт Форматы ответов

Что это

Это не общий API личного кабинета. Это отдельный публичный вход для агентов и приложений, которые умеют платить по x402.

Внутренние site API требуют авторизацию пользователя. x402 endpoints сами являются payment gate: без платежа они возвращают 402 Payment Required, после оплаты создают задачу и запускают аудит.

Поток оплаты

  1. Клиент отправляет POST-запрос на x402 endpoint.
  2. Если оплаты нет, сервер возвращает 402 Payment Required с доступными сетями, суммой, asset и payTo.
  3. x402-клиент выбирает сеть, подписывает payment authorization и повторяет запрос.
  4. После verify/settle сервер создаёт task или batch и запускает аудит.
  5. Клиент получает task id и URL для мониторинга статуса, результата и HTML-отчёта.

Endpoints

POST /api/x402/create-audit

Запускает один аудит после успешной x402-оплаты.

POST /api/x402/create-batch

Создаёт batch из нескольких аудитов и запускает обработку после успешной оплаты.

Поддерживаемые сети

Сейчас сервер предлагает три варианта оплаты. Клиент может выбрать любой supported payment requirement из ответа 402.

Request: один аудит

Минимально нужен URL проекта. Язык можно передать как ru или en.

curl -X POST https://tcccai.xyz/api/x402/create-audit \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://utexo.com",
    "language": "ru"
  }'

Request: batch

Для нескольких проектов передайте urlsText: по одному URL на строку. После URL можно указать token/тикер.

curl -X POST https://tcccai.xyz/api/x402/create-batch \
  -H "Content-Type: application/json" \
  -d '{
    "urlsText": "https://example.com\nhttps://utexo.com UTXO",
    "language": "ru"
  }'

Ответ без оплаты: 402 Payment Required

Если payment headers не переданы, endpoint вернёт 402 и заголовок PAYMENT-REQUIRED. Внутри — resource и массив accepts с доступными способами оплаты.

{
  "x402Version": 2,
  "error": "Payment required",
  "resource": {
    "url": "https://tcccai.xyz/api/x402/create-audit",
    "description": "TCCC AI single audit"
  },
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "amount": "5000000",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "payTo": "0xaeac266a4533cb0b4255ea2922f997353a18b2e8",
      "maxTimeoutSeconds": 300
    }
  ]
}

amount указан в atomic units USDC: 5000000 = 5 USDC.

Пример клиента на @x402/fetch

Для EVM-кошелька можно использовать @x402/fetch. Приватный ключ должен храниться только на стороне клиента/агента, который платит; не отправляйте его в API TCCC-AI.

import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY);

const fetchWithPayment = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [
    {
      network: "eip155:*",
      client: new ExactEvmScheme(account)
    }
  ]
});

const response = await fetchWithPayment("https://tcccai.xyz/api/x402/create-audit", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
    url: "https://utexo.com",
    language: "ru"
  })
});

const data = await response.json();
console.log(data);

Успешный ответ после оплаты

После успешной оплаты аудит уже создан и запущен. В ответе есть готовые ссылки для мониторинга.

{
  "success": true,
  "task": {
    "id": "tccc-mp28gi7dx0fn7",
    "url": "https://utexo.com",
    "status": "processing_parallel",
    "status_url": "https://tcccai.xyz/api/tasks/tccc-mp28gi7dx0fn7",
    "result_url": "https://tcccai.xyz/api/tasks/tccc-mp28gi7dx0fn7/result",
    "report_url": "https://tcccai.xyz/output/tccc-mp28gi7dx0fn7/index.html"
  },
  "status_url": "https://tcccai.xyz/api/tasks/tccc-mp28gi7dx0fn7",
  "result_url": "https://tcccai.xyz/api/tasks/tccc-mp28gi7dx0fn7/result",
  "report_url": "https://tcccai.xyz/output/tccc-mp28gi7dx0fn7/index.html",
  "price_usd": 5,
  "payment_provider": "x402"
}

Как получать статус и результат

Пока аудит выполняется, status_url возвращает текущий статус. Когда задача завершена, result_url отдаёт Markdown/JSON, а report_url открывает HTML-отчёт.

GET https://tcccai.xyz/api/tasks/tccc-mp28gi7dx0fn7
GET https://tcccai.xyz/api/tasks/tccc-mp28gi7dx0fn7/result
GET https://tcccai.xyz/output/tccc-mp28gi7dx0fn7/index.html
{
  "id": "tccc-mp28gi7dx0fn7",
  "url": "https://utexo.com",
  "status": "completed",
  "status_url": "https://tcccai.xyz/api/tasks/tccc-mp28gi7dx0fn7",
  "result_url": "https://tcccai.xyz/api/tasks/tccc-mp28gi7dx0fn7/result",
  "report_url": "https://tcccai.xyz/output/tccc-mp28gi7dx0fn7/index.html"
}

Важные замечания