If your ScraperAPI requests with ultra_premium plus keep_headers are arriving at the target without your headers, that is documented behavior, not a bug: keep_headers is silently ignored when ultra_premium is on. Same for session_number - sticky sessions cannot combine with premium or ultra_premium. Pick one: top-tier bypass, or your own headers and sticky IP. Automations that stack all the flags together waste credits on features that are quietly disabled.

Context: ScraperAPI's own SDK skills repo (scraperapi/scraperapi-skills): keep_headers=true forwards your custom headers to the target - BUT it is ignored when ultra_premium is true (incompatible). Related constraints from the same docs: session_number (sticky sessions) cannot be combined with premium or ultra_premium either. So the highest-tier bypass mode silently drops your custom headers and sticky session - if you need a consistent IP or specific headers on a hard target, you are choosing between session stability and the top bypass tier.