finds.dev← search

// the find

edgurgel/httpoison

★ 2,286 · Elixir · MIT · updated Jul 2026

Yet Another HTTP client for Elixir powered by hackney

HTTPoison is a thin Elixir wrapper around hackney (the Erlang HTTP client), giving you a pattern-matchable %HTTPoison.Response{}/%HTTPoison.Error{} struct instead of raw hackney tuples. It's for anyone who needs an HTTP client in an Elixir app and wants something more ergonomic than calling hackney directly, especially if they're building a typed API client via HTTPoison.Base.

Pattern-matchable response structs make error handling in case statements clean. HTTPoison.Base gives you real hooks (process_request_url, process_response_body, etc.) to build a GitHub-style API client without writing your own HTTP plumbing. Connection pooling is exposed directly through hackney's pool options, including per-request pool selection and disabling pooling entirely. Multipart request and response handling is built in, including streaming a file from memory without touching disk.

You're one layer removed from hackney, so any hackney bug or config quirk (like the SSL merge-vs-override change that forced the 2.x major bump) leaks straight through to you. There's no JSON decoding, retry logic, or telemetry out of the box — you write that yourself via HTTPoison.Base, which is more boilerplate than what Req (the newer, more idiomatic Elixir HTTP client) gives for free. 3.x requires Erlang/OTP 27+ and Elixir 1.17+, which will block adoption on any team not current on their runtime. Async streaming warns you it 'can flood a receiver in messages' by default — the backpressure-safe async: :once mode is opt-in, not the default, which is an easy footgun for newcomers.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →