Abstract
Shortly after the public launch of Claude Fable 5, two core questions dominated developer discussions: whether Fable 5 outperforms Opus 4.8, and how reliable third-party API gateways are when routing requests targeting Fable 5. For API consumers and engineering teams running production LLM pipelines, benchmark comparisons are secondary to validating a critical response metadata field: model returned in each chat completion payload. This paper presents small-scale test results run on the OpenAI-compatible API of 4sapi, documenting inconsistent mapping between requested model IDs and the actual model returned by the gateway backend. The test dataset covers Claude Fable 5, Claude Opus 4.8, and Claude Sonnet 5 across 15 total requests, measuring request success rates, non-empty content ratio, model matching consistency, finish reason classification, and end-to-end latency. We break down the root implications of mismatched returned_model values, demonstrate how relying solely on output text ignores critical routing flaws, outline standardized logging schemas for API audit, and clarify that partial performance test results cannot prove definitive cross-model capability rankings. Teams managing unified multi-model routing can reference the auditing framework here to validate traffic behavior when integrating with 4sapi and other compatible LLM gateways.
1. Why the Returned Model Field Outweighs Output Quality for API Evaluation
Most developers conducting informal LLM benchmarking only print and evaluate the textual content of model responses, using logic similar to this Python snippet:
While this method can assess whether a model produces coherent output, it omits a high-stakes audit metric: confirming which underlying model processed the request. This oversight is trivial for casual personal chat use, yet creates catastrophic blind spots for production workflows that rely on accurate model attribution for cost accounting, route debugging, SLA compliance tracking, and capability benchmarking.
If a client sends a request specifying claude-fable-5 as the target model, but the response’s model key returns claude-opus-4-8, the output cannot be counted as a valid Fable 5 performance sample—all cost, latency, and capability metrics will be misattributed to the wrong model variant. To eliminate this ambiguity, we structure request logging to capture two core identifiers for every API call:
requested_model: The model ID explicitly passed in the client request payloadreturned_model: The model identifier returned in the completion response header/body
Supplemental metadata fields for full audit visibility include response_id, finish_reason, content_empty boolean flag, token usage breakdown, and total request latency in milliseconds. Without tracking these fields, teams cannot differentiate true model performance gaps from gateway fallback routing logic.
2. Test Design: Small-Scale Sanity Check Instead of Full Benchmark Suite
This evaluation is not a comprehensive statistical benchmark; it is a lightweight consistency audit designed to validate gateway availability and model routing fidelity.
Test Endpoints (OpenAI-Compatible Schema)
GET /v1/models: List all active available model variantsPOST /v1/chat/completions: Execute functional test requests against target models
Test Task Coverage
Five distinct workload categories were selected to exercise different model capabilities:
- Logical multi-step reasoning
- Code review & static bug detection
- Constrained creative content generation
- Model identity self-verification (probe for gateway downgrade disclosures)
- Route trace identification (validate backend routing evidence)
Each model variant received five independent requests, generating 15 total API calls. The small sample size and constrained max_tokens limits prevent generalizable cross-model performance rankings, but effectively surface engineering risks including request failures, empty output payloads, and inconsistent model routing mapping. Key engineering signals prioritized over subjective output scoring:
- HTTP 200 success response rate
- Non-empty generated content ratio
- Exact string match rate between
requested_modelandreturned_model finish_reasonclassification (stop, length, tool_calls)- End-to-end round-trip latency
3. Model Availability & Gateway Catalog Validation
A GET /v1/models call confirmed all three target models appear in the gateway’s public catalog:
| Model ID | Visible in Model List | Supported Endpoint Standards |
|---|---|---|
| claude-fable-5 | Yes | Anthropic native, OpenAI compatible |
| claude-opus-4-8 | Yes | Anthropic native, OpenAI compatible |
| claude-sonnet-5 | Yes | Anthropic native, OpenAI compatible |
Catalog visibility only confirms the gateway accepts requests for these model IDs; it does not guarantee the backend will route traffic to the matching model variant at execution time. Actual routing behavior must be verified via the returned_model field in completion responses.
4. Aggregated Test Result Summary
All test requests returned HTTP 200 status codes, but critical discrepancies emerge when evaluating content completeness and model matching consistency:
| Requested Model | Total Requests | HTTP 200 Success | Non-Empty Content | Returned Model Matches Requested | Average Latency (ms) |
|---|---|---|---|---|---|
| claude-fable-5 | 5 | 5/5 | 5/5 | 2/5 | 13695 |
| claude-opus-4-8 | 5 | 5/5 | 5/5 | 5/5 | 13858 |
| claude-sonnet-5 | 5 | 5/5 | 4/5 | 5/5 | 15256 |
Opus 4.8 and Sonnet 5 maintain perfect alignment between requested and returned model IDs across all test runs. Fable 5 exhibits severe routing inconsistency: out of five requests explicitly targeting claude-fable-5, only two responses correctly report claude-fable-5 in the returned_model field; the remaining three return claude-opus-4-8. This core inconsistency is the most impactful finding of the test suite, far outweighing minor subjective differences in output quality.
Breakdown of Fable 5 Mismatched Requests
Every identical prompt targeting Fable 5 produced inconsistent backend routing results, as documented in the per-request trace table:
| Task Type | Requested Model | Returned Model | Finish Reason | Latency (ms) |
|---|---|---|---|---|
| Multi-step reasoning | claude-fable-5 | claude-fable-5 | stop | 11837 |
| Code review audit | claude-fable-5 | claude-opus-4-8 | length | 15017 |
| Constrained creative writing | claude-fable-5 | claude-opus-4-8 | stop | 15041 |
| Model identity verification | claude-fable-5 | claude-opus-4-8 | stop | 11218 |
| Route trace probing | claude-fable-5 | claude-fable-5 | stop | 15343 |
This data proves the gateway frequently falls back to Opus 4.8 even when clients explicitly request Fable 5, with no transparent signal embedded in the output text to notify downstream consumers of the model swap.
5. Critical Caveat: We Cannot Confirm Intentional Downgrade Behavior
The consistent mismatch between requested Fable 5 and returned Opus 4.8 does not definitively prove the gateway implements intentional automatic downgrade logic. Several plausible root causes exist for this behavior:
- Temporary Fable 5 backend capacity throttling triggering fallback routing to Opus 4.8
- Unpublished tiered traffic priority rules within the API gateway’s load balancing layer
- Misconfigured backend pool mapping in the gateway’s routing table
- Dynamic capacity scheduling where Fable 5 resources are deprioritized during peak load
No embedded metadata, response headers, or textual output from the model provides verifiable proof of intentional downgrade logic. Developers cannot rely on self-reported model identity claims generated by the LLM itself to audit routing fidelity—only the gateway’s official returned_model response field constitutes authoritative source of truth.
6. Limitations of LLM Self-Reported Identity Claims
A dedicated test task prompted the model to disclose whether the gateway had substituted a lower-tier model variant. The response payload returned null values for all audit flags related to backend routing visibility:
LLMs lack access to gateway internal routing telemetry, load balancer rules, or upstream backend allocation logs. Any textual self-reporting about model substitution is speculative and untrustworthy for production auditing. Valid routing audits require cross-referencing four independent data streams:
- The official
modelfield in the chat completion response payload - Raw gateway request access logs
- Token usage billing and metering records
- Unmodified upstream provider envelope metadata
7. Task-Specific Capability Observations (Limited Sample Caveat)
While the small test set prevents universal ranking conclusions, targeted task outputs reveal nuanced capability differences that must be contextualized against routing inconsistency risks:
7.1 Static Code Bug Detection Task
A Python snippet containing an edge-case initialization flaw with all-negative input arrays was submitted to all three models:
- Fable 5 successfully identified the root initialization bug, but truncated its full explanation early due to
max_tokensconstraints (finish_reason: length) - Opus 4.8 detected the identical flaw and supplemented comprehensive edge-case coverage for empty arrays, all-negative sequences, and value magnitude bounds, completing its full analysis within token limits (finish_reason: stop)
- Sonnet 5 produced incomplete analysis with truncated output on this workload
This result does not confirm Opus 4.8 universally outperforms Fable 5; it only demonstrates Opus 4.8 handles constrained token budgets more effectively for code audit tasks.
7.2 Multi-Step Mathematical Reasoning Task
All three models derived the correct final numerical answer to a sequential arithmetic logic problem, but Fable 5 consistently hit token limits mid-derivation, triggering a length finish reason, while Opus 4.8 and Sonnet 5 completed full step-by-step breakdowns with stop termination. This highlights that fixed max_tokens configuration disproportionately limits Fable 5’s output completeness for long-chain reasoning workflows.
7.3 Sonnet 5 Edge Case: Empty Payload Output
One out of five Sonnet 5 test requests returned an entirely blank content field with a tool_calls finish reason. The HTTP 200 status code masked the unusable empty output, illustrating that successful HTTP status codes alone are insufficient validation for production API calls. Mandatory post-request validation checks must include:
- Confirm
contentstring is non-empty - Verify no premature
lengthfinish reason truncates critical output - Cross-check
returned_modelmatches the requested target ID
8. Standardized API Audit Logging Framework
To eliminate blind spots around model routing and attribution, all LLM client integrations must implement structured logging capturing the following mandatory fields for every request:
- Timestamp of request initiation
requested_model: Explicit model ID submitted by the client- Full request prompt payload metadata
response_id: Unique gateway-generated request identifierreturned_model: Model ID from completion response bodyfinish_reason: Termination trigger classification- Boolean flag for empty
contentpayload - Total input & output token consumption
- Round-trip end-to-end latency in milliseconds
Minimal Python Logging Implementation Snippet
Without capturing the pairing of requested_model and returned_model, aggregated benchmark datasets will contain contaminated samples where the backend silently swapped model variants mid-request.
9. Key Conclusions & Production Best Practices
- Fable 5 is functionally usable for general workloads, but the test dataset provides no statistically valid evidence that it outperforms Opus 4.8 across all tasks; routing inconsistency is a far more urgent engineering concern than subjective output quality gaps.
- HTTP 200 success status is a low-barrier health check and cannot be treated as full request validation. Teams must implement layered post-call validation checking content completeness, finish reason, and model ID matching.
- Any informal cross-model performance ranking run via third-party API gateways is unreliable without strict
returned_modelauditing, as silent fallback routing contaminates all capability and cost metrics. - LLM self-reported textual claims about model substitution or downgrade logic are non-authoritative; only gateway response metadata and raw access logs serve as trusted audit sources.
For engineering teams running production workloads against Claude model variants via compatible API gateways: always build structured model routing audit logging before conducting comparative performance testing, and treat mismatched returned_model values as critical service anomalies requiring immediate gateway configuration review.




