All posts
Platform Archaeology 2 min read

Finding Claude Behind the Curtain

API forensics in 30 seconds — identifying vendor routing through error message format analysis.

The Problem

Building a document generation tool with OpenRouter API. Three models in rotation. One (aurora-alpha) threw errors but produced excellent output anyway. Documentation: zero.

Constraint: Can’t contact support. Can’t waste time testing blind. Need to know what’s actually running to make cost and reliability decisions.

What Actually Happened

Error log showed:

{"role":"assistant","content":"","refusal":null,"reasoning":null}

Two things didn’t fit:

  1. Error occurred, job succeeded - no repair loop triggered, output was first-pass quality
  2. refusal and reasoning fields - not in OpenAI’s spec

Pattern match from unrelated project (OpenSwarm): those fields are Anthropic’s format.

The Discovery

openrouter/aurora-alpha isn’t a budget model. It’s Claude Opus (or Sonnet) with vendor aliasing.

Proof:

Why it matters:

The Method

Don’t fix errors immediately. Read them first.

  1. Log full response objects (not just content)
  2. Cross-reference format against known vendor specs
  3. Correlate message structure with output quality
  4. Test hypothesis: does behavior match the identified model?

Result: 30 seconds of observation saved hours of blind optimization.

Why This Works

Vendor abstractions leak. Response formats are fingerprints. Most developers smooth over errors too fast to notice.

The error wasn’t noise. It was a tell.

When OpenRouter routes aurora-alpha to Claude, they forward Anthropic’s message format unchanged. The refusal and reasoning fields aren’t bugs — they’re signatures.

Takeaway

Stop treating errors as obstacles. They’re artifacts. If something fails but still works, you’ve found a signal worth investigating.

In this case: the “bug” taught me more about vendor routing than documentation ever would.

Back to top