> ## Documentation Index
> Fetch the complete documentation index at: https://docs.assistable.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Call an API from a flow

> Send an HTTP request, retain its response, and branch on the result.

Use an **API Call** node for an HTTP integration you configure directly in the flow. You need the destination API's URL, authentication method, accepted fields, and a test record.

## Configure the request

1. Add an **API Call** node and choose GET, POST, PUT, PATCH, or DELETE.
2. Enter the URL. Add query parameters for values the API expects in the URL.
3. Add the required headers. Put the complete authentication value in **Authorization**, such as `Bearer …`, when the API uses that scheme.
4. For POST, PUT, or PATCH, choose the body format and supply the body. GET and DELETE in this node do not send a body.
5. Set a **Response Variable**, such as `lookup_result`.
6. Keep **Wait for response** enabled for this workflow and connect a Logic node to inspect the status before continuing.

`{{variables}}` can be used in the URL, headers, query values, and body. Raw JSON interpolation is text substitution: quotes or line breaks in a value can make your JSON invalid. Prefer simple validated values and test the exact request with the receiving service.

## Read the result

With `lookup_result` as the response variable:

| Variable | Contents |
| - | - |
| `lookup_result` | Response body as text, including JSON serialized as text |
| `lookup_result_status` | HTTP status as text, such as `200` or `404` |
| `lookup_result_error` | Network, timeout, or blocked-destination error when one is reported |

An HTTP 400 or 500 response is still an HTTP response. Check the status and body; do not assume the error variable is populated for every unsuccessful status. Network failures use status `0`. Requests have a bounded timeout, so design the receiving endpoint to respond promptly.

## Verify before relying on it

Test success, a missing record, rejected credentials, and a slow or unavailable endpoint. For writes, inspect the destination record before retrying: a delayed response does not prove the write failed.

If a destination is blocked, use a publicly reachable integration endpoint you control. Do not put secrets into visitor-facing messages or URL query strings.

See [Logic](/v3/guides/flows/conditions) for status branches and [Tool nodes](/v3/guides/flows/run-tools) for reusable actions.

## API Call settings

The node picker calls this node **API Call**. Its request settings are:

| Setting | Choices/default | Meaning and constraints |
| - | - | - |
| Name | `API Call` on a new node | Display label only. |
| Method | GET, POST, PUT, PATCH, DELETE; new nodes use POST | GET and DELETE send no body in this node. |
| URL | Empty initially | Destination URL; supports `{{name}}` substitution. Private/local destinations can be blocked. |
| Import from cURL | Paste a request | Populates request settings; review credentials and placeholders before saving. |
| Query Parameters | Key/value rows | Appended to the URL with URL encoding. Both keys and values support variables. |
| Authorization | Empty initially | Complete header value, such as `Bearer {{service_token}}`. |
| Headers | Key/value rows | Both keys and values support variables. A same-named configured header can replace Authorization; the selected body content type controls Content-Type when a body is sent. |
| Content type | JSON, form URL encoded, multipart form data, or plain text; default JSON | See body behavior below. |
| Body mode | Parameters or raw; default Parameters | Parameters represent key/value text; raw supplies the complete body. |
| Response Variable | Empty initially | Set a name to retain response text/status for later nodes. Empty means no named response fields are saved. |
| Wait for response | On by default | Keep on for a normal connected request. Turning it off currently skips the request on the main path; it does not create a reliable background request. |

| Body format | Current serialization |
| - | - |
| JSON + Parameters | JSON object whose keys and values are strings after substitution; `5` is sent as `"5"`. |
| JSON + raw | Raw substituted text. You must provide valid JSON and correct escaping. |
| Form URL encoded + Parameters | Encoded key/value pairs. |
| Form URL encoded + raw | Raw substituted text; supply correctly encoded form data yourself. |
| Plain text | Raw body text. Parameter rows do not generate a plain-text body. |
| Multipart form data | The editor offers the content type, but the node does not construct multipart boundaries or file parts. Use a supported JSON/form endpoint or a separately configured tool for uploads. |

The HTTP request uses a 10-second timeout while awaiting a response; it is not a configurable node option or an end-to-end completion guarantee. A response error from a previous run can remain in `<name>_error`; always inspect the current `<name>_status` and current result. Async edges have separate execution behavior and are not a substitute for the Wait for response switch.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.