Skip to content
Dashboard

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/projects and 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 FieldValue
URLhttps://www.brainpercent.app/api/v1/articles/generate
MethodPOST (select from dropdown)
HeadersClick "Add a header" and add 2 items (see table below)
Query StringLeave empty (for POST requests)
Body typeRaw (select from dropdown)
Content typeJSON (application/json) (select from dropdown)
Request contentYour JSON body (see below)
Parse responseYes
Timeout30 (seconds, default is fine)
Share cookies with other HTTP modulesNo
Self-signed certificateNo
Follow redirectYes
Follow all redirectsYes

Headers Array

Click "Add a header" twice to create two header items:

NameValue
AuthorizationBearer bp_your_api_key_here
Content-Typeapplication/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

FieldValue
ModuleBasic trigger (Schedule)
Run scenarioEvery 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

FieldValue
ModuleTools > Sleep
Delay300 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)

FieldValue
MethodGET
URLhttps://www.brainpercent.app/api/v1/articles/{{2.data.article_id}}/status
HeadersAuthorization: Bearer bp_your_key (same as Module 2)
Parse responseYes

Module 5: Router (Conditional Branching)

Add a Router module after the status check. Configure two routes:

RouteFilter ConditionThen
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)

FieldValue
MethodPOST
URLhttps://www.brainpercent.app/api/v1/social/generate
Body typeRaw / 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:

1
Schedule trigger: run daily
2
HTTP module: GET https://www.brainpercent.app/api/v1/user/credits
3
Filter + Email/Slack: add a filter between modules 2 and 3:
Filter FieldValue
LabelCredits 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:

DataMake.com ReferenceExample
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 TypeBehaviorUse Case
ResumeSkip failed item, continue scenarioBatch processing. Do not let one failure block the rest.
BreakStop execution, save stateCritical errors. Prevent downstream modules from running.
RollbackStop and mark as errorTransactional workflows requiring all-or-nothing
CommitStop, mark as successGraceful stop without triggering error alerts

Handling 429 Rate Limits

Add a Break error handler with automatic retry:

Break SettingValue
Automatically complete executionYes
Number of retries3
Interval between retries60 seconds

Scenario Schedule Settings

Click the clock icon at the bottom of your scenario to configure run frequency. In the scheduling panel:

SettingRecommended Value
Run scenarioAt regular intervals
Minutes15 (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_complete rather 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_urls for 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