HTTP & API
Nodes for talking to HTTP services. The HTTP Request node is the workhorse, most enterprise connectors are sugar on top of it.
HTTP Request
What: Make a REST API call with full HTTP control.
Inputs: Any.
Outputs:
- On success,
statusCode,headers,body(parsed JSON or raw string),responseTime,size. - On HTTP 4xx / 5xx, throws an exception (or routes to
errorport if Fail on error is off).
Configuration:
| Field | Notes |
|---|---|
| URL | Required. Must include protocol. Supports expressions. |
| Method | GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS |
| Query parameters | Key / value pairs appended as ?key=value |
| Headers | Custom request headers |
| Body type | json, form, raw, none |
| Body | Payload. JSON-encoded automatically for json. |
| Credential | Pick a stored credential to authenticate. Headers are injected based on the credential's auth type. |
| Timeout | Milliseconds; default 30 000 |
| Retries | Number of retry attempts for 5xx responses |
| Retry delay | Initial delay; combine with Backoff strategy for exponential growth |
| Follow redirects | Default true |
| Validate SSL | Default true. Turn off only for known-bad-cert dev environments. |
| Fail on error | Default true. When false, 4xx/5xx is treated as success and routed to output so downstream nodes can react. |
Example: GET a public endpoint.
URL: https://api.github.com/users/{{ $trigger.body.username }}
Method: GET
Headers:
Accept: application/jsonAuthentication:
Never inline secrets. Use the Credential field; Flero injects the right headers based on the credential type:
| Credential type | Header injected |
|---|---|
| Bearer token | Authorization: Bearer <token> |
| Basic auth | Authorization: Basic <base64(user:pass)> |
| API key (header) | The custom header you configured on the credential |
| API key (query param) | Appended to the URL |
| OAuth 2 | Authorization: Bearer <access_token> (Flero refreshes as needed) |
See Credentials & connectors for setup.
Webhook API
What: Expose your workflow as a callable HTTP endpoint, without using the Webhook Trigger. Used inside a workflow to declare a sub-endpoint that other services can hit.
Inputs: Any.
Outputs: The request body / headers / query.
Configuration: Path, methods accepted, optional auth requirement.
When to use: Building multi-endpoint micro-services from a single workflow.
💡 The more common pattern is the Webhook Trigger, it makes the whole workflow respond to HTTP. The Webhook API node is for advanced multi-route designs.
Web Scraper
What: Fetch a web page and extract data from its HTML.
Inputs: None required.
Outputs: Extracted fields per your selectors.
Configuration:
| Field | Notes |
|---|---|
| URL | Page to scrape |
| Selectors | A list of { name, selector, attribute } entries, CSS selectors |
| Wait for | Optional: wait for a JS-rendered element before extracting |
| Render JavaScript | Whether to use a headless browser (slower) or just fetch HTML |
Example: Get the title and first paragraph of a blog post.
URL: https://example.com/blog/post-1
Selectors:
- name: title; selector: h1; attribute: text
- name: leadPara; selector: article p:first-of-type; attribute: textUse case: Scraping public marketing pages, monitoring competitors, ETL from a data table without a public API. Respect robots.txt and the target site's terms.
API Pagination & Rate Limit
What: A meta-node that wraps repeated HTTP calls to handle pagination cursors and rate-limit headers automatically.
Inputs: A configured HTTP call.
Outputs: The aggregated results from all pages.
Configuration:
| Field | Notes |
|---|---|
| Pagination style | offset, page, cursor, link header |
| Page-size param | Where to send the page size |
| Total parameter | How to read the total count (for offset-style) |
| Cursor param | For cursor-style |
| Stop condition | Expression that, when truthy, halts pagination |
| Rate-limit awareness | Read X-RateLimit-* headers and auto-throttle |
| Max pages | Hard ceiling |
Use case: Fetching every page of a paginated API in one node, with backoff that respects the service's rate limit. Equivalent to writing a manual Loop + HTTP + If chain, but cleaner.
Tips & gotchas
- Don't paste API keys into headers. Use a credential. Aside from being insecure, your token will end up in execution history.
- JSON request bodies need
Content-Type: application/json, Flero adds this for you when Body type isjson. Switch torawonly when you know what you're doing. - Timeouts cascade up. If your HTTP timeout is longer than the workflow's execution timeout, you'll get a workflow timeout, not an HTTP timeout. Match them.
- Retries amplify cost for paid APIs. Set them deliberately.
Fail on error: falseis great for "fetch and tolerate 404" patterns, combine with an If node to branch onstatusCode.- Web Scraper's JavaScript rendering uses a headless browser pool that's much slower than plain HTML fetch. Use it only when needed.
Related
Found something out of date? This page lives in the Flero docs content set.