Phoenix Controller: Matching on content-type

index is usally called on a GET request, and setting a content-type header does not make much sense there.

Besides of that, you match on a list that has exactly one element. This is unlikely to be true for any list of headers.

Also I’m seconding @voltone, that you probably want to check for the "accept" header instead and leverage plugs that are already available.