Building a Simple AI Assistant with Make.com
This guide walks through building a working, webhook based AI assistant with zero code, using Make.com's visual automation builder and Mistral AI's chat completion API. By the end, you'll have a live endpoint that accepts a question and returns an AI generated answer, plus the real troubleshooting steps you'll likely hit along the way.
I wanted a small AI assistant I could actually ask questions and get answers back without writing a line of code. Make.com plus Mistral AI turned out to be a great combo for this: drag a few modules together, connect them, and you’ve got a working assistant. This is the exact process I followed, including the parts where things broke and I had to figure out why.
What We’re Building
The idea started simple: I didn’t want to open ChatGPT in a browser tab every time I had a quick question during the day. I wanted something I could just ping from a script, a shortcut, a form, whatever and get an answer back instantly, like a little assistant sitting in the background of my day.
So this is really the engine for a daily use AI assistant, built from three connected pieces:
- A webhook that listens for whatever question I throw at it
- A Mistral AI module that actually thinks and answers
- A response step that hands the answer straight back
Once it’s set up, you basically have your own little AI API. Send it a question, get an answer back no server to host, nothing to deploy.
What You’ll Need
- A free Make.com account
- A Mistral AI account with an API key
- Something to send a test request with Command Prompt, Postman, or even a free site like reqbin.com works fine
Step 1, Set Up the Webhook

This is the entry point the thing that “receives” your question.
- Log into Make.com and start a new scenario.
- Click the + to add your first module.
- Search for “Webhooks” and pick Custom webhook.
- Give it a name (I used “ai assistant”) and hit Save.
- com will generate a webhook URL for you copy it somewhere, you’ll need it in a bit to test things.

| About the API key option You’ll notice an option to add API key authentication so random people can’t hit your webhook. For a personal/learning project it’s totally fine to skip this I left it off to keep things simple. |
Step 2, Grab a Mistral AI API Key
- Head to console.mistral.ai and log in (or create an account if you’re new).
- Find the API Keys section, it’s under Workspace in the sidebar.
- Click Create new key and copy it somewhere safe. You’ll paste this into Make in the next step.

Step 3, Add the Mistral AI Module
This is the part that actually generates the answer.
- Click the + right after your webhook module.
- Search for “Mistral AI” and select it.
- Choose Create a Chat Completion as the action.
- Click Add next to Connection, paste in your API key, and Save.
- Pick a model mistral medium-2505 worked fine for me, mistral large latest is another good option.
- Under Messages, add one item and set the Role to “User”.
- Leave the Content field for now, you can’t map it properly until Make has actually seen a sample question, which is what the next step is for.

Step 4, Send a Test Question So Make Can “See” It
Here’s something that tripped me up at first: Make can’t let you map a field like “question” until it has actually received one example of what that data looks like. So before anything else, you need to send it a real test request.
- Open the webhook module and click Detect new values.
- Send a test request to your webhook URL (how to is right below).
- Make will pick it up and show “question” as something you can now map.
- Click Save.

Sending the test request
If you’re on Windows Command Prompt, this is the command that worked for me:
| curl -X POST “YOUR_WEBHOOK_URL” ^ -H “Content Type: application/json” ^ -d “{“question”:”What is the capital of France?”}” |
A quick gotcha: on Windows you need to escape the quotes inside the JSON with a backslash (“), like above I missed this the first time and it just errored out.
If you’d rather not deal with a terminal, reqbin.com or hoppscotch.io work just as well, set the method to POST, paste your webhook URL, add a Content Type: application/json header, and drop in the same JSON body.
Step 5, Map the Question into Mistral AI
This is the step I personally got stuck on the longest, so pay attention here.
- Open the Mistral AI module and click directly into the empty Content field.
- A panel should slide in showing your connected modules click to expand “Webhooks,” and you should see “question” listed as a field.
- Click on it. It’ll insert as something like {{7.question}} the number just matches whatever ID your webhook module happens to have.
- Save it.

| If nothing shows up when you click into the field There’s a gear/settings icon in the toolbar above the field that opens a totally different panel (general functions like if, switch, get). That’s not the one you want. Make sure you’re clicking directly into the blank text box itself, not any icon above it. |
Step 6, Send the Answer Back
Now we need to actually return Mistral’s answer to whoever asked the question.
- Click + after the Mistral AI module.
- Search “Webhooks” again, but this time pick Webhook response.
- Set the Status to 200.
- In the Body field, map Mistral’s answer expand Choices[] → Message → Content in the side panel and click it.
- It’ll insert as something like {{8.choices[].message.content}}, again, the number depends on your module IDs.
- Save

| Optional but worth doing: clean up the response By default you get back Mistral’s full raw output, which is a bit messy. I wrapped it in simple JSON instead so it’s easier to read and easier for any app to use later: {“answer”: “{{8.choices[].message.content}}”}, just type this directly into the Body field, with the mapped token still sitting inside the quotes. |
Step 7, Test the Whole Thing
- Click Run once at the bottom of the editor. This tells Make to listen for one incoming request.
- Send your test request again right away timing actually matters here, more on that below.
- Watch the modules on the canvas they should light up one after another as the data moves through.
- Check your terminal (or browser tool) you should see the actual AI generated answer come back.

Here’s what a working response looked like for me:

| {“answer”: “The capital of France is Paris. It is not only the political and administrative center of the country but also a major cultural, historical, and economic hub…”} |
Step 8, Turn It On Properly
Right now the assistant only responds when you’ve manually clicked “Run once” beforehand not exactly useful day to day. Here’s how to make it live all the time:
- Look for the “Immediately as data arrives” toggle near the bottom of the editor, right next to Run once, and switch it on.
- That’s it your webhook is now live around the clock. You don’t need Make.com open at all.
- Try sending a test request again without touching Make first. It should respond instantly.
Things That Went Wrong (and How I Fixed Them)
I hit all three of these while building this, so I’m including them here in case you run into the same thing. None of them are serious, just confusing the first time.
Problem 1: “references non existing module” warning
What you’ll see: a red warning saying something like “module ID 8 references non existing module ID 1.”
What’s actually going on: if you delete and re add modules (or Make rebuilds part of your scenario), it assigns fresh IDs to everything. But any field mappings you made earlier are still pointing at the old IDs, which no longer exist.
How I fixed it:
- Don’t just tick “Ignore warnings” that lets the scenario run in a broken state.
- Go into each module that’s complaining, delete the old broken mapping, and re select the field fresh so it grabs the current, correct module ID.
Problem 2: Getting “Not found” when I tested the webhook
What’s actually going on: nine times out of ten this is just a bad URL usually leftover characters (like trailing dots) that got copied in by accident when I typed it out instead of copying it properly.
How I fixed it: always copy the webhook URL straight from Make using the little copy icon next to it, instead of selecting and retyping it manually.
Problem 3: Getting “Accepted” instead of an actual answer
What’s actually going on: “Accepted” just means the request reached Make’s server it doesn’t mean the scenario actually ran. This happens when the “Run once” listening window has already closed by the time your request shows up (Make only listens for a short window during a test run).
How I fixed it:
- Have the test command already typed out and ready before clicking “Run once.”
- Click Run once, then send the request immediately within a couple seconds, not after switching windows and getting distracted.
- The real fix, long term, is just turning the scenario on (Step 8) so it’s always listening and timing stops mattering.