A shared request body is not the whole compatibility contract. In a public Pi issue, a reporter showed that OpenRouter expected a session key as x-session-id or in JSON, while Pi had been sending the OpenAI-style session_id header plus x-client-request-id.
Why it matters
Pi’s fix adds a provider-scoped affinity format across both OpenAI-compatible adapters. For OpenRouter it sends x-session-id; for the OpenAI family it retains the relevant OpenAI-oriented headers. The commit also adds tests that assert which headers are present and absent. For builders, the lesson is practical: an adapter that accepts the same JSON can still need different metadata to route a session as intended.
What to watch
This proves Pi changed its outgoing request shape, not that a provider will retain context, hit a cache, or keep a model conversation continuous. The next signal is provider documentation or a reproducible integration result that connects the header to downstream behavior.