Who is really behind that API? Run infrastructure probes against any OpenAI-compatible endpoint and compare the fingerprints. Plumbing does not lie; personality does.

Your keys stay in this tab. Every call goes from your browser straight to the provider. Model lists are fetched live. No key yet? Create one in a minute at openrouter.ai/settings/keys.

Fingerprint comparison

What each probe does, and why personality tests are excluded

tokenizer counts — the same text goes to each model; the API's own usage.prompt_tokens comes back. Tokenizers are built per lab and almost never match across labs. Four pinned texts (English, Chinese, code and emoji), each normalized against a one-character baseline, give four independent readings.

template offset — a repeated one-character prompt and a pinned eight-word prompt expose the serving-template overhead and visible-text delta. A constant +75 offset was one of the clues the community used on Ox Alpha.

error taxonomy — edge and oversized parameters (temperature 2.0 and max_tokens 109) return validation prose written by the lab's own engineers, often with numeric codes. GLM's content filter answers with code 1301; that code appearing behind a stealth model ended the mystery for many.

network forensics — four probes read the delivery chain itself: the router's opt-in metadata snapshot names the edge region and provider that served each call; the /generation ledger repeats that plus native token counts; and response-header families (cf-ray, x-amzn-requestid, openai-processing-ms) fingerprint the serving stack the way nmap fingerprints a web server; path split records which upstream provider receives and refuses a payload.

capability ceiling — a tokenizer-calibrated, bisected padding ladder finds the accepted context-window bucket, distinguishing 64k, 128k, 200k and 256k-class variants.

deep signal — logprob geometry reads the normalized third-gap δ where top logprobs are exposed, and degrades honestly when the endpoint does not support them.

held for follow-up — cutoff dating, wrapper leak, reasoning trace, stream cadence and the one-token battery are not in the approved registry yet.

Why no censorship or personality probes: the community ran both on Ox Alpha and got contradictory verdicts from the same model on the same day. Behaviour bends to a system prompt; tokenizers and error handlers do not. This tool fingerprints the plumbing only.

Add your own probes

Every probe is one small JavaScript file in probes/. A probe gets a ctx.chat(payload) function, sends one or two requests, and returns { value }: a string or number that must come out identical when two endpoints run the same stack. Token counts, error wording, limit numbers: good values. Timestamps, latency, random ids: never.

Copy probes/_template.js, keep its header comment (name, description, author, version), and open a pull request. An approved probe is one added line in probes/index.js, and the page loads it automatically. Ideas waiting for an author: video-encoder token budgets, adversarial tokenizer string sets, stop-sequence limits, system-role handling.