ConfigsMay 25, 2026·2 min read

Got — Human-Friendly HTTP Client for Node.js

Got is a lightweight, feature-rich HTTP client for Node.js with built-in retry logic, pagination, caching, and hooks for composable request pipelines.

Agent ready

This asset can be read and installed directly by agents

TokRepo exposes a universal CLI command, install contract, metadata JSON, adapter-aware plan, and raw content links so agents can judge fit, risk, and next actions.

Stage only · 27/100Stage only
Agent surface
Any MCP/CLI agent
Kind
CLI Tool
Install
Single
Trust
Trust: Established
Entrypoint
Got Overview
Universal CLI install command
npx tokrepo install 25accf22-5837-11f1-9bc6-00163e2b0d79

Introduction

Got is a Node.js HTTP client designed as a modern, developer-friendly alternative to the built-in http module. It covers common needs like automatic retries, redirect following, streaming, and JSON parsing with a clean promise-based API.

What Got Does

  • Sends HTTP requests with a simple promise and stream interface
  • Retries failed requests automatically with configurable backoff
  • Follows redirects and handles cookies transparently
  • Supports pagination through built-in link-header traversal
  • Provides lifecycle hooks for request and response transformation

Architecture Overview

Got wraps Node.js native http/https modules and adds a layered middleware pipeline. Each request passes through normalizers, hooks (beforeRequest, afterResponse, beforeRetry), and response handlers. Options cascade from defaults to instance-level to per-request, and the client can be extended with got.extend() to create pre-configured instances.

Self-Hosting & Configuration

  • Install via npm: npm install got
  • ESM-only since v12; use import got from "got"
  • Create custom instances with got.extend({ prefixUrl, headers })
  • Configure retry count, methods, and status codes via the retry option
  • Set timeouts per phase (lookup, connect, socket, response) for fine-grained control

Key Features

  • Automatic retries with exponential backoff on network errors and 5xx responses
  • First-class TypeScript types ship with the package
  • Stream and promise APIs available for every request
  • RFC-compliant caching via a pluggable cache adapter
  • Hooks system enables logging, auth token injection, and response transforms

Comparison with Similar Tools

  • Axios — Works in both browser and Node; Got is Node-only but lighter and ESM-native
  • node-fetch — Minimal Fetch API polyfill; Got adds retries, hooks, and pagination
  • undici — Lower-level HTTP/1.1 client from the Node.js team; faster but less ergonomic
  • ky — Browser-focused Fetch wrapper by the same author; Got is the Node.js counterpart

FAQ

Q: Does Got work in the browser? A: No. Got is Node.js-only. For browsers, use ky or native Fetch.

Q: How do I migrate from Axios to Got? A: Replace axios.get(url) with got(url).json(). Most options map directly; see the migration guide in the repo.

Q: Can I use Got with HTTP/2? A: Yes. Pass http2: true in the options to enable HTTP/2 with automatic ALPN negotiation.

Q: Is Got actively maintained? A: Yes. The project is maintained by Sindre Sorhus and receives regular releases.

Sources

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets