- name
- make
- description
- |
- compatibility
- Requires network access and valid Maton API key
- metadata
- author
- maton
- version
- 1.0
- clawdbot
- emoji
- 🔧
- homepage
- https://maton.ai
- requires
- env
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))
EOFBase URL
https://gateway.maton.ai/make/api/v2/Only the endpoints listed in the API Reference section below are supported. 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_KEYEnvironment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"Getting Your API Key
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- 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))
EOFCreate 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))
EOFGet 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))
EOFResponse:
{
"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=REDACTED",
"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))
EOFSpecifying 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))
EOFIf you have multiple connections, always include this header to ensure requests go to the intended account.
Security & Permissions
- Access is scoped to scenarios, organizations, teams, connections, data stores, hooks, and templates within the authenticated Make account.
- All write operations require explicit user approval. Before executing any create, update, start, stop, or delete call, confirm the target resource ID and intended effect with the user.
- Persistent resources: Creating or modifying scenarios, hooks, data stores, and connections creates resources that continue operating after the conversation ends. Starting a scenario activates ongoing automation.
- Organizational scope: Organization and team management operations (create/update/delete organizations, teams) affect shared resources visible to all members. Always confirm before modifying shared resources.
API Reference
Users
Get Current User
GET /make/api/v2/users/meResponse:
{
"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/organizationsResponse:
{
"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}/usageTeams
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}/usageScenarios
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}/startStop Scenario
POST /make/api/v2/scenarios/{scenarioId}/stopRun 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]=10Query parameters:
from/to- Timestamp range in millisecondsstatus- 1=success, 2=warning, 3=errorpg[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}/testData 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}/disablePing Hook
GET /make/api/v2/hooks/{hookId}/pingTemplates
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}/blueprintDelete 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}/retryDelete 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]=ascParameters:
pg[offset]- Number of items to skip (default: 0)pg[limit]- Max items per page (varies by endpoint)pg[sortBy]- Field to sort bypg[sortDir]- Sort direction:ascordesc
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']}")
breakNotes
- Make uses zone-specific URLs (e.g.,
us1.make.com,eu1.make.com) - the gateway handles routing automatically - Most list endpoints require either
organizationIdorteamIdparameter - 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 -gwhen 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
| Status | Meaning |
|---|---|
| 400 | Missing Make connection or invalid request |
| 401 | Invalid or missing Maton API key |
| 403 | Permission denied or forbidden operation |
| 404 | Resource not found |
| 429 | Rate limited |
| 4xx/5xx | Passthrough error from Make API |