HTTPoison.Request (HTTPoison v1.8.1) View Source

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, can cause a request to return a MaybeRedirect struct. See: HTTPoison.MaybeRedirect
  • :max_redirect - an integer denoting the maximum number of redirects to follow. Default is 5
  • :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

Link to this section Summary

Link to this section Types


body() ::
  | charlist()
  | iodata()
  | {:form, [{atom(), any()}]}
  | {:file, binary()}
  | any()


headers() ::
  [{atom(), binary()}]
  | [{binary(), binary()}]
  | %{required(binary()) => binary()}
  | any()


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()