Service tier
How OpenAI service_tier and system_fingerprint are handled on passthrough and translate paths.
Status: Implemented for OpenAI-family paths
OpenAI clients sometimes send service_tier on chat requests and receive system_fingerprint / service_tier on responses. The gateway keeps those fields honest: forward when the wire supports them, never invent them for other dialects.
Behavior
| Field | Direction | Behavior |
|---|---|---|
service_tier |
Request | Parsed into canonical IR; rebuilt on OpenAI egress only. Passthrough JSON keeps the field (model rewrite only). Not sent to Anthropic or Google. |
system_fingerprint |
Response | Forwarded when the upstream returns it (passthrough body or OpenAI serialize). Never invented for other dialects. |
service_tier |
Response | Forwarded when present on OpenAI-shaped upstream responses. |
What this means for operators
- Same-family OpenAI →
openai/openai_compat: clients keep tier and fingerprint behavior from the upstream host. - Cross-family translate (e.g. OpenAI client → Anthropic): request
service_tieris dropped; responses will not invent a fingerprint. - Passthrough never strips fields it does not understand — see Deprecation policy.
Tests
Hermetic coverage:
proxy.TestServiceTierPassthroughOpenAIproxy.TestServiceTierNotInventedOnAnthropicTranslateingress/openai.TestParseServiceTier,egress/openai.TestBuildServiceTier, plus serialize/parse usage tests
Related
- Deprecation policy — translation field drops
- Header matrix — correlation and rate-limit headers