HTTPoison v1.5.0 HTTPoison.Request

Request properties:

  • :method - HTTP method as an atom (:get, :head, :post, :put, :delete, etc.)
  • :url - target url as a binary string or char list
  • :body - request body. See more below
  • :headers - HTTP headers as an orddict (e.g., [{"Accept", "application/json"}])
  • :options - Keyword list of options
  • :params - Query parameters as a map, keyword, or orddict


  • binary, char list or an iolist
  • {:form, [{K, V}, ...]} - send a form url encoded
  • {:file, "/path/to/file"} - send a file
  • {:stream, enumerable} - lazily send a stream of binaries/charlists


  • :timeout - timeout for establishing a TCP or SSL connection, in milliseconds. Default is 8000
  • :recv_timeout - timeout for receiving an HTTP response from the socket. Default is 5000
  • :stream_to - a PID to stream the response to
  • :async - if given :once, will only stream one message at a time, requires call to stream_next
  • :proxy - a proxy to be used for the request; it can be a regular url or a {Host, Port} tuple, or a {:socks5, ProxyHost, ProxyPort} tuple
  • :proxy_auth - proxy authentication {User, Password} tuple
  • :socks5_user- socks5 username
  • :socks5_pass- socks5 password
  • :ssl - SSL options supported by the ssl erlang module
  • :follow_redirect - a boolean that causes redirects to be followed
  • :max_redirect - an integer denoting the maximum number of redirects to follow
  • :params - an enumerable consisting of two-item tuples that will be appended to the url as query string parameters
  • :max_body_length - a non-negative integer denoting the max response body length. See :hackney.body/2

    Timeouts can be an integer or :infinity



body ::
  binary |
  charlist |
  iodata |
  {:form, [{atom, any}]} |
  {:file, binary} |
headers ::
  [{atom, binary}] |
  [{binary, binary}] |
  %{optional(binary) => binary} |
method :: :get | :post | :put | :patch | :delete | :options | :head
options :: keyword | any
params :: map | keyword | [{binary, binary}] | any
t :: %HTTPoison.Request{body: body, headers: headers, method: method, options: options, params: params, url: binary}
url :: binary | any