# API Meter > API Meter is per-customer API usage analytics by Canada Site Ops. Point clients at an edge reverse proxy (change one base URL, no SDK), or keep your own URL and have your server POST batched events, and see requests, errors and p95 latency per customer, endpoint and plan. Free: 250K requests/month per API, counted in per-minute totals kept 35 days; Indie CA$19/month (test-mode beta: Stripe test checkout, no real charge yet). Beta: runs on Cloudflare's free plan; all APIs share about 100,000 proxied requests/day, past which proxied requests can fail until 00:00 UTC. Base URL: `https://api-meter-lab.pages.dev`. Proxy: https://api-meter-lab.pages.dev/p/{slug}/{path}. Attribute requests by returning `X-MSA-Customer-Id` / `X-MSA-Plan` response headers from your origin (stripped by the proxy); fallbacks are `x-customer-id` / `x-customer-plan` request headers, then a salted hash of `x-api-key` or `Authorization: Bearer`. Every proxied response carries `x-msa-request-id`. No bodies, headers, query strings, IPs or individual request records are stored. Pricing (CAD): Free to 250,000 requests/month; Indie CA$19/month with 2M included, then CA$3 per started million (each started million over 2M is billed in full, e.g. 2.1M = CA$22). Overage is not billed during the beta. ## Key endpoints - POST /mcp: remote MCP server (Streamable HTTP, JSON-RPC 2.0, stateless). Tools: create_account, get_ingest_snippet, get_usage (by customer/endpoint/plan, with an agent bucket for plan labels ending in -agent), export_usage. Reads take the dashboard key (msd_...) as a tool argument. Metadata: /.well-known/mcp. Local/stdio clients: `npx -y api-meter-mcp` (npm package api-meter-mcp: stdio bridge to /mcp plus createMeter() ingest helper). Listed as io.github.Surface-ops/api-meter in the Official MCP Registry; source https://github.com/Surface-ops/api-meter-mcp - MCP directory listings: Official MCP Registry (io.github.Surface-ops/api-meter) https://registry.modelcontextprotocol.io/v0/servers?search=io.github.Surface-ops/api-meter ; Glama https://glama.ai/mcp/servers/Surface-ops/api-meter-mcp ; TensorBlock MCP Index https://www.tensorblock.co/mcp/servers/github-surface-ops-api-meter-mcp-f025ccdb ; npm https://www.npmjs.com/package/api-meter-mcp - POST /api/signup: {email, api_name, origin_url} -> slug, proxy URL, one-time keys, ownership token (201) - GET /api/verify?slug=...: checks /.well-known/api-meter-.txt on your origin - GET /api/stats?slug=...: 7-day stats + month-to-date usage; slug=demo is public, others need `Authorization: Bearer msd_...` - DELETE /api/account {slug, confirm: slug} with `Authorization: Bearer msd_...`: deletes the account and its data, cancels any subscription - ANY /p/{slug}/{path}: forwards to your origin and counts the request - POST /api/ingest/{slug} with `Authorization: Bearer msi_...`: {events: [{method, path, status, latency_ms, customer, plan, ts}]} (max 500/request) -> 202; keep-your-own-URL path, no proxy (snippets for Express, Fastify, Next.js App Router, Hono, FastAPI/Starlette, Flask, Django, Go net/http, curl in the docs) - POST /api/ingest-key {slug} with `Authorization: Bearer msd_...`: new ingest key, shown once - GET /api/checkout-confirm?session_id=cs_test_...&slug=... with `Authorization: Bearer msd_...`: after Stripe Checkout, confirms the Indie upgrade at once (200, or 409 with a reason) - GET /api/export?slug=...&month=YYYY-MM[&view=detail|customers][&format=csv|json][&customer=...] with `Authorization: Bearer msd_...`: billing-ready monthly usage per customer (and endpoint): requests, errors_4xx, errors_5xx, p95_ms; CSV file api-meter--.csv whose `#` header lines (and JSON meta) say whether the month is complete (in progress, recording paused + approx. not-recorded count, 35-day retention, 25,000-row cap) ## Docs - [Docs](https://api-meter-lab.pages.dev/docs): quickstart, headers, keep-your-own-URL ingest (Express, Fastify, Next.js App Router, Hono, FastAPI, Flask, Django, Go net/http, curl), monthly usage export (CSV), privacy, limits and pricing - [Integration guide](https://api-meter-lab.pages.dev/integrations): Express, FastAPI, Hono / Cloudflare Workers (proxy tagging); ingest snippets for Fastify, Next.js App Router, Django and Go net/http - [OpenAPI 3.1 spec](https://api-meter-lab.pages.dev/openapi.json): machine-readable API definition - [API analytics on Cloudflare without an SDK](https://api-meter-lab.pages.dev/cloudflare-api-analytics-without-sdk) - [Per-customer API usage analytics](https://api-meter-lab.pages.dev/api-usage-analytics-per-customer) - [Full docs text](https://api-meter-lab.pages.dev/llms-full.txt) ## Tools - [API pricing calculator](https://api-meter-lab.pages.dev/api-pricing-calculator) - [Plan limit and overage calculator](https://api-meter-lab.pages.dev/api-plan-limit-calculator) - [Endpoint normalizer](https://api-meter-lab.pages.dev/api-endpoint-normalizer) - [Rate-limit simulator](https://api-meter-lab.pages.dev/api-rate-limit-simulator) - [Live demo dashboard](https://api-meter-lab.pages.dev/app/) ## Pricing and comparisons - [Pricing comparison](https://api-meter-lab.pages.dev/pricing) - [Compare: API Meter vs Moesif vs Treblle vs Apitally vs ReadMe vs Zuplo](https://api-meter-lab.pages.dev/compare) - [Moesif alternative](https://api-meter-lab.pages.dev/moesif-alternative) - [Treblle alternative](https://api-meter-lab.pages.dev/treblle-alternative) - [Apitally alternative](https://api-meter-lab.pages.dev/apitally-alternative) - [ReadMe Metrics alternative](https://api-meter-lab.pages.dev/readme-metrics-alternative) - [Zuplo alternative](https://api-meter-lab.pages.dev/zuplo-alternative) - [Track AI agent API usage per customer](https://api-meter-lab.pages.dev/track-ai-agent-api-usage-per-customer): count agent/bot calls per customer and endpoint as their own bucket via the plan label (e.g. pro-agent); no native agent field. ## Related tools from Canada Site Ops - [Usage Lab](https://usage-lab.pages.dev/): usage-metering API for usage-based billing. Record idempotent usage events (LLM tokens, API calls, agent tool calls), accept late events up to 30 days, read monthly rollups per customer and meter. Remote MCP server: https://usage-lab.pages.dev/mcp ([MCP setup](https://usage-lab.pages.dev/docs/mcp/)); [llms.txt](https://usage-lab.pages.dev/llms.txt), [OpenAPI](https://usage-lab.pages.dev/openapi.json). - [server-track-lab](https://server-track-lab.pages.dev/): server-side conversion API for B2B SaaS marketing. One POST hashes user data, dedupes on event_id and forwards conversions to the Meta Conversions API. MCP: `npx -y server-track-lab-mcp`; [llms.txt](https://server-track-lab.pages.dev/llms.txt). ## Optional - [Privacy](https://api-meter-lab.pages.dev/privacy) - [Terms](https://api-meter-lab.pages.dev/terms) - [Sign up](https://api-meter-lab.pages.dev/signup)