send-request

star 1.1k

Send HTTP requests with automatic configuration and authentication. Use when testing APIs, webhooks, or any HTTP endpoint.

Dicklesworthstone By Dicklesworthstone schedule Updated 2/5/2026

name: send-request description: Send HTTP requests with automatic configuration and authentication. Use when testing APIs, webhooks, or any HTTP endpoint.

Send Request Skill

Sends HTTP requests with:

  • Config-based: baseUrl, auth, headers (from .pi-super-curl/config.json)
  • Named endpoints: Quick access via @endpoint-name
  • Template variables: {{uuid}}, {{uuidv7}}, {{env.VAR}}, {{timestamp}}
  • JWT auth: Auto-generates tokens with configurable payload
  • Env resolution: $VAR syntax for secrets in config

Usage

Run the send-request.cjs script with request parameters:

# First, find the script path (use -L to follow symlinks)
SCRIPT=$(find -L ~/.pi/agent/skills -name "send-request.cjs" 2>/dev/null | head -1)

# Then use it
node "$SCRIPT" <METHOD> "<URL>" [options] 2>&1

Parameters:

  • METHOD: GET, POST, PUT, PATCH, DELETE
  • URL: Full URL or @endpoint-name from config
  • --body '{"key": "value"}': Request body (JSON, supports templates)
  • --header 'Name: Value': Custom header (repeatable)
  • --save: Save response to ~/Desktop/api-responses/
  • --stream: Stream SSE responses

Examples:

# Simple GET request
node "$SCRIPT" GET "https://httpbin.org/get" 2>&1

# POST with JSON body and templates
node "$SCRIPT" POST "@chat" --body '{"id": "{{uuidv7}}", "user": "{{env.USER_ID}}"}' 2>&1

# Named endpoint from config
node "$SCRIPT" GET "@health" 2>&1

# With custom header
node "$SCRIPT" GET "https://api.example.com/data" --header "X-Custom: value" 2>&1

Configuration

The script reads .pi-super-curl/config.json from the current directory (walking up) or home directory:

{
  "baseUrl": "$API_BASE_URL",
  "envFile": ".env",
  "auth": {
    "type": "jwt",
    "secret": "$JWT_SECRET",
    "algorithm": "HS256",
    "expiresIn": 3600,
    "payload": {
      "user_id": "{{env.USER_ID}}",
      "role": "authenticated"
    }
  },
  "headers": {
    "Content-Type": "application/json",
    "X-Org-Id": "{{env.ORG_ID}}"
  },
  "endpoints": [
    {
      "name": "health",
      "url": "/health",
      "method": "GET"
    },
    {
      "name": "chat",
      "url": "/api/chat",
      "method": "POST",
      "defaultBody": {
        "chat_id": "{{uuidv7}}",
        "workspace_id": "{{env.WORKSPACE_ID}}"
      }
    }
  ]
}

Template Variables

Template Description
{{uuid}}, {{uuidv4}} Random UUID v4
{{uuidv7}} Time-ordered UUID v7
{{timestamp}} Unix timestamp (seconds)
{{timestamp_ms}} Unix timestamp (ms)
{{date}} ISO date string
{{env.VAR}} or {{$VAR}} Environment variables

Environment Resolution

Two syntaxes for different contexts:

Syntax Use in Example
$VAR baseUrl, auth.secret, auth.token "baseUrl": "$API_URL"
{{env.VAR}} URLs, headers, body, JWT payload "user_id": "{{env.USER_ID}}"

Authentication Types

Bearer Token

{"type": "bearer", "token": "$MY_API_TOKEN"}

JWT (auto-generated)

{
  "type": "jwt",
  "secret": "$JWT_SECRET",
  "algorithm": "HS256",
  "expiresIn": 3600,
  "payload": {
    "user_id": "{{env.USER_ID}}",
    "email": "{{env.EMAIL}}",
    "role": "authenticated"
  }
}

API Key

{"type": "api-key", "token": "$API_KEY", "header": "X-API-Key"}

Basic Auth

{"type": "basic", "username": "$USER", "password": "$PASS"}

Output

The script outputs:

  1. [INFO] lines to stderr (method, URL, timing)
  2. Response body to stdout
  3. Raw response saved to /tmp/generation-output.txt (for /scurl-log)
  4. [INFO] Request completed successfully on success
  5. [ERROR] on failure
Install via CLI
npx skills add https://github.com/Dicklesworthstone/pi_agent_rust --skill send-request
Repository Details
star Stars 1,144
call_split Forks 137
navigation Branch main
article Path SKILL.md
More from Creator
Dicklesworthstone
Dicklesworthstone Explore all skills →