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.
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 Method
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.

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:
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
404is 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
429or5xxfails 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 }}, replacing3with 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
| Code | Meaning | What to Do |
|---|---|---|
| 401 | Unauthorized | Verify your authentication credentials in the headers. |
| 403 | Forbidden | Confirm you have permission to access the requested resource. |
| 404 | Not Found | Check the URL structure and verify any dynamically injected variables (like id). |
| 429 | Too Many Requests | You have hit an API rate limit. Add a Wait step before the request to throttle calls. |
Top Real-World Recipes
1. Post Lead / CRM Record
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?
- Parse JSON: Turn raw text or nested strings into addressable fields.
- Error Handling & Retries: Configure automatic retries on 429/5xx status codes.
- Secrets & Variables: Securely manage API tokens and environment endpoints.