Skip to Content
đź›  Buildđź›  Action StepsHTTP Request

HTTP Request

The HTTP Request step calls an API that has no ready-made step in Glow. It sends exactly the method, URL, headers and payload you configure, and nothing else.

DockData · Dev toolsReturnsthe API's response

Reach for it whenever a service you need has no Glow connector yet, or when the connector exists but the endpoint you want is not one of its actions. It also reaches your own systems, provided they are reachable from the internet: an endpoint on a private network or a localhost address is refused.

Add it from Tools → Data → Dev tools on the canvas dock. Searching the Apps panel for “HTTP” turns up a separate connector of the same name. This page describes the built-in step under Tools, which is the one to use.


How it fits in a workflow


Setting it up

Select the Method

Choose the HTTP method required by the target API:

  • GET: Retrieve data from an API
  • POST: Create a new resource or submit data
  • PUT / PATCH: Update an existing resource
  • DELETE: Remove a resource
  • HEAD / OPTIONS: Inspect headers or verify CORS capabilities without downloading the body

Skip the form: Import cURL

Most API documentation provides a curl command. Click Import cURL, paste the command, and Glow automatically configures the method, URL, query parameters, headers, authentication, and request body.

The Import cURL dialog with a POST command pasted in, showing its headers and JSON body across eight numbered lines.
Paste the command as the API's documentation gives it to you. Glow reads the method, URL, headers and body out of it.

Examples to Copy & Import

1. POST Request with JSON Body and Bearer Auth:

curl -X POST https://api.getglow.ai/v1/leads \ -H "Authorization: Bearer {{ $secret.API_KEY }}" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "email": "[email protected]", "name": "John Doe" }'

2. GET Request with Query Parameters and Custom Header:

curl -X GET "https://api.getglow.ai/v1/customers?status=active&limit=50" \ -H "X-API-Key: {{ $secret.SERVICE_KEY }}" \ -H "Accept: application/json"

Importing a cURL command overwrites whatever is currently configured on the step. Import the cURL snippet first, then map any dynamic {{}} variables.


What it passes on

The response is stored under ret. Glow automatically detects the response content type:

Default JSON Output

Parsed JSON sits directly under ret:

{ "ret": { "id": 1042, "title": "Invoice #1042", "status": "paid" } }

Access fields directly: {{ 3.ret.id }} or {{ 3.ret.status }}.

Run the step once and read the Executions tab rather than working the path out from the API’s own documentation. What Glow stores is the shape you reference, and one look settles it.


Troubleshooting & Error Handling

🛑

When the API answers with an error

Any non-2xx status, such as 400 Bad Request or 500 Internal Server Error, is treated as a failure and halts the workflow. Three settings change that:

  • Ignore HTTP Status Errors (4xx/5xx), in the step’s own Advanced Options, turns an error status into an ordinary result. The step passes on the response body instead of failing. Use it when a 404 is a real answer (“no such customer”) rather than a fault. Pair it with Include Full Response so a Condition can read the status and decide what it meant.

The remaining two are in the step’s Test & Debug tab:

  • Retry on fail repeats the request before giving up. Off by default, so a 429 or 5xx fails the run on first response unless you turn it on. See Error Handling.
  • If this step fails → Continue lets the run carry on so you can handle the failure yourself. Follow it with a Conditions step checking {{ 3.ret.status }}, replacing 3 with this step’s number. That reference needs Include Full Response turned on. Without it the step returns only the body and there is no status to test.

Common Errors

CodeMeaningWhat to Do
401UnauthorizedVerify your authentication credentials in the headers.
403ForbiddenConfirm you have permission to access the requested resource.
404Not FoundCheck the URL structure and verify any dynamically injected variables (like id).
429Too Many RequestsYou have hit an API rate limit. Add a Wait step before the request to throttle calls.

Top Real-World Recipes

Post Lead to Custom API

Send clean dynamic data from an earlier step (e.g. step 1) to an internal endpoint:

  • Method: POST
  • URL: https://api.yourcompany.com/v1/leads
  • Auth: Bearer Token → {{ $secret.CRM_API_KEY }}
  • Body (JSON):
{ "email": "{{ 1.email }}", "first_name": "{{ 1.first_name }}", "company": "{{ 1.company_name }}", "source": "glow_workflow" }

What’s Next?