> ## Documentation Index
> Fetch the complete documentation index at: https://docs.x402x.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Server parameters

> X402Server and createRequirements configuration

## Constructor

```ts theme={null}
new X402Server({
  client,          // Viem PublicClient
  facilitator,     // Facilitator instance
  network?,        // optional, default inferred from client
});
```

## createRequirements(config)

```ts theme={null}
{
  asset: string;
  maxAmountRequired: string;
  network?: string;
  scheme?: "exact";
  outputSchema?: Record<string, unknown>;
  paymentType?: "permit" | "eip3009" | "permit2" | "auto";
  resource?: string;
  description?: string;
  mimeType?: string;
  maxTimeoutSeconds?: number;
  extra?: Record<string, unknown>;
  autoDetect?: boolean; // default true
}
```

## Other method signatures

```ts theme={null}
// Full payment handling: parse → verify → settle
process(
  paymentHeader: string | undefined,
  expectedRequirements: PaymentRequirements
): Promise<ProcessResult>;

// Parse only
parse(
  paymentHeader: string | undefined,
  expectedRequirements: PaymentRequirements
): ParseResult;

// Verify only (after parse)
verify(parsed: ParsedPayment): Promise<VerifyResult>;

// Settle only (on-chain)
settle(parsed: ParsedPayment): Promise<SettleResult>;

// Warm up token capability cache
initialize(tokens: string[]): Promise<InitResult>;

// Build 402 response
get402Response(
  requirements: PaymentRequirements,
  error?: string,
  errorStage?: "parse" | "verify" | "settle"
): Response402;

// Clear cache
clearCache(tokenAddress?: string): Promise<void>;
```

## Key inputs and validation

* `paymentHeader`: from `req.headers["x-payment"]`, may be `undefined`
* `expectedRequirements`: must match the protected resource (network/asset/payTo/timeout, etc.)
* After creation, consider validating with `PaymentRequirementsSchema.parse(requirements)` (Zod)
