JoyConf 2026 is back. Content Confidence. Human Connection. Save your spot!

Header key casing change for HTTP/2 compatibility

Books and Storyblok Logo

Starting 2025-12-08 10:00 UTC, 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-12-08 10:00 UTC to avoid any unexpected behavior.