API endpoint normalizer
Raw paths like /v1/orders/123 and /v1/orders/456?expand=items are the same endpoint. Paste one method + path per line (or an OpenAPI paths JSON object, or YAML path lines) to see the endpoint key API Meter groups them under. It runs entirely in your browser: nothing is sent or stored.
| Method | Path | Endpoint key |
|---|
The rules
- Query string and
#fragmentare dropped; repeated and trailing slashes are collapsed; the path is lowercased. - All-digit segments become
:id; UUIDs become:uuid; segments with@become:email; segments over 64 characters become:token. - Alphanumeric segments of 16+ characters (hashes) become
:id, as do 10+ character segments that mix letters and digits (likecus_9f8a7b6c5d). - At most 8 segments are kept (then
/…), and the key is cut at 200 characters.
OpenAPI templates like {id} are not special-cased; they stay as written, which is fine because real traffic never contains braces.
Send a request through the proxy
Everything after /p/<slug> is forwarded to your origin, query string included. The normalized key is only what gets counted.
Tag the customer and plan at your origin
Set two response headers; the proxy reads and strips them. Full guide: Express, FastAPI and Hono.
// Express res.set("X-MSA-Customer-Id", acct.customerId); res.set("X-MSA-Plan", acct.plan); # FastAPI middleware response.headers["X-MSA-Customer-Id"] = acct.customer_id response.headers["X-MSA-Plan"] = acct.plan // Hono on a Cloudflare Worker c.header("X-MSA-Customer-Id", acct.customerId); c.header("X-MSA-Plan", acct.plan);
What the stats look like (example)
Example only. These numbers are made up from the paths above. Real numbers come from /api/stats for your slug, shown in the dashboard. Fields shown are a subset.
Start free, no SDK Read the docs
Related: Integrations · API pricing calculator · Plan limit & overage calculator · Cloudflare API analytics without an SDK