Asynchronous parallel HTTP/2 and HTTP/1.1 client built on the Amp concurrency framework


Build Status CoverageStatus License

This package provides an asynchronous HTTP client for PHP based on Amp. Its API simplifies standards-compliant HTTP resource traversal and RESTful web service consumption without obscuring the underlying protocol. The library manually implements HTTP over TCP sockets; as such it has no dependency on ext/curl.


  • Requests asynchronously for full single-threaded concurrency
  • Pools persistent keep-alive connections
  • Transparently follows redirects
  • Decodes gzipped entity bodies
  • Exposes headers and message data
  • Streams entity bodies for memory management with large transfers
  • Supports all standard and custom HTTP method verbs
  • Simplifies HTTP form submissions
  • Implements secure-by-default TLS (https://)
  • Supports cookies and sessions
  • Functions seamlessly behind HTTP proxies

Project Goals

  • Model all code as closely as possible to the relevant HTTP protocol RFCs
  • Implement an HTTP/1.1 client built on socket streams with no libcurl dependency


This package can be installed as a Composer dependency.

composer require amphp/http-client


Documentation is bundled within this repository in the docs directory.


More extensive code examples reside in the examples directory.


amphp/http-client follows the semver semantic versioning specification like all other amphp packages.

Prior to version 4.0, this package was named amphp/artax. While older tags also exist in this repository, amphp/artax should be used as package name for versions prior to 4.0.

Version Bug Fixes Until Security Fixes Until
4.x Under development Under development
3.x Supported, no end date, yet. Supported, no end date, yet.
2.x Unmaintained. Unmaintained.
1.x Unmaintained. Unmaintained.


If you discover any security related issues, please email instead of using the issue tracker.


The MIT License (MIT). Please see LICENSE for more information.