make

Make (formerly Integromat) API integration with managed authentication. Manage scenarios, organizations, teams, connections, data stores, hooks, and templates. Use this skill when users want to automate workflows, manage scenarios, or integrate apps using Make. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "make" with this command: npx skills add maton/make-api

Make

Access the Make API with managed authentication. Manage scenarios, organizations, teams, connections, data stores, hooks, and templates.

Quick Start

# List organizations
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/make/api/v2/organizations')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Base URL

https://gateway.maton.ai/make/api/v2/{resource}

Replace {resource} with the actual Make API endpoint (e.g., organizations, scenarios, teams). The gateway proxies requests to your Make zone (e.g., us2.make.com) and automatically injects your API token.

Authentication

All requests require the Maton API key in the Authorization header:

Authorization: Bearer $MATON_API_KEY

Environment Variable: Set your API key as MATON_API_KEY:

export MATON_API_KEY="YOUR_API_KEY"

Getting Your API Key

  1. Sign in or create an account at maton.ai
  2. Go to maton.ai/settings
  3. Copy your API key

Connection Management

Manage your Make connections at https://ctrl.maton.ai.

List Connections

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=make&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create Connection

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'make'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Get Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "connection": {
    "connection_id": "{connection_id}",
    "status": "ACTIVE",
    "creation_time": "2026-04-07T19:37:17.340922Z",
    "last_updated_time": "2026-04-07T19:40:00.806379Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "make",
    "metadata": {}
  }
}

Delete Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Specifying Connection

If you have multiple Make connections, specify which one to use with the Maton-Connection header:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/make/api/v2/organizations')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '{connection_id}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

If omitted, the gateway uses the default (oldest) active connection.

API Reference

Users

Get Current User

GET /make/api/v2/users/me

Response:

{
  "authUser": {
    "id": 2958000,
    "name": "John Doe",
    "email": "john@example.com",
    "language": "en",
    "timezoneId": 301,
    "timezone": "America/New_York",
    "avatar": "https://..."
  }
}

List Users

GET /make/api/v2/users?organizationId={organizationId}
GET /make/api/v2/users?teamId={teamId}

Update User

PATCH /make/api/v2/users/{userId}
Content-Type: application/json

{
  "name": "Updated Name",
  "language": "en",
  "timezoneId": 301
}

Organizations

List Organizations

GET /make/api/v2/organizations

Response:

{
  "organizations": [
    {
      "id": 2767268,
      "name": "My Organization",
      "timezoneId": 301,
      "zone": "us2.make.com"
    }
  ],
  "pg": {"sortBy": "name", "limit": 10000, "sortDir": "asc", "offset": 0}
}

Get Organization

GET /make/api/v2/organizations/{organizationId}

Create Organization

POST /make/api/v2/organizations
Content-Type: application/json

{
  "name": "New Organization",
  "regionId": 2,
  "timezoneId": 301,
  "countryId": 202
}

Update Organization

PATCH /make/api/v2/organizations/{organizationId}
Content-Type: application/json

{
  "name": "Updated Name",
  "timezoneId": 301
}

Delete Organization

DELETE /make/api/v2/organizations/{organizationId}

Get Organization Usage

GET /make/api/v2/organizations/{organizationId}/usage

Teams

List Teams

GET /make/api/v2/teams?organizationId={organizationId}

Response:

{
  "teams": [
    {
      "id": 388889,
      "name": "My Team",
      "organizationId": 2767268
    }
  ],
  "pg": {"sortBy": "name", "limit": 10000, "sortDir": "asc", "offset": 0}
}

Get Team

GET /make/api/v2/teams/{teamId}

Create Team

POST /make/api/v2/teams
Content-Type: application/json

{
  "name": "New Team",
  "organizationId": 2767268
}

Delete Team

DELETE /make/api/v2/teams/{teamId}

Get Team Usage

GET /make/api/v2/teams/{teamId}/usage

Scenarios

List Scenarios

GET /make/api/v2/scenarios?organizationId={organizationId}
GET /make/api/v2/scenarios?teamId={teamId}

Response:

{
  "scenarios": [
    {
      "id": 4667499,
      "name": "My Scenario",
      "teamId": 388889,
      "isActive": false,
      "isPaused": false,
      "scheduling": {"type": "indefinitely", "interval": 900},
      "lastEdit": "2026-04-07T19:41:51.801Z"
    }
  ],
  "pg": {"sortBy": "proprietal", "limit": 500, "sortDir": "desc", "offset": 0}
}

Get Scenario

GET /make/api/v2/scenarios/{scenarioId}

Create Scenario

POST /make/api/v2/scenarios
Content-Type: application/json

{
  "teamId": 388889,
  "name": "New Scenario",
  "blueprint": "{...}"
}

Update Scenario

PATCH /make/api/v2/scenarios/{scenarioId}
Content-Type: application/json

{
  "name": "Updated Scenario Name"
}

Delete Scenario

DELETE /make/api/v2/scenarios/{scenarioId}

Start Scenario

POST /make/api/v2/scenarios/{scenarioId}/start

Stop Scenario

POST /make/api/v2/scenarios/{scenarioId}/stop

Run Scenario

POST /make/api/v2/scenarios/{scenarioId}/run
Content-Type: application/json

{
  "data": {"key": "value"}
}

Get Scenario Logs

GET /make/api/v2/scenarios/{scenarioId}/logs
GET /make/api/v2/scenarios/{scenarioId}/logs?status=3&pg[limit]=10

Query parameters:

  • from / to - Timestamp range in milliseconds
  • status - 1=success, 2=warning, 3=error
  • pg[offset], pg[limit] - Pagination

Connections (Make App Connections)

List Connections

GET /make/api/v2/connections?teamId={teamId}

Response:

{
  "connections": [
    {
      "id": 1353452,
      "name": "My HubSpot CRM connection",
      "accountName": "hubspotcrm",
      "accountLabel": "HubSpot CRM",
      "teamId": 388889,
      "accountType": "oauth",
      "editable": true
    }
  ]
}

Get Connection

GET /make/api/v2/connections/{connectionId}

Create Connection

POST /make/api/v2/connections
Content-Type: application/json

{
  "accountName": "slack2",
  "accountType": "oauth",
  "teamId": 388889
}

Update Connection

PATCH /make/api/v2/connections/{connectionId}
Content-Type: application/json

{
  "name": "Updated Connection Name"
}

Delete Connection

DELETE /make/api/v2/connections/{connectionId}

Test Connection

POST /make/api/v2/connections/{connectionId}/test

Data Stores

List Data Stores

GET /make/api/v2/data-stores?teamId={teamId}

Response:

{
  "dataStores": [],
  "pg": {"sortBy": "name", "limit": 10000, "sortDir": "asc", "offset": 0}
}

Get Data Store

GET /make/api/v2/data-stores/{dataStoreId}

Create Data Store

POST /make/api/v2/data-stores
Content-Type: application/json

{
  "name": "My Data Store",
  "teamId": 388889,
  "datastructureId": 12345,
  "maxSizeMB": 10
}

Update Data Store

PATCH /make/api/v2/data-stores/{dataStoreId}
Content-Type: application/json

{
  "name": "Updated Name",
  "maxSizeMB": 20
}

Delete Data Stores

DELETE /make/api/v2/data-stores?teamId={teamId}
Content-Type: application/json

{
  "ids": [12345, 67890]
}

Hooks (Webhooks)

List Hooks

GET /make/api/v2/hooks?teamId={teamId}

Response:

{
  "hooks": [],
  "pg": {"sortBy": "name", "limit": 50, "sortDir": "asc", "offset": 0}
}

Get Hook

GET /make/api/v2/hooks/{hookId}

Create Hook

POST /make/api/v2/hooks
Content-Type: application/json

{
  "name": "My Webhook",
  "teamId": 388889,
  "typeName": "web",
  "method": "POST",
  "headers": {},
  "stringify": false
}

Update Hook

PATCH /make/api/v2/hooks/{hookId}
Content-Type: application/json

{
  "name": "Updated Hook Name"
}

Delete Hook

DELETE /make/api/v2/hooks/{hookId}

Enable/Disable Hook

POST /make/api/v2/hooks/{hookId}/enable
POST /make/api/v2/hooks/{hookId}/disable

Ping Hook

GET /make/api/v2/hooks/{hookId}/ping

Templates

List Templates

GET /make/api/v2/templates?teamId={teamId}

Response:

{
  "templates": [],
  "pg": {"sortBy": "id", "limit": 10, "sortDir": "asc", "offset": 0}
}

Get Template

GET /make/api/v2/templates/{templateId}

Get Template Blueprint

GET /make/api/v2/templates/{templateId}/blueprint

Delete Template

DELETE /make/api/v2/templates/{templateId}

Incomplete Executions (DLQs)

List Incomplete Executions

GET /make/api/v2/dlqs?scenarioId={scenarioId}

Response:

{
  "dlqs": [],
  "pg": {"sortBy": "", "limit": 50, "sortDir": "asc", "offset": 0}
}

Get Incomplete Execution

GET /make/api/v2/dlqs/{dlqId}

Retry Incomplete Execution

POST /make/api/v2/dlqs/{dlqId}/retry

Delete Incomplete Executions

DELETE /make/api/v2/dlqs?scenarioId={scenarioId}
Content-Type: application/json

{
  "ids": [12345, 67890]
}

Pagination

Make uses offset-based pagination with pg parameters:

GET /make/api/v2/scenarios?organizationId=123&pg[offset]=0&pg[limit]=50&pg[sortBy]=name&pg[sortDir]=asc

Parameters:

  • pg[offset] - Number of items to skip (default: 0)
  • pg[limit] - Max items per page (varies by endpoint)
  • pg[sortBy] - Field to sort by
  • pg[sortDir] - Sort direction: asc or desc

Response includes pagination metadata:

{
  "scenarios": [...],
  "pg": {
    "sortBy": "name",
    "limit": 500,
    "sortDir": "asc",
    "offset": 0,
    "returnTotalCount": false
  }
}

Code Examples

JavaScript

const response = await fetch(
  'https://gateway.maton.ai/make/api/v2/organizations',
  {
    headers: {
      'Authorization': `Bearer ${process.env.MATON_API_KEY}`
    }
  }
);
const data = await response.json();
console.log(data.organizations);

Python

import os
import requests

response = requests.get(
    'https://gateway.maton.ai/make/api/v2/scenarios',
    headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
    params={'organizationId': 2767268}
)
scenarios = response.json()['scenarios']

List Scenarios and Start One

import os
import requests

headers = {
    'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}',
    'Content-Type': 'application/json'
}

# List scenarios
response = requests.get(
    'https://gateway.maton.ai/make/api/v2/scenarios',
    headers=headers,
    params={'organizationId': 2767268}
)
scenarios = response.json()['scenarios']

# Start first inactive scenario
for scenario in scenarios:
    if not scenario['isActive']:
        requests.post(
            f'https://gateway.maton.ai/make/api/v2/scenarios/{scenario["id"]}/start',
            headers=headers
        )
        print(f"Started scenario: {scenario['name']}")
        break

Notes

  • Make uses zone-specific URLs (e.g., us1.make.com, eu1.make.com) - the gateway handles routing automatically
  • Most list endpoints require either organizationId or teamId parameter
  • Scenario IDs, team IDs, and organization IDs are integers
  • Timestamps use ISO 8601 format
  • Some operations (like getting individual scenarios) may require OAuth instead of API key authentication
  • IMPORTANT: When using curl commands, use curl -g when URLs contain brackets to disable glob parsing
  • IMPORTANT: When piping curl output to jq, environment variables may not expand correctly in some shells

Error Handling

StatusMeaning
400Missing Make connection or invalid request
401Invalid or missing Maton API key
403Permission denied or forbidden operation
404Resource not found
429Rate limited
4xx/5xxPassthrough error from Make API

Resources

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Gpt Image2 Zh

使用 GPT Image 2(OpenAI gpt-image-2)生成高质量图片。由虾聊(ClawdChat)提供支持。当用户要求创建、生成、绘制图片,或提到 GPT 画图、gpt-image-2、OpenAI 生图,或需要精确文字渲染(海报/信息图/菜单字)、多元素指令跟随、图生图保人保物,或使用吉卜力/Pi...

Registry SourceRecently Updated
General

Sendbl

Create sendbl file-exchange links — request files from someone, send a file, check link status, list files in a link, or delete a link. Use when the user wan...

Registry SourceRecently Updated
General

商家GEO推手

中小商家免费GEO优化助手。当商家老板需要以下场景时触发: - 发布企业宣传信息到自媒体平台 - 生成符合SEO/GEO优化的文章内容 - 管理企业在抖音、小红书、知乎、百家号、头条号、搜狐号、网易号、快手等平台的品牌内容 - 上传营业执照、门头照片等产品资料自动生成宣传文案 - 客户案例包装和企业口碑内容创作...

Registry SourceRecently Updated
General

小龙虾备忘录

小龙虾备忘录 — 记录即时想法,让 AI 更好辅助创作

Registry SourceRecently Updated