Store HTTP response in PostgreSQL
The HTTP/1.1 spec says, through RFC-7230, that:


the status code is a 3-digit number, so an int4 or int2 would do.
for the entire header, see 3.2.4, "Field parsing":


  Historically, HTTP has allowed field content with text in the
     ISO-8859-1 charset [ISO-8859-1], supporting other charsets only
     through use of [RFC2047] encoding.  In practice, most HTTP header
     field values use only a subset of the US-ASCII charset [USASCII].
     Newly defined header fields SHOULD limit their field values to
     US-ASCII octets.  A recipient SHOULD treat other octets in field
     content (obs-text) as opaque data.


"opaque" pretty much implies that bytea is the only safe choice, if you want to handle the responses of any HTTP server out there.
The message body is defined as  message-body = *OCTET, so bytea is also pretty much the only type that fits, unless you prefer the large objects storage and API. bytea is limited to 1Gb so you may want to chunk the value across several smaller rows if you target any size. In practice, very large bytea values tend to be unworkable, personally I wouldn't go over 128Mb per row.