Make.com Integration
Build content automation scenarios with Make.com's HTTP module. Exact field-by-field configuration.
Overview
Make.com (formerly Integromat) uses a visual drag-and-drop builder for automation scenarios. You'll use the HTTP > Make a request module to call Brainpercent's API. This guide shows every field you need to configure in Make.com's interface.
Prerequisites
- A Make.com account (Free plan: 1,000 ops/month; Core plan recommended for production)
- A Brainpercent API key (
bp_prefix) with read + write permissions, created at brainpercent.app/chat/developers. Keys cannot be created over the API. - A project id. Every generation call needs one. Fetch it with
GET https://www.brainpercent.app/api/v1/projectsand store it, or add that call as the first HTTP module. Projects are created in the app, not over the API. - Basic familiarity with Make.com's visual editor
Use the www host in every URL. The apex https://brainpercent.app answers with a 307 redirect, and the POST body is dropped when the redirect is followed, so the request arrives empty.
HTTP Module: Field-by-Field Setup
Add an "HTTP > Make a request" module to your scenario. Here is every field in the module configuration panel:
| Make.com Field | Value |
|---|---|
| URL | https://www.brainpercent.app/api/v1/articles/generate |
| Method | POST (select from dropdown) |
| Headers | Click "Add a header" and add 2 items (see table below) |
| Query String | Leave empty (for POST requests) |
| Body type | Raw (select from dropdown) |
| Content type | JSON (application/json) (select from dropdown) |
| Request content | Your JSON body (see below) |
| Parse response | Yes |
| Timeout | 30 (seconds, default is fine) |
| Share cookies with other HTTP modules | No |
| Self-signed certificate | No |
| Follow redirect | Yes |
| Follow all redirects | Yes |
Headers Array
Click "Add a header" twice to create two header items:
| Name | Value |
|---|---|
Authorization | Bearer bp_your_api_key_here |
Content-Type | application/json |
Request Content (JSON Body)
Paste this into the "Request content" field. Use Make.com variables with the {{moduleNumber.field}} syntax to reference data from previous modules:
{
"topic": "Your Article Topic",
"project_id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"keywords": ["keyword1", "keyword2"],
"tone": "professional",
"word_count": 1200
}topic (3 to 500 characters) and project_id are required. Optional: keywords (up to 20), tone (professional, casual, academic, conversational), and word_count (300 to 5000, default 800). There is no length and no language field: the language comes from the project. Costs 1.5 credits.
Important: Always enable "Parse response: Yes". This lets Make.com parse the JSON response automatically, so you can reference individual fields like {{2.data.article_id}} in subsequent modules.
Scenario: Automated Content Pipeline
Full pipeline: Trigger → Generate Article → Sleep → Check Status → Router → Generate Social
Module 1: Schedule Trigger
| Field | Value |
|---|---|
| Module | Basic trigger (Schedule) |
| Run scenario | Every day at 09:00 |
Module 2: HTTP > Make a Request (Generate)
Configured exactly as shown in the HTTP Module Setup above with POST /articles/generate.
Module 3: Sleep
| Field | Value |
|---|---|
| Module | Tools > Sleep |
| Delay | 300 seconds (5 minutes) |
The Sleep module is under Tools in the module picker. The delay is in seconds, so 300 is 5 minutes. Article generation takes roughly 10 to 15 minutes, so a single Sleep is not enough on its own: Route 2 of the Router below loops back for another Sleep plus status check until the article reports complete.
Module 4: HTTP > Make a Request (Check Status)
| Field | Value |
|---|---|
| Method | GET |
| URL | https://www.brainpercent.app/api/v1/articles/{{2.data.article_id}}/status |
| Headers | Authorization: Bearer bp_your_key (same as Module 2) |
| Parse response | Yes |
Module 5: Router (Conditional Branching)
Add a Router module after the status check. Configure two routes:
| Route | Filter Condition | Then |
|---|---|---|
| Route 1: Done | {{4.data.is_complete}} Equal to true | → Generate Social (Module 6) |
| Route 2: Not Done Yet | {{4.data.is_complete}} Not equal to true | → Sleep 300s → Check Status again |
| Route 3: Failed | {{4.data.status}} Equal to failed | → Slack or Email alert, stop |
Branch on is_complete, not on a status string. Article statuses are draft, queued, cms, needs_editing, failed, and archived. A finished article is cms: there is no published and no generating value, so a filter on either will never fire.
Module 6: HTTP > Make a Request (Generate Social)
| Field | Value |
|---|---|
| Method | POST |
| URL | https://www.brainpercent.app/api/v1/social/generate |
| Body type | Raw / JSON |
{
"source_url": "https://www.brainpercent.app/articles/{{4.data.slug}}",
"platforms": ["twitter", "linkedin", "facebook"],
"project_id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"angle": "Practical takeaways for busy marketers"
}source_url and platforms (1 to 10) are required. Optional: source_type (website, blog, youtube), angle, title, project_id. There is no tone or language field here: use angle instead. Valid platforms: instagram, facebook, linkedin, twitter, threads, tiktok, bluesky, pinterest, google_business, telegram. Costs 0.6 credits per platform and returns a single {{6.data.content_id}} covering all of them.
Module 7: Publish or Schedule
Add a Sleep, then an HTTP module that polls https://www.brainpercent.app/api/v1/social/content/{{6.data.content_id}} until status is ready or completed. Then POST to /api/v1/social/publish. Publishing content that is still generating returns 412.
{
"content_id": "{{6.data.content_id}}"
}Only content_id is required. Omit platforms to publish every variant. Without scheduled_at the API returns 202 and publishes immediately; with it, 200 and scheduled. A 412 also means no social accounts are connected.
Scenario: Credit Monitor
Get notified when credits run low. You have one balance for everything: 1 credit equals $1.00, an article costs 1.5 credits, and social costs 0.6 credits per platform, so pick a threshold that covers a few runs. Three modules:
https://www.brainpercent.app/api/v1/user/credits| Filter Field | Value |
|---|---|
| Label | Credits are low |
| Condition | {{2.data.available_credits}} Less than 10 |
JSON Parsing & Data Mapping
With "Parse response: Yes" enabled, Make.com automatically maps JSON fields. Reference them using {{moduleNumber.path.to.field}}. Note that error sits next to data, not inside it, and social captions are keyed by platform name rather than sitting in a list:
| Data | Make.com Reference | Example |
|---|---|---|
| Article ID | {{2.data.article_id}} | f8c9d0e1-2345-... |
| Article status | {{4.data.status}} | cms |
| Article finished? | {{4.data.is_complete}} | true |
| Article slug | {{4.data.slug}} | content-marketing-trends-2026 |
| Credit balance | {{2.data.available_credits}} | 42 |
| Social content id (one per job) | {{6.data.content_id}} | b1c2d3e4-f5a6-... |
| LinkedIn caption (after generation) | {{7.data.platforms.linkedin}} | Caption text... |
| LinkedIn image (permanent) | {{7.data.image_urls.linkedin}} | https://...supabase.co/... |
| Error code | {{2.error.code}} | RATE_LIMIT_EXCEEDED |
Error Handling
Right-click any HTTP module and select "Add error handler". Make.com provides four error handler types:
| Handler Type | Behavior | Use Case |
|---|---|---|
| Resume | Skip failed item, continue scenario | Batch processing. Do not let one failure block the rest. |
| Break | Stop execution, save state | Critical errors. Prevent downstream modules from running. |
| Rollback | Stop and mark as error | Transactional workflows requiring all-or-nothing |
| Commit | Stop, mark as success | Graceful stop without triggering error alerts |
Handling 429 Rate Limits
Add a Break error handler with automatic retry:
| Break Setting | Value |
|---|---|
| Automatically complete execution | Yes |
| Number of retries | 3 |
| Interval between retries | 60 seconds |
Scenario Schedule Settings
Click the clock icon at the bottom of your scenario to configure run frequency. In the scheduling panel:
| Setting | Recommended Value |
|---|---|
| Run scenario | At regular intervals |
| Minutes | 15 (minimum for free plans) |
Each HTTP module execution counts as one operation against your Make.com plan quota. A 6-module pipeline uses 6 operations per run. Monitor usage in Settings → Operations.
Tips & Best Practices
- Always enable "Parse response: Yes" on HTTP modules for automatic JSON field mapping
- Store your API key in a Make.com Data Store or use the "Keys" feature for centralized management
- Add error handlers to every HTTP module: use "Resume" for batch processing, "Break" for critical paths
- Use the Router module for conditional branching, and branch on
data.is_completerather than a status string - Social generation returns one row for all platforms, so there is no items array to iterate. Read each caption directly from
data.platforms.<platform>, or use an Iterator over that object if you need one bundle per platform. - Use
data.image_urlsfor images. Those links are permanent. - Use Sleep (under Tools) for polling delays, not Code modules with
setTimeout - Monitor operations usage in scenario settings: each HTTP request is 1 operation