# Nodaro with Make

> Start a Nodaro workflow from a Make scenario with the HTTP app, and get the finished image or video back on a Make custom webhook. No API key is needed.

Source: https://nodaro.ai/docs/guides/make-integration

**Make** can start any Nodaro workflow from a scenario and receive the finished image, video or audio on a custom webhook. Nodaro does the generation. Make decides when it runs and where the result goes next. Neither direction needs a Nodaro API key, because the workflow's own webhook address starts the run.

## How the two connect

1. The HTTP app's **Make a request** module posts a JSON body, for example a prompt, to the webhook address of a Nodaro workflow.
2. The Nodaro workflow starts with a [Webhook Trigger](https://nodaro.ai/docs/nodes/automate/webhook-trigger), runs its nodes, and ends with a [Webhook Output](https://nodaro.ai/docs/nodes/publish/webhook-output).
3. The Webhook Output posts the result to a Make **Custom webhook**, which starts a second scenario with the result.

Workflow: The Nodaro side: a Make scenario starts the Webhook Trigger, and the Webhook Output sends the image's address to a Make custom webhook.

- Webhook Trigger → Generate Image (prompt)
- Generate Image → Webhook Output (image_url)

## Step 1: Receive the result in Make

Create the receiving end first, because the Nodaro workflow needs its address.

1. Create a scenario and add the **Webhooks › Custom webhook** module as its trigger.
2. Click **Add** next to **Webhook**, name it, for example "Nodaro result", and click **Save**.
3. Copy the URL that Make generates. Make now listens for the first request.

Each Make webhook belongs to one scenario. Turn the scenario on when it is ready, so it processes every result as it arrives.

## Step 2: Build the Nodaro workflow

1. Add a **Webhook Trigger** node. Under **Output Parameters**, add a parameter named `prompt` of type **Text**.
2. Connect the `prompt` output to the prompt input of a [Generate Image](https://nodaro.ai/docs/nodes/image/generate-image) node, or any other node that makes a result.
3. Add a **Webhook Output** node. Paste the Make webhook URL into **Webhook URL**. Under **Input Parameters**, add `image_url` of type **Image URL**, and connect the image to it.
4. Save the workflow. Select the Webhook Trigger and copy its address under **Webhook URL**.

The address has the form `https://app.nodaro.ai/v1/webhooks/<token>`. The token works like a password: anyone who has the address can start the workflow.

## Step 3: Start the run from Make

1. In the scenario that should start the run, add the **HTTP** app's **Make a request** module.
2. Paste the Nodaro address into **URL** and set **Method** to **POST**.
3. Set **Body content type** to `application/JSON` and **Body input method** to **Data structure**. Add a field named `prompt`, and map the value from an earlier module.
4. Set **Parse response** to **Yes**, so the next modules can map the `executionId`.

The **Data structure** method escapes your values. A raw JSON string with mapped values can break when a value contains quotes.

## What comes back

Nodaro answers the request at once, before anything is generated. The answer is `202` with the id of the run:

```json
{ "executionId": "3f9e2b1a-7c6d-4e5f-8a9b-0c1d2e3f4a5b", "status": "pending" }
```

When the run finishes, the Webhook Output posts the result to your custom webhook. The body has one key per Input Parameter, and media values are addresses of files on Nodaro:

```json
{ "image_url": "https://cdn.nodaro.ai/images/2538b658-d2e1-42ee-890a-72ce06089feb.png" }
```

Run the Nodaro workflow once while the custom webhook listens, and Make learns the structure, so `image_url` becomes a field you can map. You can also define the structure by hand under the webhook's advanced settings.

## Poll instead of a webhook

You can also poll for the result with a [personal API token](https://nodaro.ai/docs/developers/api/authentication), in the same scenario. Polling works for workflows in your personal projects.

1. After the request module, add the **Tools › Sleep** module, for example for 30 seconds.
2. Add another **Make a request** module with **Method** **GET** and the URL `https://app.nodaro.ai/v1/api/status/<executionId>`, with the `executionId` mapped from the first request.
3. For the token, choose the **API key** authentication type: put `Bearer <your API token>` in **Key**, place it in the header, and name the parameter `Authorization`.
4. When the status is `completed`, call `https://app.nodaro.ai/v1/api/result/<executionId>` the same way. The answer lists the run's outputs with their addresses.

A video can take several minutes, and one Sleep module waits a limited time. For long runs, the webhook method above is simpler. [Run a workflow with new input values](https://nodaro.ai/docs/developers/api/workflows#run-a-workflow-with-new-input-values) describes the status and result answers.

## Limits to plan for

| Limit | What happens | What to do |
| --- | --- | --- |
| One run at a time per workflow | A request during a run answers `409`, with the `executionId` of the run in progress. | Send the next request after the previous result arrives, or copy the workflow. |
| 10 requests per minute per address | More answer `429`. | Space the requests out. |
| One delivery attempt | Webhook Output waits 30 seconds for an answer and does not retry. A failed delivery fails the node. | Keep the receiving scenario on. |
| An unused Make webhook stops | Make deactivates a webhook that no scenario uses for 5 days. | Keep the custom webhook in an active scenario. |

## What it costs

The Webhook Trigger and the Webhook Output cost nothing. You pay the credits of the nodes between them, at the same prices as in the editor. In the example above, each run costs the price of one Nano Banana 2 image, 22 credits. Credits reserved for a node that fails come back automatically.

The same pattern works in [n8n](https://nodaro.ai/docs/guides/n8n-integration) and [Zapier](https://nodaro.ai/docs/guides/zapier-integration). [Automations](https://nodaro.ai/docs/guides/automations) covers schedules and the other ways to start a workflow.

## Frequently asked questions

### Do I need a Nodaro API key to use Nodaro from Make?

No. The HTTP app's Make a request module starts the run through the Nodaro workflow's webhook address, and the Webhook Output node sends the result to a Make custom webhook. You need an API key only if you poll for the result instead.

### Why can't I map the fields of the Nodaro result in Make?

A Make custom webhook learns its data structure from the first request it receives. Run the Nodaro workflow once while the webhook listens, or define the data structure by hand, and the fields become available.

### Why does Nodaro answer 409?

The Nodaro workflow already has a run in progress, and a workflow runs one request at a time. Send the next request after the previous result arrives, or make a copy of the workflow for parallel runs.

### What does it cost?

The Webhook Trigger and the Webhook Output are free. You pay the credits of the nodes between them, at the same prices as in the editor.
