From content strategy to code, JoyConf brings the Storyblok community together - Register Now!

  • Header key casing change for HTTP/2 compatibility

    Changes in:app


    Starting 2025-11-26, all HTTP response headers returned by the Storyblok API will use lowercase field names (e.g., content-type instead of Content-Type). This aligns with the HTTP/2 specification (RFC 7540 §8.1.2 (opens in a new window)), which requires all header field names to be lowercase.

    What this means for you
    Most HTTP client libraries (e.g. requests in Python, axios in JavaScript, Faraday or Net::HTTP in Ruby, net/http in Go, and HttpClient or OkHttp in Java) already handle header field names case-insensitively. These implementations will continue to work without any changes.If your code accesses response headers using a case-sensitive map or text-based parser, you should verify that it does not rely on the previous capitalization.

    # Check how your client or implementation handles different cases.
    # They should all return the same value.
    puts headers["content-type"]
    puts headers["Content-Type"]
    
    # If not, read both versions to stay compatible with the upcoming change.
    value = headers["content-type"] || headers["Content-Type"]

    Why we’re doing this
    This change ensures full HTTP/2 compliance, simplifies header handling across different transports, and improves interoperability with proxies, CDNs, and future protocol versions.We recommend verifying your API integrations before 2025-11-26 to avoid any unexpected behavior.