🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

HTTP Request Builder

by @derick001

Build, test, and save HTTP requests from the CLI with custom headers, auth, body, cookies, templates, interactive mode, and request history tracking.

Versionv1.0.0
Downloads828
Installs3
TERMINAL
clawhub install http-request-builder

πŸ“– About This Skill


name: http-request-builder description: Build and test HTTP requests with CLI interface: headers, auth, body, cookies, with history and templates. version: 1.0.0 author: skill-factory metadata: openclaw: requires: bins: - python3 python: - requests

HTTP Request Builder

What This Does

A CLI tool to build, test, and save HTTP requests. Send requests with custom headers, authentication, body, and cookies. Save requests as templates for reuse and maintain a history of your HTTP calls.

Key features:

  • Send HTTP requests with GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS methods
  • Set custom headers with key-value pairs
  • Add authentication (Basic Auth, Bearer tokens)
  • Include request body (JSON, form data, raw text)
  • Manage cookies for requests
  • Save requests as templates (JSON files) for reuse
  • Load and execute saved templates
  • Interactive mode for building requests step-by-step
  • Command-line mode for scripting and automation
  • Request history tracks your recent HTTP calls
  • When To Use

  • You need to test REST API endpoints quickly from the terminal
  • You want to save and reuse complex API requests
  • You prefer a CLI tool over GUI applications like Postman
  • You need to automate API testing in scripts
  • You want to share API request configurations with team members
  • You're debugging API issues and need to replay requests
  • Usage

    Basic commands:

    # Send a GET request
    python3 scripts/main.py get https://api.example.com/data

    Send a POST request with JSON body

    python3 scripts/main.py post https://api.example.com/api \ --header "Content-Type: application/json" \ --body '{"name": "test", "value": 123}'

    Send with Basic authentication

    python3 scripts/main.py get https://api.example.com/secure \ --auth basic --username admin --password secret

    Send with Bearer token

    python3 scripts/main.py get https://api.example.com/secure \ --auth bearer --token "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"

    Save request as template

    python3 scripts/main.py post https://api.example.com/api \ --header "Content-Type: application/json" \ --body '{"name": "test"}' \ --save-template my-request

    Load and execute template

    python3 scripts/main.py template my-request

    Interactive mode

    python3 scripts/main.py interactive

    View request history

    python3 scripts/main.py history

    Clear history

    python3 scripts/main.py history --clear

    Examples

    Example 1: Simple GET request

    python3 scripts/main.py get https://jsonplaceholder.typicode.com/posts/1
    

    Output:

    Response Status: 200 OK
    Response Headers:
      content-type: application/json; charset=utf-8
      ...

    Response Body: { "userId": 1, "id": 1, "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto" }

    Example 2: POST request with JSON body and headers

    python3 scripts/main.py post https://jsonplaceholder.typicode.com/posts \
      --header "Content-Type: application/json" \
      --header "X-API-Key: my-secret-key" \
      --body '{
        "title": "foo",
        "body": "bar",
        "userId": 1
      }'
    

    Example 3: Save and reuse request template

    # Save template
    python3 scripts/main.py post https://api.example.com/users \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer token123" \
      --body '{"name": "New User"}' \
      --save-template create-user

    Use template later

    python3 scripts/main.py template create-user

    List all templates

    python3 scripts/main.py templates

    Example 4: Interactive mode

    python3 scripts/main.py interactive
    

    Interactive mode guides you through: 1. HTTP method selection 2. URL input 3. Headers configuration 4. Authentication setup 5. Request body input 6. Send request and view results

    Requirements

  • Python 3.x
  • requests library (installed automatically or via pip)
  • Install missing dependencies:

    pip3 install requests
    

    Limitations

  • This is a CLI tool, not a GUI application
  • History and templates stored in simple JSON files in ~/.http-request-builder/
  • Limited authentication support (Basic, Bearer tokens only)
  • No OAuth, API key in header, or complex authentication flows
  • No cookie persistence across sessions (cookies only for single request)
  • No proxy configuration support
  • No SSL certificate verification controls
  • No support for websockets or streaming responses
  • No advanced features like response validation or testing assertions
  • Request history limited to 100 entries by default
  • Templates are simple JSON files without encryption
  • No built-in support for environment variables in templates
  • Performance limited by Python requests library
  • Large response bodies may be truncated for display
  • No support for multipart form data file uploads
  • No built-in rate limiting or retry logic
  • No support for HTTP/2 or HTTP/3 protocols
  • Directory Structure

    The tool stores data in ~/.http-request-builder/:

  • templates/ - Saved request templates (JSON files)
  • history.json - Request history log
  • config.json - Configuration (if any)
  • Error Handling

  • Invalid URLs return helpful error messages
  • Network timeouts after 30 seconds
  • JSON parsing errors show the problematic content
  • Missing templates indicate which template wasn't found
  • Authentication failures suggest correct format
  • Contributing

    This is a skill built by the Skill Factory. Issues and improvements should be reported through the OpenClaw project.

    ⚑ When to Use

    TriggerAction
    - You want to save and reuse complex API requests
    - You prefer a CLI tool over GUI applications like Postman
    - You need to automate API testing in scripts
    - You want to share API request configurations with team members
    - You're debugging API issues and need to replay requests

    πŸ’‘ Examples

    Example 1: Simple GET request

    python3 scripts/main.py get https://jsonplaceholder.typicode.com/posts/1
    

    Output:

    Response Status: 200 OK
    Response Headers:
      content-type: application/json; charset=utf-8
      ...

    Response Body: { "userId": 1, "id": 1, "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto" }

    Example 2: POST request with JSON body and headers

    python3 scripts/main.py post https://jsonplaceholder.typicode.com/posts \
      --header "Content-Type: application/json" \
      --header "X-API-Key: my-secret-key" \
      --body '{
        "title": "foo",
        "body": "bar",
        "userId": 1
      }'
    

    Example 3: Save and reuse request template

    # Save template
    python3 scripts/main.py post https://api.example.com/users \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer token123" \
      --body '{"name": "New User"}' \
      --save-template create-user

    Use template later

    python3 scripts/main.py template create-user

    List all templates

    python3 scripts/main.py templates

    Example 4: Interactive mode

    python3 scripts/main.py interactive
    

    Interactive mode guides you through: 1. HTTP method selection 2. URL input 3. Headers configuration 4. Authentication setup 5. Request body input 6. Send request and view results