Call any HTTP API mid-flow, then use its answer in the very next email.
Any non-2xx status fails the step, and the run log records the status plus the first 300 characters of the response body — usually the other server explaining what it rejected. A request that takes longer than 10 seconds is aborted the same way. There are no automatic retries: a failed step ends that contact's run, so point it at endpoints you trust, or put the call before the steps that matter.
JSON only. Top-level fields and one level of nested objects become {{api.key}} and {{api.parent.key}}; arrays are flattened by index ({{api.sessions.0.title}}) for the first 20 items, a few levels deep. Up to 200 keys are kept per run and each value is cut at 1,000 characters. A non-JSON response still succeeds — there is just nothing to capture. One shape catches people out: the response has to be a JSON object. A bare top-level array ([{...}, {...}]) captures nothing, and Pick one item needs the list under a named key ({"sessions": [...]}) — if the API returns a bare array, call an endpoint or wrapper that names it.
No. API Calls run inside your automations like any other step; FrazzleCRM does not meter operations. Whatever the API you call charges is between you and that provider.
Yes. Each run log line names the method, URL and status, and lists the captured keys with their values (the first 25), so a blank {{api.x}} later in the flow can be traced back to what the server actually sent.
For calling one API you already know, yes — no third tool in the middle. For connecting dozens of apps you have never read the docs for, no: those platforms ship thousands of pre-built connectors, and FrazzleCRM ships none. The step is a raw HTTP request; you bring the endpoint.