simple-http

Make HTTP requests (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS) with custom headers, automatic retries, and graceful error handling. Use when the user needs to call an API, fetch a URL, send webhooks, or make any HTTP request without external dependencies.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "simple-http" with this command: npx skills add stephen-standridge/simplehttpskill

Simple HTTP Skill

Make HTTP requests using only Node.js built-in modules. Supports all standard methods, arbitrary headers, automatic retries with exponential backoff, and never throws on failure — always resolves with an inspectable response object.

Required Inputs

  • url (string): Fully qualified URL to request.
  • method (string, optional): HTTP method. Default GET.
  • headers (object, optional): Request headers.
  • body (string | Buffer | object, optional): Request body. Objects are auto-serialized to JSON.
  • maxRetries (number, optional): Retry attempts for transient failures. Default 3.
  • timeout (number, optional): Socket timeout in ms. Default 30000.

Step-by-Step Workflow

  1. Import the client from src/http-client.js:
const { HttpClient } = require("./src/http-client");
  1. Create a client instance (optionally set default headers shared across calls):
const client = new HttpClient({
  defaultHeaders: { Authorization: "Bearer <token>" },
  maxRetries: 3,
});
  1. Make requests using convenience methods or the generic request():
// GET
const resp = await client.get("https://api.example.com/items");

// POST with JSON body
const resp = await client.post("https://api.example.com/items", {
  body: { name: "widget" },
});

// PUT with custom headers
const resp = await client.put("https://api.example.com/items/1", {
  headers: { "X-Request-Id": "abc123" },
  body: { name: "updated" },
});

// DELETE
const resp = await client.delete("https://api.example.com/items/1");

// Generic form — any method
const resp = await client.request("PATCH", "https://api.example.com/items/1", {
  body: { qty: 5 },
});
  1. Inspect the response:
if (resp.ok) {
  console.log(resp.body);      // parsed JSON or raw string
  console.log(resp.status);    // e.g. 200
  console.log(resp.headers);   // response headers object
} else {
  console.log(resp.error);     // human-readable error (null if HTTP error with status)
  console.log(resp.status);    // HTTP status code or null for network errors
}

Output Format

Every call resolves with an object containing:

KeyTypeDescription
okbooleantrue if status is 2xx
statusnumber | nullHTTP status code; null for network-level errors
headersobjectResponse headers
bodyanyParsed JSON (if content-type is JSON), else string
errorstring | nullError description on failure; null on success

Error Handling & Retry Behavior

  • Retried automatically: Connection errors, timeouts, and HTTP 429 / 5xx responses.
  • Not retried: 4xx errors (except 429) — returned immediately.
  • Backoff: Exponential with jitter (base 500ms, capped at 30s).
  • Graceful failure: The client never throws. After exhausting retries, it resolves with the last error response so the caller can always inspect resp.ok and resp.error.

Configuration Options

All options can be set at the client level (constructor) and overridden per-request:

OptionDefaultDescription
defaultHeaders{}Headers applied to every request
maxRetries3Max retry attempts
timeout30000Socket timeout in ms
backoffBase500Base delay (ms) for exponential backoff
backoffMax30000Maximum backoff delay cap (ms)

Dependencies

None — uses only Node.js built-in modules (http, https, url).

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Musicbrainz Importer

Look up and add music metadata on MusicBrainz. Use when asked to check if an artist, album, or release exists on MusicBrainz, find MusicBrainz entries linked...

Registry SourceRecently Updated
General

AI Product Manager

OpenClaw-first AI product manager for turning analytics, revenue, crash, store, and feedback signals into execution-ready proposals and backlog work.

Registry SourceRecently Updated
General

Startup Verifier

Проверяет стартапы по 14 критериям для адаптации на российский рынок и выдает вердикт: GREEN, YELLOW или RED.

Registry SourceRecently Updated
General

Air Asia

AirAsia is a Southeast Asian ultra-low-cost carrier carrying 60M+ passengers yearly with low fares, ancillary revenue, and a point-to-point Airbus A320 fleet.

Registry SourceRecently Updated