From cbadd70e11417cc9aa8efdc0c7d2b248bab90e62 Mon Sep 17 00:00:00 2001 From: Tien Nguyen Date: Thu, 18 Jun 2026 10:50:08 +0700 Subject: [PATCH] feat(merkl): route Merkl rewards API through the proxy Point MERKL_API_BASE at proxy.kyberswap.com/merkl/v4; path and query are forwarded untouched, so every endpoint works unchanged. --- apps/kyberswap-interface/src/services/rewardMerkl.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/kyberswap-interface/src/services/rewardMerkl.ts b/apps/kyberswap-interface/src/services/rewardMerkl.ts index 91d6fbee38..f585031b6e 100644 --- a/apps/kyberswap-interface/src/services/rewardMerkl.ts +++ b/apps/kyberswap-interface/src/services/rewardMerkl.ts @@ -65,7 +65,7 @@ interface MerklRewardsParams { chainId: string } -const MERKL_API_BASE = 'https://api.merkl.xyz/v4' +const MERKL_API_BASE = 'https://proxy.kyberswap.com/merkl/v4' // Tracks whether Merkl's batched (multi-chain) endpoint is usable in this session. // Only flipped to 'unsupported' when Merkl returns a permanent error (4xx other than 429), @@ -165,8 +165,8 @@ const rewardMerklApi = createApi({ // 60s `refetchOnMountOrArgChange` from createApi is overridden at the hook call site to // match the longer keepUnusedDataFor. // - // Uses raw `fetch` (not `fetchBaseQuery`) so the request stays a CORS-simple GET — Merkl's - // server doesn't accept the preflight that `fetchBaseQuery`'s default headers trigger. + // Uses raw `fetch` (not `fetchBaseQuery`) so the request stays a CORS-simple GET with no + // custom headers — avoids a CORS preflight the proxy doesn't answer. getMerklChains: builder.query({ async queryFn() { const controller = new AbortController()