From ddecd5226b0baf1f07c2d010cfd37a85574515e6 Mon Sep 17 00:00:00 2001 From: OpenClaw Date: Fri, 20 Mar 2026 08:38:52 +0700 Subject: [PATCH] fix(openrouter): use correct X-Title header for app attribution OpenRouter requires 'X-Title' header for app attribution, not 'X-OpenRouter-Title'. The incorrect header name caused OpenRouter to not recognize requests as coming from OpenClaw, resulting in free models (e.g., xiaomi/mimo-v2-pro) being charged at full price. Changes: - Replace 'X-OpenRouter-Title' with 'X-Title' per OpenRouter docs - Remove unnecessary 'X-OpenRouter-Categories' header - Update tests to match corrected headers Reference: https://openrouter.ai/docs/app-attribution Fixes #50738 --- src/agents/provider-attribution.test.ts | 6 ++---- src/agents/provider-attribution.ts | 3 +-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/agents/provider-attribution.test.ts b/src/agents/provider-attribution.test.ts index 04c7d040b17..aaf4247df12 100644 --- a/src/agents/provider-attribution.test.ts +++ b/src/agents/provider-attribution.test.ts @@ -34,8 +34,7 @@ describe("provider attribution", () => { version: "2026.3.14", headers: { "HTTP-Referer": "https://openclaw.ai", - "X-OpenRouter-Title": "OpenClaw", - "X-OpenRouter-Categories": "cli-agent", + "X-Title": "OpenClaw", }, }); }); @@ -47,8 +46,7 @@ describe("provider attribution", () => { }), ).toEqual({ "HTTP-Referer": "https://openclaw.ai", - "X-OpenRouter-Title": "OpenClaw", - "X-OpenRouter-Categories": "cli-agent", + "X-Title": "OpenClaw", }); }); diff --git a/src/agents/provider-attribution.ts b/src/agents/provider-attribution.ts index f1111a8e5bd..a26f985bcc6 100644 --- a/src/agents/provider-attribution.ts +++ b/src/agents/provider-attribution.ts @@ -54,8 +54,7 @@ function buildOpenRouterAttributionPolicy( ...identity, headers: { "HTTP-Referer": "https://openclaw.ai", - "X-OpenRouter-Title": identity.product, - "X-OpenRouter-Categories": "cli-agent", + "X-Title": identity.product, }, }; }