Quester Studio

http

Perform an HTTP request and capture status, body, headers, and timing

Sends an HTTP request. URL, headers, and body support templates.

The previous node’s JSON is available as execute input but is not sent unless you template it into url / headers / body. Typical teaching chain: start → input → http → extract (How flows work).

Need in this nodeUse
Run panel / --input field{{input.username}}
Field from an earlier named node{{nodes.login.body.token}}
In a later extract/json on this responseJMESPath body.id (wire root)
in ×1 http out ×1
Wire in unused unless templated into the request. Multiple outgoing edges (fan-out) share the same output.

Data

FieldTypeDefaultDescription
labelstringOptional UI label
methodenum"GET"GET · POST · PUT · PATCH · DELETE · HEAD · OPTIONS
urlstringrequiredMust resolve to http: or https:
headersobject{}Header name → string (templated)
bodystring | objectOmitted for GET/HEAD at send time

Input / output

Value
Execute inputPrevious node output (not sent unless you template it)
OutputSee below

Output shape

{
  status: number;
  statusText: string;
  headers: Record<string, string>;
  body: unknown;       // parsed JSON, or raw text if not JSON
  text: string;        // raw response body
  request: {
    method: string;
    url: string;
    headers: Record<string, string>;
    body?: string;
  };
  timing: {
    startedAt: number;
    endedAt: number;
    durationMs: number;
  };
  size: number;        // response body byte length
}

Common template paths:

  • {{nodes.login.status}}
  • {{nodes.login.body.id}}
  • {{nodes.login.body.token}}

Examples

GET with env base URL

{
  "id": "profile",
  "type": "http",
  "data": {
    "label": "Profile",
    "method": "GET",
    "url": "{{env.API_BASE}}/users/{{nodes.userId}}",
    "headers": {}
  }
}

POST JSON body

{
  "id": "login",
  "type": "http",
  "data": {
    "label": "Login",
    "method": "POST",
    "url": "{{env.API_BASE}}/users",
    "headers": { "Content-Type": "application/json" },
    "body": "{\"username\": \"{{input.username}}\", \"email\": \"{{input.email}}\"}"
  }
}

Bearer token from secrets

{
  "id": "secure",
  "type": "http",
  "data": {
    "method": "GET",
    "url": "{{env.API_BASE}}/me",
    "headers": {
      "Authorization": "Bearer {{secrets.API_TOKEN}}"
    }
  }
}

Object body (templated after stringify)

{
  "method": "POST",
  "url": "{{env.API_BASE}}/items",
  "headers": { "Content-Type": "application/json" },
  "body": {
    "name": "{{input.name}}",
    "owner": "{{input.username}}"
  }
}

Errors

  • Non-http/https URLs throw at execute time.
  • Network failures throw with a request snapshot attached.

Standalone request files use a similar shape — see Collections & requests.