{"_id":"@analytix402/sdk","_rev":"4-bbfa39cbf9f22d8c12c2d277d36737a2","name":"@analytix402/sdk","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@analytix402/sdk","version":"0.1.0","keywords":["x402","analytics","monitoring","security","api","express","middleware","crypto","payments","web3","http-402"],"author":{"name":"Analytix402"},"license":"MIT","_id":"@analytix402/sdk@0.1.0","maintainers":[{"name":"moonypunts","email":"frankmangreen@gmail.com"}],"homepage":"https://analytix402.com","bugs":{"url":"https://github.com/MoonyPunts/Analytix402/issues"},"dist":{"shasum":"15e74174e81e23b121fcab35278485a7bc78393a","tarball":"https://registry.npmjs.org/@analytix402/sdk/-/sdk-0.1.0.tgz","fileCount":6,"integrity":"sha512-Rg5G5GgP3SrhEn2a8LiKxPUsDt1CFKOPOH3vWKAdRh4/dFMhDbEdn5AL08NzVPpg5zVcwseFKz38voIb9OHdqQ==","signatures":[{"sig":"MEQCIA9uLaWe87YXKnEl0edSL+Fs+ENfidSMKVvZLFfJaDHEAiAjRnfUOLxegQKmY+5cpyERTXmtFxUowBoWxovtIFXfPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40189},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"599550512a98512d3a3e5549bfea135f524cb792","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"moonypunts","email":"frankmangreen@gmail.com"},"repository":{"url":"git+https://github.com/MoonyPunts/Analytix402.git","type":"git"},"_npmVersion":"9.3.0","description":"Monitor, secure, and optimize your x402 APIs. Real-time analytics, security scanning, and revenue tracking.","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"peerDependencies":{"express":"^4.18.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1770521033726_0.7269111050312753","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@analytix402/sdk","version":"0.1.1","keywords":["x402","analytics","monitoring","security","api","express","middleware","crypto","payments","web3","http-402"],"author":{"name":"Analytix402"},"license":"MIT","_id":"@analytix402/sdk@0.1.1","maintainers":[{"name":"moonypunts","email":"frankmangreen@gmail.com"}],"homepage":"https://analytix402.com","bugs":{"url":"https://github.com/MoonyPunts/Analytix402/issues"},"dist":{"shasum":"bbceef01f5bf688887d054fe9b5229e990170160","tarball":"https://registry.npmjs.org/@analytix402/sdk/-/sdk-0.1.1.tgz","fileCount":6,"integrity":"sha512-4aZdM3xhnbxUhZ4vVkOvzbp6sMOiahvV8FhgRuropyjMHSMxc8nWJyU0sacsBNeCSNN4kTH9Cs6/3bMgplrFXA==","signatures":[{"sig":"MEUCIDVKPIDt2kHvnr26UabJnwfr6M53+2rnjtmZWa4wzTj1AiEAnlDKFwXAhmK/wUAacOQFv/mDYL49IanOQrDKd91wb4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40181},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"f1e020d9b13e21c9823f479c937667d7d2b56b9c","scripts":{"dev":"tsup src/index.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"moonypunts","email":"frankmangreen@gmail.com"},"repository":{"url":"git+https://github.com/MoonyPunts/Analytix402.git","type":"git"},"_npmVersion":"9.3.0","description":"Monitor, secure, and optimize your x402 APIs. Real-time analytics, security scanning, and revenue tracking.","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"peerDependencies":{"express":"^4.18.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.1_1770532293259_0.11799597004346674","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@analytix402/sdk","version":"0.1.2","keywords":["x402","analytics","monitoring","security","api","express","middleware","crypto","payments","web3","http-402","openai","anthropic","claude","gpt","llm","ai-agent","openclaw","observability"],"author":{"name":"Analytix402"},"license":"MIT","_id":"@analytix402/sdk@0.1.2","maintainers":[{"name":"moonypunts","email":"frankmangreen@gmail.com"}],"homepage":"https://analytix402.com","bugs":{"url":"https://github.com/MoonyPunts/Analytix402/issues"},"dist":{"shasum":"1c49f4671b177413f1f4f7f28c54dfc4145b4806","tarball":"https://registry.npmjs.org/@analytix402/sdk/-/sdk-0.1.2.tgz","fileCount":24,"integrity":"sha512-PPVo8RlAZUEhhf+lWde7nZ7z2ECVgXQ2dHVCcU0ZT5M9DgotgVSIT92HKVebSr0VsBSHyWz34d+ye+jlYVIccA==","signatures":[{"sig":"MEUCIQChDFSZlAxWYtLjAtYSe5grKoTnC+3eYlp9m6VuAMqS8AIgLfahuOMzEVhTQrRhEEF2aI7owF/zVrAkfbPDo7735bY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117263},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./fetch":{"types":"./dist/wrappers/fetch.d.ts","import":"./dist/wrappers/fetch.mjs","require":"./dist/wrappers/fetch.js"},"./openai":{"types":"./dist/wrappers/openai.d.ts","import":"./dist/wrappers/openai.mjs","require":"./dist/wrappers/openai.js"},"./anthropic":{"types":"./dist/wrappers/anthropic.d.ts","import":"./dist/wrappers/anthropic.mjs","require":"./dist/wrappers/anthropic.js"}},"gitHead":"d30f5f4ef48eeda9ef301ce0bb32a5e538797cef","scripts":{"dev":"tsup src/index.ts src/wrappers/openai.ts src/wrappers/anthropic.ts src/wrappers/fetch.ts --format cjs,esm --dts --watch","build":"tsup src/index.ts src/wrappers/openai.ts src/wrappers/anthropic.ts src/wrappers/fetch.ts --format cjs,esm --dts","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"moonypunts","email":"frankmangreen@gmail.com"},"repository":{"url":"git+https://github.com/MoonyPunts/Analytix402.git","type":"git"},"_npmVersion":"9.3.0","description":"Monitor, secure, and optimize your x402 APIs. Real-time analytics, security scanning, and revenue tracking.","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","typescript":"^5.3.0","@types/node":"^20.10.0"},"peerDependencies":{"openai":"^4.0.0","express":"^4.18.0 || ^5.0.0","@anthropic-ai/sdk":"^0.30.0"},"peerDependenciesMeta":{"openai":{"optional":true},"express":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.2_1771417355940_0.5755642215426062","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@analytix402/sdk","version":"0.1.3","description":"Monitor, secure, and optimize your x402 APIs. Real-time analytics, security scanning, and revenue tracking.","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js","import":"./dist/index.mjs"},"./openai":{"types":"./dist/wrappers/openai.d.ts","require":"./dist/wrappers/openai.js","import":"./dist/wrappers/openai.mjs"},"./anthropic":{"types":"./dist/wrappers/anthropic.d.ts","require":"./dist/wrappers/anthropic.js","import":"./dist/wrappers/anthropic.mjs"},"./fetch":{"types":"./dist/wrappers/fetch.d.ts","require":"./dist/wrappers/fetch.js","import":"./dist/wrappers/fetch.mjs"}},"scripts":{"build":"tsup src/index.ts src/wrappers/openai.ts src/wrappers/anthropic.ts src/wrappers/fetch.ts --format cjs,esm --dts","dev":"tsup src/index.ts src/wrappers/openai.ts src/wrappers/anthropic.ts src/wrappers/fetch.ts --format cjs,esm --dts --watch","typecheck":"tsc --noEmit","clean":"rm -rf dist","prepublishOnly":"npm run build"},"keywords":["x402","analytics","monitoring","security","api","express","middleware","crypto","payments","web3","http-402","openai","anthropic","claude","gpt","llm","ai-agent","openclaw","observability"],"author":{"name":"Analytix402"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/MoonyPunts/Analytix402.git"},"homepage":"https://analytix402.com","bugs":{"url":"https://github.com/MoonyPunts/Analytix402/issues"},"devDependencies":{"@types/node":"^20.10.0","tsup":"^8.0.1","typescript":"^5.3.0"},"peerDependencies":{"express":"^4.18.0 || ^5.0.0","openai":"^4.0.0","@anthropic-ai/sdk":"^0.30.0"},"peerDependenciesMeta":{"express":{"optional":true},"openai":{"optional":true},"@anthropic-ai/sdk":{"optional":true}},"engines":{"node":">=18.0.0"},"gitHead":"be9fc1a80eb0069291e86148753e9a932c0a058d","_id":"@analytix402/sdk@0.1.3","_nodeVersion":"24.11.0","_npmVersion":"9.3.0","dist":{"integrity":"sha512-M94Uxr4v5GjTlmgTgj5LSkjGy8DUf3PybvSZiJN32cjiUyELqs2XiTxnZp4zI/ja9BU8RxrfQZ8OQ69Ta5ChHQ==","shasum":"23eec038c4b6ebc21934e3378155dc8b15033109","tarball":"https://registry.npmjs.org/@analytix402/sdk/-/sdk-0.1.3.tgz","fileCount":24,"unpackedSize":117263,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBlRB4USpaJxH1omKePNvbFbesXi7sdn1un41pt2D2oKAiBwvVw30AW7bwlGdv0MwFjSxVvEjqJT4ozbxDcReFrpTA=="}]},"_npmUser":{"name":"moonypunts","email":"frankmangreen@gmail.com"},"directories":{},"maintainers":[{"name":"moonypunts","email":"frankmangreen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.1.3_1771565666454_0.4926203558291711"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-08T03:23:53.643Z","modified":"2026-02-20T05:34:26.747Z","0.1.0":"2026-02-08T03:23:53.884Z","0.1.1":"2026-02-08T06:31:33.422Z","0.1.2":"2026-02-18T12:22:36.088Z","0.1.3":"2026-02-20T05:34:26.603Z"},"bugs":{"url":"https://github.com/MoonyPunts/Analytix402/issues"},"author":{"name":"Analytix402"},"license":"MIT","homepage":"https://analytix402.com","keywords":["x402","analytics","monitoring","security","api","express","middleware","crypto","payments","web3","http-402","openai","anthropic","claude","gpt","llm","ai-agent","openclaw","observability"],"repository":{"type":"git","url":"git+https://github.com/MoonyPunts/Analytix402.git"},"description":"Monitor, secure, and optimize your x402 APIs. Real-time analytics, security scanning, and revenue tracking.","maintainers":[{"name":"moonypunts","email":"frankmangreen@gmail.com"}],"readme":"# @analytix402/sdk\r\n\r\nMonitor, secure, and optimize your x402 APIs. Drop-in Express middleware that captures requests, payments, and performance data — viewable on [analytix402.com](https://analytix402.com).\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @analytix402/sdk\r\n```\r\n\r\n## Quick Start\r\n\r\n```typescript\r\nimport express from 'express';\r\nimport { Analytix402 } from '@analytix402/sdk';\r\n\r\nconst app = express();\r\n\r\n// Add Analytix402 middleware (before your routes)\r\napp.use(Analytix402({\r\n  apiKey: 'ax_live_your_key_here',\r\n}));\r\n\r\n// Your x402 routes\r\napp.get('/api/data', (req, res) => {\r\n  res.json({ data: 'Hello World' });\r\n});\r\n\r\napp.listen(3000);\r\n```\r\n\r\nThat's it! Revenue, requests, and security data will appear in your [Analytix402 dashboard](https://analytix402.com/dashboard.html).\r\n\r\n## What Gets Tracked\r\n\r\nThe SDK automatically captures:\r\n\r\n- **Request data**: Method, path, status code, response time\r\n- **Payment data**: Amount, currency, payer wallet (from x402 headers)\r\n- **Metadata**: IP address, user agent, timestamp\r\n\r\nAll data is batched and sent asynchronously — your API response times are not affected.\r\n\r\n## Configuration\r\n\r\n```typescript\r\napp.use(Analytix402({\r\n  // Required: Your API key from the Analytix402 dashboard\r\n  apiKey: 'ax_live_xxxxx',\r\n\r\n  // Optional: Custom API endpoint (for self-hosted)\r\n  baseUrl: 'https://api.analytix402.com',\r\n\r\n  // Optional: Enable debug logging\r\n  debug: false,\r\n\r\n  // Optional: Batch size before sending (default: 100)\r\n  batchSize: 100,\r\n\r\n  // Optional: Flush interval in ms (default: 5000)\r\n  flushInterval: 5000,\r\n\r\n  // Optional: Max retries for failed requests (default: 3)\r\n  maxRetries: 3,\r\n\r\n  // Optional: Max events to queue offline (default: 1000)\r\n  maxQueueSize: 1000,\r\n\r\n  // Optional: Request timeout in ms (default: 10000)\r\n  timeout: 10000,\r\n\r\n  // Optional: Paths to exclude from tracking\r\n  excludePaths: ['/health', '/internal/*'],\r\n\r\n  // Optional: Custom endpoint naming\r\n  getEndpointName: (req) => {\r\n    // Group by route pattern instead of full path\r\n    return req.path.replace(/\\/[0-9a-f-]+/g, '/:id');\r\n  },\r\n\r\n  // Optional: Custom filtering\r\n  shouldTrack: (req) => {\r\n    // Only track API routes\r\n    return req.path.startsWith('/api/');\r\n  },\r\n}));\r\n```\r\n\r\n## x402 Payment Headers\r\n\r\nThe SDK automatically reads these headers set by x402 facilitators:\r\n\r\n| Header | Description |\r\n|--------|-------------|\r\n| `x-payment` | Payment receipt/proof |\r\n| `x-payment-token` | Payment JWT |\r\n| `x-payer` | Payer wallet address |\r\n| `x-payment-amount` | Payment amount |\r\n| `x-payment-currency` | Currency (e.g., USDC) |\r\n| `x-payment-tx` | Transaction hash |\r\n| `x-facilitator` | Facilitator URL |\r\n\r\n## Default Excluded Paths\r\n\r\nThese paths are excluded from tracking by default:\r\n\r\n`/health`, `/healthz`, `/ready`, `/readyz`, `/live`, `/livez`, `/metrics`, `/favicon.ico`, `/.well-known`\r\n\r\n## Agent Tracking\r\n\r\nTrack AI agent health, tasks, and LLM usage:\r\n\r\n```typescript\r\nimport { createAnalytix402Client } from '@analytix402/sdk';\r\n\r\nconst client = createAnalytix402Client({\r\n  apiKey: 'ax_live_xxxxx',\r\n  agentId: 'my-trading-agent',\r\n  agentName: 'Trading Bot',\r\n});\r\n\r\n// Send heartbeats to show agent is alive\r\nsetInterval(() => {\r\n  client.heartbeat('healthy', { uptime: process.uptime() });\r\n}, 30000);\r\n\r\n// Track tasks with automatic duration measurement\r\nconst task = client.startTask('rebalance-portfolio-42');\r\ntry {\r\n  await doRebalance();\r\n  task.end(true, { positions: 12 });\r\n} catch (err) {\r\n  task.end(false, { error: err.message });\r\n}\r\n\r\n// Track LLM token usage\r\nclient.trackLLM({\r\n  model: 'claude-sonnet-4-5-20250929',\r\n  provider: 'anthropic',\r\n  inputTokens: 1500,\r\n  outputTokens: 300,\r\n  costUsd: 0.012,\r\n  durationMs: 820,\r\n  taskId: 'rebalance-portfolio-42',\r\n});\r\n\r\n// Report task outcomes directly\r\nclient.reportOutcome('task-123', true, {\r\n  durationMs: 2400,\r\n  cost: 0.05,\r\n  metadata: { pnl: 12.50 },\r\n});\r\n```\r\n\r\n## Manual Tracking\r\n\r\nFor non-Express frameworks or custom tracking:\r\n\r\n```typescript\r\nimport { createAnalytix402Client } from '@analytix402/sdk';\r\n\r\nconst client = createAnalytix402Client({\r\n  apiKey: 'ax_live_xxxxx',\r\n});\r\n\r\n// Track a custom event\r\nclient.track({\r\n  type: 'request',\r\n  method: 'GET',\r\n  path: '/api/data',\r\n  statusCode: 200,\r\n  responseTimeMs: 45,\r\n  timestamp: new Date().toISOString(),\r\n  payment: {\r\n    amount: '0.01',\r\n    currency: 'USDC',\r\n    wallet: '0x8f2a...',\r\n    status: 'success',\r\n  },\r\n});\r\n\r\n// Flush events before shutdown\r\nawait client.flush();\r\n\r\n// Graceful shutdown\r\nawait client.shutdown();\r\n```\r\n\r\n## Proxy URL Integration\r\n\r\nInstead of the SDK middleware, you can route API calls through Analytix402's proxy:\r\n\r\n```\r\nhttps://analytix402.com/api/p/{your-api-slug}/your/endpoint\r\n```\r\n\r\nPass your spend key as a header:\r\n\r\n```typescript\r\nconst response = await fetch(\r\n  'https://analytix402.com/api/p/weather-api/forecast?city=NYC',\r\n  {\r\n    headers: {\r\n      'X-Spend-Key': 'sk_live_your_spend_key',\r\n    },\r\n  }\r\n);\r\n```\r\n\r\nThe proxy handles payment, analytics tracking, and circuit breaker enforcement automatically.\r\n\r\n## Performance\r\n\r\n- **< 50ms overhead** per request\r\n- Events are batched and sent asynchronously\r\n- Automatic retry with exponential backoff\r\n- Offline queue (up to 1000 events)\r\n- Non-blocking — your API never waits for Analytix402\r\n\r\n## Requirements\r\n\r\n- Node.js 18+\r\n- Express 4.x or 5.x (for middleware, optional)\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}