FAQ

pangolin is an AI API relay checker. This page covers 39 questions about relays, authenticity checks, usage, and data safety.

Relay basics

An AI API relay is a third-party proxy that forwards your requests to OpenAI, Anthropic, or Google and returns the response. Relays vary widely — some pass through 1:1, others rewrite fields, swap models, or inject system prompts. This section explains what a relay is, why people use one, and where the risks are.

What is an AI API relay? #
A relay (also called a mirror or proxy) is a third-party forwarding service that sends your requests to OpenAI, Anthropic, or Google and returns the response. Common reasons: blocked access to official domains in some regions, wholesale pricing, or one unified interface for multiple providers.
Why use a relay? Can't I call the official API directly? #
Three common reasons: ① Access to anthropic.com / openai.com may require a VPN in some regions; ② Some relays resell pooled wholesale quotas at 30–70% below official list price; ③ Some relays expose Claude, GPT, and Gemini through a single OpenAI-compatible API so you maintain one integration.
How is a relay different from the official API? #
Official APIs have fixed fields, signatures, and error formats. Relays differ enormously — some pass through 1:1, others rewrite usage fields, strip thinking blocks, substitute models, or inject extra system prompts. pangolin detects what actually happens in the middle.
Are relays legal? Could I get in trouble? #
Legally it's a gray area and depends on the arrangement. Practical risks: ① Exit risk — relays can shut down, raise prices, or disappear with prepaid balance; be cautious with large top-ups; ② Responses may not match the official API — relays may swap models, strip capabilities, or misreport tokens, hurting downstream reliability; ③ Prompts may be logged — for confidential or user data, avoid unknown relays. Start small, pick reputable operators, and consider going direct for high-stakes use.
What are the risks of using a relay's API key? #
pangolin has tested many relays. Five common traps (all seen in the wild): ① Silent model substitution — you pay for GPT but get Claude or another cheaper model. The surface response looks fine, but tone, reasoning, and habits diverge — risky for production work. ② Advanced features break — strict JSON, PDF input, tool calling, and similar capabilities often fail when the backend model was swapped for a cheaper one that doesn't support them. ③ Billing numbers you can't trust — the same prompt may cost different amounts each run; some relays hide token usage entirely, so you can't reconcile charges that may exceed official pricing with no audit trail. ④ Models listed but not available — a relay may advertise dozens of models, then return model_not_found for some. pangolin preflight checks before you wait half a minute for an all-zero report. ⑤ Rules change without notice — a key that worked yesterday may suddenly require an upgrade, hit group limits, or get banned. Test with a small balance and run pangolin before large top-ups.

Authenticity

Fake relays are the industry's biggest pain point — you think you're on Claude but get Kiro or Amazon Q; you think you're on GPT-4o but the backend is Claude Haiku. This section covers common spoofing tactics and how to detect them.

How do I know I'm getting real Claude / GPT / Gemini and not a stand-in? #
Three angles: ① Protocol fields (id prefixes, object, finish_reason match official specs); ② Capability fingerprints (thinking signature, PDF multimodal, function-calling shape); ③ Injection resistance and usage (system conflicts, minimal input audit, foreign usage traces). pangolin combines these into multi-tier checks — full mode runs ~18 items for Claude.
What are common relay spoofing tactics? #
Five common ones: ① Run Kiro / Amazon Q / Bedrock as a Claude stand-in; ② Route GPT requests to a Claude backend (usage fields leak claude_* residue); ③ Swap GPT-4o for GPT-4o-mini to cut cost; ④ Strip thinking blocks, PDF multimodal, and other advanced capabilities; ⑤ Inject extra system prompts or hidden preambles to rewrite identity or behavior.
Can I verify the model by asking "Who are you?" #
No. Modern models are trained to answer identity questions, and relays can inject system prompts so the model says "I'm Claude." pangolin weights identity checks at only 5% — a weak auxiliary signal. Trust encrypted signals like thinking signature instead.
How do I spot Kiro / Amazon Q posing as Claude? #
Kiro and Amazon Q are Amazon's Claude stand-in gateways. Their responses lack Claude thinking signatures — they use AWS Bedrock's simplified interface, which does not return server-side signatures. pangolin scores thinking_signature at 0 and fails the overall check.
How do I tell if a relay sends GPT requests to a Claude backend? #
Check the usage field. Native OpenAI has only prompt_tokens, completion_tokens, and total_tokens. If you see claude_cache_creation_5_m_tokens, usage_source: anthropic, or similar, the relay is almost certainly doing protocol conversion. pangolin flags that fingerprint as critical.

Claude API relays

Claude is pangolin's deepest protocol — Claude's thinking signature is an encrypted, verifiable signal that only pangolin currently uses in production.

What is a thinking signature? Why is it the gold standard for authenticity? #
When extended thinking is enabled, Claude returns a server-generated encrypted signature in the signature field, typically 500–2000 characters. Anthropic generates it server-side with cryptographic verification — relays cannot realistically forge it. pangolin weights it at 25% as a core detector.
How do I pick a Claude code relay? #
Four checks: ① Run pangolin and confirm thinking signature scores 100; ② Look for foreign fields in usage beyond claude_*; ③ Compare stream vs non-stream behavior (relays often treat paths differently); ④ Confirm message ids use msg_ / toolu_ / srvtoolu_ prefixes.
What does pangolin's Claude detection cover? #
Full mode shows ~18 UI cards (1:1 with detectors). Core weight remains thinking signature (25%); the rest covers identity / behavior / knowledge, instruction reproduction, system conflicts, minimal input audit, channel and tokenizer, tool use, streaming consistency, token usage, and official same-prompt comparison; full mode adds PDF and optional long-context probes. quick focuses on core authenticity and injection resistance; standard adds protocol completeness and official comparison; full deepens capability checks.
Why doesn't my Claude relay return thinking blocks in stream mode? #
Known API drift on Claude Opus 4.7 — with adaptive thinking + streaming + summarized, SSE streams may omit thinking blocks while non-stream works. pangolin's thinking_signature detector falls back to non-stream for reliability.
Why does detection consume tokens? How much does it cost? #
Detection sends real requests. Standard mode runs ~12 API calls, ~3000–5000 tokens total (depending on whether thinking triggers). At Haiku ~$0.012, Sonnet ~$0.05, Opus ~$0.20. pangolin itself is free — you pay upstream token charges.
Does a 0 score mean the relay is completely useless? #
Depends. Common causes: ① Invalid or exhausted API key (invalid banner shown); ② Relay doesn't support your chosen model (preflight returns 422); ③ Genuinely poor relay. Read each detector's details, not just the total score.

OpenAI relays

OpenAI has no encrypted signal like thinking signature. pangolin focuses on protocol compliance and adapter-layer fingerprinting — catching relays that disguise Anthropic or Google backends as GPT.

What direct evidence shows a GPT relay is actually Claude? #
The usage field is the clearest signal. True native OpenAI has only prompt_tokens, completion_tokens, and total_tokens. claude_cache_creation_5_m_tokens, usage_source: anthropic, or input_tokens / output_tokens (Anthropic naming) strongly indicate protocol conversion. pangolin marks these critical and fails the detector.
My GPT-4o run scored 75 with verdict marginal — how do I read that? #
75 is in the pass range, but any critical issues (especially multiple protocol criticals) downgrade verdict to marginal — yellow circle, risk warning. Usually the API works but the relay is converting protocols; you may not be on real GPT.
What does it mean when response_format=json_schema strict doesn't work? #
OpenAI strict mode should return pure JSON, not Markdown code fences. If you get ```json {...} ```, either the relay didn't pass response_format through, or the underlying model (likely not GPT) doesn't understand strict mode. pangolin uses the markdown_json_seen flag to distinguish the two.
The relay returns model gpt-4o but responses don't feel like GPT — what now? #
The model field is just a string; relays can set anything. Verify with other signals: ① pangolin protocol detector scans usage fingerprints; ② Behavioral differences (GPT tends concise, Claude more polite and verbose); ③ Token CV across repeated calls (model_consistency detector).
What if preflight shows 0 OpenAI models available? #
pangolin lists how many models on that key match the protocol. If you're on OpenAI but see 0 GPT models, a yellow card explains the key has X Claude / Y Gemini models instead — one click to switch and test there.

Gemini API relays

pangolin tests Gemini via the OpenAI-compatible path (POST /chat/completions) because most third-party Gemini relays use it. Gemini 3 defaults to thinking, which affects max_tokens and usage reporting.

Why do Gemini relays often return model_not_found? #
Three causes: ① Relay proxies only some Gemini models (many carry 3.x preview only, not 2.5); ② Name mismatch (gemini-2.5-flash vs models/gemini-2.5-flash); ③ Model retired. pangolin preflight catches dead models in ~500ms and suggests alternatives.
What should max_completion_tokens be for Gemini 3.x preview detection? #
At least 64, ideally 128+. Gemini 3 enables thinking by default, consuming 30–60 reasoning_tokens before text. If max is too small (<32), thinking fills the budget and you get empty text with finish_reason=length. pangolin detectors use 64–384.
Does pangolin still support native Gemini generateContent? #
No. Only the OpenAI-compatible path (POST /chat/completions) remains — it covers most third-party relays and Google's official /v1beta/openai endpoint. Legacy Gemini Native reports can still be opened.
How do I pick a Gemini relay? #
Three tiers: ① Must support gemini-2.5-flash or gemini-3-flash-preview (2026 stable); ② pangolin protocol score ≥ 80; ③ usage has no foreign residue outside gemini_* (no silent protocol conversion). pangolin sorts model lists by recommendation.
Can I test Google's official Gemini API with pangolin? #
Yes. Set base_url to https://generativelanguage.googleapis.com/v1beta/openai and api_key to your Google AI Studio AIza... key. The official compatible endpoint works as a baseline to compare third-party relays.

Using pangolin

How to use the tool, read reports, and self-host.

How do I use pangolin? Shortest path? #
Three steps: ① Open the site and go to the Claude / OpenAI / Gemini check page; ② Enter relay base_url + api_key and pick a model (dropdown lists what's available for that key); ③ Click Start — report in 30–60s. Share via /r/{job_id} (kept about 90 days by default) or download JPG.
What's the difference between standard, quick, and full? #
quick covers core authenticity, connectivity, and injection probes — good for fast triage; standard adds protocol completeness, tool calling, streaming consistency, token usage, and official same-prompt comparison — default recommendation; full adds behavior fingerprint, knowledge accuracy, PDF, and optional long-context probes. Claude pages run thinking signature in all modes.
How do I read report scores? #
Weighted total: ≥85 excellent (green) / 70–84 pass (light green) / 50–69 marginal (yellow) / <50 fail (red). Any detector critical issue caps verdict at marginal (yellow) even above 70. Expand each detector's sub_checks for details.
Who can see a report link /r/xxx? #
Anyone with the link (anonymous, unencrypted). Reports never store your API key in plain text — only redacted form (sk-y7xU••••••0h). Don't share URLs for private relays. Opt-in private reports are planned.
Can I self-host pangolin locally? #
Yes — fully open source. clone → pip install -e .[web] → uvicorn web.server:app. CLI works standalone: relay-detector detect --base-url ... --api-key ... --mode full. See README.

Privacy & security

Handing an API key to a detection tool is sensitive. pangolin's data handling is auditable — the code is open source and you can self-host.

Does pangolin store my API key? #
No. The full key lives only in an in-memory holder during execution; it is cleared after success, failure, cancel, or interrupt — never written to job records, logs, or disk. For user/upstream-controlled values and dynamic keys, we remove the raw key and canonical urllib.parse.quote(key, safe=''), quote_plus(key, safe='') forms; %XX hex is case-insensitive. Fixed protocol/schema keys are kept. We do not promise to catch non-canonical percent-encoding of unreserved bytes, Base64, encryption, or arbitrary transforms.
How does privacy compare to cctest.ai? #
cctest.ai also claims not to upload keys, but closed source — unverifiable. pangolin is fully open: clone and run (git clone ... && uvicorn web.server:app) or audit server code on GitHub.
Does detection call upstream and cost money? #
Yes, but little. Standard mode ~12 real requests, 3000–5000 tokens total. Roughly Haiku $0.012, Sonnet $0.05, Opus $0.20 — paid to upstream (relay or official), not pangolin.
What personal data is in a report? Can I delete it? #
Reports contain: ① base_url (API key fragments removed if embedded); ② redacted api_key; ③ detection results. No name, email, or IP. To delete a report, open a GitHub issue.

Tool comparison

Relay testing isn't pangolin alone. This section contrasts pangolin with peers and how to choose a relay.

How is pangolin different from cctest.ai? #
cctest covers Claude only with black-box anti-evasion checks but shallow dimensions. pangolin covers three protocols (Claude / OpenAI / Gemini), encrypted thinking signature, cross-protocol auto-switch, pre-submit dead-model detection, full open source, and OpenAI adapter fingerprints for "GPT that's actually Claude."
How is pangolin different from hvoy.ai? #
hvoy supports three protocols but shallow checks (mostly protocol compliance). pangolin adds encrypted thinking signature on Claude (unique), protocol-conversion fingerprints on OpenAI (usage_source etc. at critical level), and Gemini support for thinking-by-default models — deeper coverage.
How do relay leaderboard sites relate to pangolin? #
Those are subjective reviews or ad-driven rankings; pangolin is objective technical testing. Use both: shortlist on reputation, then verify with pangolin.
How do I pick a relay? Hard metrics? #
pangolin recommends five hard checks: ① thinking signature ≥ 100; ② protocol critical_issue_count = 0; ③ stream / non-stream usage consistent; ④ model id matches requested model (model_consistency pass); ⑤ completion_tokens CV < 0.10 across repeats (stability).

没找到答案?

直接跑一次检测看实际结果 — pangolin 的报告 details 里包含具体的扣分原因,通常自带答案。

2026-09-08 · Sharing, languages, and scoring tweaks

This update improves report sharing and language switching, and lightly rebalances OpenAI / Gemini scoring emphasis.