"use client" import { Badge } from "@/components/ui/badge" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { DocsLayout } from "@/components/docs-layout" import { docsConfig } from "@/lib/docs-config" function Endpoint({ method, path, description, params, request, response, }: { method: "GET" | "POST" | "PATCH" | "DELETE" | "WS" path: string description: string params?: { name: string; type: string; description: string; required?: boolean }[] request?: string response: string }) { const methodColors: Record = { GET: "bg-green-500/10 text-green-500 border-green-500/20", POST: "bg-blue-500/10 text-blue-500 border-blue-500/20", PATCH: "bg-yellow-500/10 text-yellow-500 border-yellow-500/20", DELETE: "bg-red-500/10 text-red-500 border-red-500/20", WS: "bg-purple-500/10 text-purple-500 border-purple-500/20", } return (
{method} {path}

{description}

{params && params.length > 0 && (

Parameters

{params.map((p) => ( ))}
Name Type Required Description
{p.name} {p.type} {p.required !== false ? "Yes" : "No"} {p.description}
)} {request && (

Request

              {request}
            
)}

Response

            {response}
          
) } export default function ApiReferencePage() { return (
{/* Header */}

API Reference

Complete reference for all {docsConfig.brandName} REST and JSON-RPC endpoints.

{/* Authentication */}

Authentication

All API requests require authentication via one of two methods:

API Key Header

                {`X-API-Key: ${docsConfig.apiKeyPrefix}live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6`}
              

Bearer Token

                {`Authorization: Bearer ${docsConfig.apiKeyPrefix}live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6`}
              
{/* Base URL */}

Base URL

            {`${docsConfig.apiUrl}/v1`}
          
{/* Rate Limits */}

Rate Limits

Plan Requests / second Requests / day
Free 10 100,000
Growth 100 5,000,000
Enterprise Unlimited Unlimited

Rate limit headers are included in every response:

            {`X-RateLimit-Limit: 100
X-RateLimit-Remaining: 97
X-RateLimit-Reset: 1706400000`}
          
{/* RPC */}

RPC

{/* Tokens */}

Tokens

{/* NFTs */}

NFTs

{/* Wallets */}

Wallets

{/* Webhooks */}

Webhooks

{/* Gas */}

Gas

{/* Bundler */}

Bundler

{/* WebSocket */}

WebSocket

{"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}`} response={`{"jsonrpc":"2.0","id":1,"result":"0x1a2b3c4d"} // Subsequent messages: { "jsonrpc": "2.0", "method": "eth_subscription", "params": { "subscription": "0x1a2b3c4d", "result": { "number": "0x13a5e80", "hash": "0xabc123...", "parentHash": "0xdef456...", "timestamp": "0x67890abc", "gasUsed": "0xe4e1c0", "gasLimit": "0x1c9c380", "baseFeePerGas": "0x2e90edd00" } } }`} />
{/* Error Codes */}

Error Codes

HTTP Status Error Code Description
400 invalid_request Malformed request body or missing required parameters
401 unauthorized Missing or invalid API key
403 forbidden API key does not have access to this resource
404 not_found Resource does not exist
429 rate_limited Rate limit exceeded. Check X-RateLimit headers.
500 internal_error Internal server error. Retry with exponential backoff.

All error responses follow this format:

            {`{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded. Retry after 1 second.",
    "status": 429
  }
}`}
          
) }