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), which requires all header field names to be lowercase.

    What this means for you

    Most HTTP client libraries already handle header field names case-insensitively. For example:

    • requests in Python
    • axios or Fetch in JavaScript
    • Faraday or Net::HTTP in Ruby
    • net/http in Go
    • HttpClient or OkHttp in Java
    • Symfony HTTP Client for PHP

    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.