Using fetch-url and api-call steps
Using fetch-url and api-call steps
Both the fetch-url and api-call steps make HTTP requests to external services, and both support every HTTP method, custom headers, and a request body. The difference is what each adds on top: Fetch URL can also scrape pages with Firecrawl or Massive and handle markdown/response-type conversion, while Make API Call adds request templating, response mapping, and an auth helper.
Each step’s configuration is a fill-in-the-blank panel that saves as you edit; there is no separate Save Step button. Rename a step inline in its header, and set the variable its result is stored under in the step’s Output variable field (the small variable control on the step card, placeholder output_data).
Fetch URL step
Add a fetch-url step
- In the Flow editor, click Add Step
- Select Fetch URL
- Choose a mode at the top of the step: Standard HTTP, Firecrawl (Web Scraping), or Massive (Web Render)
Standard HTTP mode
Configure:
- URL — the endpoint to call (accepts
{{variable}}mentions) - Method — GET, POST, PUT, DELETE, or PATCH (defaults to GET)
- Body — the request payload, shown only for POST, PUT, and PATCH. Switching back to GET or DELETE hides the body field without clearing its stored value.
- Response type — JSON, Text/HTML, or XML. With Text/HTML you can also turn on Prefer Markdown when available to get cleaned markdown.
- Headers — key-value pairs under the step’s advanced settings
Firecrawl (web scraping) mode
Switch the mode to Firecrawl (Web Scraping) to scrape a page instead of making a plain HTTP request. Firecrawl handles JavaScript rendering and returns clean content. You can configure:
- Formats — one or more of markdown, html, rawHtml, screenshot, links, json
- Extract main content only — strip navigation and boilerplate
- JSON extraction — provide a JSON schema or describe what to extract, and Firecrawl returns structured data
- Advanced options such as cache freshness (
maxAge), country, and languages
Massive (web render) mode
Switch the mode to Massive (Web Render) to fetch hard-to-retrieve pages through the Massive Web Render API. Massive renders JavaScript, solves captchas, and retries through a residential network, which helps with sites that block or challenge datacenter traffic. You can configure:
- Output format — markdown (default), rendered HTML, or raw HTML
- Country — two-letter ISO code to fetch from a specific country (for example
us) - Delay — 0.1 to 10 supplemental seconds before capturing content on slow-loading pages
- Cache expiration — days before cached content is considered stale (0 disables caching)
Make API Call step
Use Make API Call when you want request templating, response mapping, or the built-in auth helper.
Add an api-call step
- Click Add Step
- Select Make API Call
- Configure:
- Method — GET, POST, PUT, DELETE, or PATCH
- URL — the endpoint URL
- Body — request body, shown for POST, PUT, and PATCH
- Response type — JSON, Text, or XML
- Headers — key-value pairs under advanced settings
Setting headers
Add headers as key-value pairs in either step’s headers section:
Request body
For POST/PUT/PATCH requests, provide the body (JSON is typical):
Authentication
Bearer token
Basic auth
Encode username:password in base64:
API key in header
Do not hardcode API keys in Flows. Store credentials with secrets and reference them with {{secret:SECRET_NAME}} syntax.
Handling responses
The response is stored under the step’s Output variable name. Reference it in later steps:
Error handling
API calls can fail. Configure error handling on the step itself (continue on error, stop on error, or use fallbacks), or use a Conditional Logic step to check the result before proceeding.
Dynamic URLs
Build URLs from variables:
Rate limiting
Some APIs rate-limit requests. Add a Wait Until step between calls if needed:
- API call step
- Wait Until step with
delayMs(e.g., 1000 for a 1-second pause) - Next API call
Testing a step
You can test a single HTTP step without re-running the whole Flow, but only after the Flow has run at least once (the test re-uses the variables captured in the most recent run):
- Run the Flow once
- Open the step’s action menu (the ⋯ button on the step card)
- Choose Test with last run
- Review the request and response in the test panel
Best practices
- Validate responses: Check status codes before using response data
- Handle errors gracefully: Use conditionals for retry logic or fallbacks
- Keep secrets secret: Reference credentials with
{{secret:NAME}}, never hardcode them - Use Firecrawl or Massive for pages, HTTP for APIs: Firecrawl and Massive modes are for fetching rendered web pages (Massive is strongest on sites that block datacenter traffic); standard HTTP is for JSON/REST endpoints
Next steps
- Using transform-data steps to process API responses
- Using conditional steps for error handling
- Flow variables and templates for building dynamic requests
- Managing secrets to create the
{{secret:NAME}}credentials these steps reference