Node.js HTTP client that use Undici client
npm install @openally/httpie
A modern and light Node.js http client 🐢🚀.
The package is inspired by lukeed httpie (The use is relatively similar). This package use new Node.js http client undici under the hood.
- Automatically parse based on the content-type.
- Automatically decompress based on the content-encoding.
- Includes aliases for common HTTP verbs: get, post, put, patch, and del.
- Able to automatically detect domains and paths to assign the right Agent (use a LRU cache to avoid repetitive computation).
- Allows to use an accurate rate-limiter like p-ratelimit with the limit option.
- Safe error handling with Rust-like Result.
Thanks to undici:
- Support redirections or retry using interceptors.
- Implement high-level API for undici stream and pipeline method.
- High performance (see benchmarks).
- Work well with newest Node.js API AbortController to cancel http request.
Light with seriously maintained dependencies:

This package is available in the Node Package Repository and can be easily installed with npm or yarn.
``bash`
$ npm i @openally/httpieor
$ yarn add @openally/httpie
This client is very similar to lukeed httpie http client.
`js
import * as httpie from "@openally/httpie";
try {
const { data } = await httpie.get("https://jsonplaceholder.typicode.com/posts");
console.log(data);
const response = await httpie.post("https://jsonplaceholder.typicode.com/posts", {
body: {
title: "foo",
body: "bar",
userId: 1
}
});
console.log(response.statusCode);
console.log(response.statusMessage);
console.log(response.data);
}
catch (error) {
console.log(error.message);
console.log(error.statusCode);
console.log(error.headers);
console.log(error.data);
}
`
You can also use the safe prefix API to get a Promise
`ts
import * as httpie from "@openally/httpie";
const response = (await httpie.safePost("https://jsonplaceholder.typicode.com/posts", {
body: {
title: "foo",
body: "bar",
userId: 1
}
}))
.map((response) => response.data)
.mapErr((error) => new Error("a message here!", { cause: error.data }));
.unwrap();
``
> [!TIP]
> More examples available in the root folder examples.
- Request API
- Work and manage Agents
Read the error documentation.

Thanks goes to these wonderful people (emoji key):
Gentilhomme 💻 📖 👀 🛡️ 🐛 | PierreDemailly 💻 ⚠️ | Yefis 💻 🐛 |