Scenarios
Scenarios allow you to create and run automation tasks. A scenario consists of a series of modules that indicate how data should be transferred and transformed between apps or services. The following endpoints allow you to create, manage and execute scenarios and also inspect and manage scenario inputs.
Retrieves a collection of all scenarios for a team or an organization with a given ID. Returned scenarios are sorted by proprietary setting in descending order.
The unique ID of the team whose scenarios will be retrieved. If this parameter is set, the organizationId
parameter must be skipped. For each request either teamId
or organizationId
must be defined.
1
The unique ID of the organization whose scenarios will be retrieved. If this parameter is set, the teamId
parameter must be skipped. For each request either teamId
or organizationId
must be defined.
11
The array of IDs of scenarios to retrieve.
[1,2,3]
The unique ID of the folder containing scenarios you want to retrieve.
1
Set this parameter to true
to get only active scenarios in the response.
true
This parameter is deprecated. Use the isActive
parameter to filter for active scenarios instead.
true
If set to true
, the response contains only scenario concepts.
true
Limits the type of scenarios to be retrieved.
false
Possible values: The number of entities you want to skip before getting entities you want.
The maximum number of entities you want to get in the response.
The value that will be used to sort returned entities by.
The sorting order. It accepts the ascending and descending direction specifiers.
GET /api/v2/scenarios HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Retrieved scenarios
{
"scenarios": [
{
"id": 925,
"name": "New scenario",
"teamId": 215,
"hookId": null,
"deviceId": null,
"deviceScope": null,
"concept": false,
"description": "",
"folderId": null,
"isinvalid": false,
"islinked": false,
"isActive": false,
"islocked": false,
"isPaused": false,
"usedPackages": [
"json"
],
"lastEdit": "2021-09-22T06:40:56.692Z",
"scheduling": {
"type": "indefinitely",
"interval": 900
},
"iswaiting": false,
"dlqCount": 0,
"createdByUser": {
"id": 985,
"name": "John Doe",
"email": "[email protected]"
},
"updatedByUser": {
"id": 986,
"name": "John Foo",
"email": "[email protected]"
},
"nextExec": "2021-09-22T06:41:56.692Z",
"created": "2021-10-22T06:41:56.692Z",
"type": "scenario"
}
],
"pg": {
"sortBy": "id",
"sortDir": "desc",
"offset": 0,
"limit": 10
}
}
Creates a new scenario with data passed in the request body. In the response, it returns all details of the created scenario including its blueprint.
If set to true
this parameter confirms the scenario creation when the scenario contains the app that is used in the organization for the first time and needs installation. If the parameter is missing or it is set to false
an error code is returned and the scenario is not created.
true
The scenario blueprint. To save resources, the blueprint is sent as a string, not as an object.
The unique ID of the team in which the scenario will be created.
The scenario scheduling details. To save resources, the scheduling details are sent as a string, not as an object.
The unique ID of the folder in which you want to store created scenario.
Defines if the scenario is created based on a template. The value is the template ID.
POST /api/v2/scenarios HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 730
{
"blueprint": "{ \"name\": \"Empty integration\", \"flow\": [ { \"id\": 2, \"module\": \"json:ParseJSON\", \"version\": 1, \"metadata\": { \"designer\": { \"x\": -46, \"y\": 47, \"messages\": [ { \"category\": \"last\", \"severity\": \"warning\", \"message\": \"A transformer should not be the last module in the route.\" } ] } } } ], \"metadata\": { \"version\": 1, \"scenario\": { \"roundtrips\": 1, \"maxErrors\": 3, \"autoCommit\": true, \"autoCommitTriggerLast\": true, \"sequential\": false, \"confidential\": false, \"dataloss\": false, \"dlq\": false, \"freshVariables\": false }, \"designer\": { \"orphans\": [ ] } } }",
"teamId": 1,
"scheduling": "{ \"type\": \"indefinitely\", \"interval\": 900 }",
"folderId": 1,
"basedon": 20
}
Scenario created successfully
{
"scenario": {
"id": 925,
"name": "New scenario",
"teamId": 215,
"hookId": null,
"deviceId": null,
"deviceScope": null,
"concept": false,
"description": "",
"folderId": null,
"isinvalid": false,
"islinked": false,
"isActive": false,
"islocked": false,
"isPaused": false,
"usedPackages": [
"json"
],
"lastEdit": "2021-09-22T06:40:56.692Z",
"scheduling": {
"type": "indefinitely",
"interval": 900
},
"iswaiting": false,
"dlqCount": 0,
"createdByUser": {
"id": 985,
"name": "John Doe",
"email": "[email protected]"
},
"updatedByUser": {
"id": 986,
"name": "John Foo",
"email": "[email protected]"
},
"nextExec": "2021-09-22T06:41:56.692Z",
"created": "2021-10-22T06:41:56.692Z",
"type": "scenario"
}
}
Retrieves all available properties of a scenario with a given ID. The returned details do not include a scenario blueprint. If you want to get a scenario blueprint, refer to the Get scenario blueprint endpoint.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
GET /api/v2/scenarios/{scenarioId} HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Successful response
{
"scenario": {
"id": 925,
"name": "New scenario",
"teamId": 215,
"hookId": null,
"deviceId": null,
"deviceScope": null,
"concept": false,
"description": "",
"folderId": null,
"isinvalid": false,
"islinked": false,
"isActive": false,
"islocked": false,
"isPaused": false,
"usedPackages": [
"json"
],
"lastEdit": "2021-09-22T06:40:56.692Z",
"scheduling": {
"type": "indefinitely",
"interval": 900
},
"iswaiting": false,
"dlqCount": 0,
"createdByUser": {
"id": 985,
"name": "John Doe",
"email": "[email protected]"
},
"updatedByUser": {
"id": 986,
"name": "John Foo",
"email": "[email protected]"
},
"nextExec": "2021-09-22T06:41:56.692Z",
"created": "2021-10-22T06:41:56.692Z",
"type": "scenario"
}
}
Deletes a scenario with a given ID and returns the ID in the response.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
DELETE /api/v2/scenarios/{scenarioId} HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Scenario deleted successfully
{
"scenario": 1399
}
Updates a scenario with a given ID by passing new values in the request body. Any property that is not provided will be left unchanged. In the response, it returns all details of the updated scenario including properties that were not changed.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
If set to true
this parameter confirms the scenario update when the scenario contains the app that is used in the organization for the first time and needs installation. If the parameter is missing or it is set to false
an error code is returned and the scenario is not updated.
true
The scenario blueprint. To save resources, the blueprint is sent as a string, not as an object.
The scenario scheduling details. To save resources, the scheduling details are sent as a string, not as an object.
The unique ID of the folder in which you want to store created scenario.
A new name of the scenario. The name does not need to be unique.
PATCH /api/v2/scenarios/{scenarioId} HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 734
{
"blueprint": "{ \"name\": \"Empty integration\", \"flow\": [ { \"id\": 2, \"module\": \"json:ParseJSON\", \"version\": 1, \"metadata\": { \"designer\": { \"x\": -46, \"y\": 47, \"messages\": [ { \"category\": \"last\", \"severity\": \"warning\", \"message\": \"A transformer should not be the last module in the route.\" } ] } } } ], \"metadata\": { \"version\": 1, \"scenario\": { \"roundtrips\": 1, \"maxErrors\": 3, \"autoCommit\": true, \"autoCommitTriggerLast\": true, \"sequential\": false, \"confidential\": false, \"dataloss\": false, \"dlq\": false, \"freshVariables\": false }, \"designer\": { \"orphans\": [ ] } } }",
"scheduling": "{ \"type\": \"indefinitely\", \"interval\": 900 }",
"folderId": 1,
"name": "My New Integration"
}
Scenario was updated successfully
{
"scenario": {
"id": 925,
"name": "New scenario",
"teamId": 215,
"hookId": null,
"deviceId": null,
"deviceScope": null,
"concept": false,
"description": "",
"folderId": null,
"isinvalid": false,
"islinked": false,
"isActive": false,
"islocked": false,
"isPaused": false,
"usedPackages": [
"json"
],
"lastEdit": "2021-09-22T06:40:56.692Z",
"scheduling": {
"type": "indefinitely",
"interval": 900
},
"iswaiting": false,
"dlqCount": 0,
"createdByUser": {
"id": 985,
"name": "John Doe",
"email": "[email protected]"
},
"updatedByUser": {
"id": 986,
"name": "John Foo",
"email": "[email protected]"
},
"nextExec": "2021-09-22T06:41:56.692Z",
"created": "2021-10-22T06:41:56.692Z",
"type": "scenario"
}
}
Retrieves properties of a trigger included in a scenario with a given ID. A trigger is a module that is able to return bundles that were newly added or updated (depending on the settings) since the last run of the scenario. An example of a trigger is a hook.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
GET /api/v2/scenarios/{scenarioId}/triggers HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Successful response
{
"id": 9765,
"name": "WH1",
"udid": "e7cq6zty4qcnq7fb83kzcdsgqniqtd5c",
"scope": "hook",
"queueCount": 0,
"queueLimit": 100000,
"typeName": "gateway-webhook",
"type": "web",
"flags": {},
"url": "https://hook.make.com/e7cq6zty4qcnq7fb83kzcdsgqniqtd5c"
}
Clones the specified scenario. The response contains all information about the scenario clone.
You have to know which app integrations the scenario contains. You can get a list of apps used in the scenario with the API call GET /scenarios/{scenarioId}
in the usedPackages
array.
If you are cloning the scenario to a different team and the scenario contains an app module, webhook or data store, you have to either:
map the entity ID to a different entity with the correct properties. For example, you can map an app module connection to a different connection of the same app with the same scopes, or
use the
notAnalyze
query parameter to turn off the scenario clone blueprint analysis.
When you turn off the scenario blueprint analysis you can map the entity ID to the null
value, which omits the entity settings.
The scenario blueprint analysis makes sure that the scenario clone will work without further changes. If you turn off the scenario blueprint analysis, check the configuration of all entities in the scenario clone.
If you are cloning the scenario to a different team and the scenario contains a custom app or a custom function, which is not available for the users in the team, use the confirmed
query parameter to confirm cloning of the scenario. Otherwise, you get an error listing the custom function that you have to create in the team.
Refer to the request body parameters description and examples for more information.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
The ID of the organization.
11
If the scenario contains a custom app or a custom function, that is not available in the team, you have to set the confirmed
parameter to true
to clone the scenario. Otherwise you get an error and the scenario is not cloned.
{"value":true}
If you are cloning a scenario to a different team, you have to map the scenario entities (connections, data stores, webhooks, ...) from the original to the clone. If you cannot map all of the scenario entities, set the notAnalyze
parameter to true
to suppress the scenario blueprint analysis.
{"value":true}
The name for the scenario clone. The maximum length of the name is 120 characters.
The ID of the team to which you want to clone the scenario.
Set to true
to clone also states of the scenario modules, for example last scenario trigger execution. Setting to false
resets the state information of the scenario modules in the scenario clone.
POST /api/v2/scenarios/{scenarioId}/clone HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 199
{
"name": "Scenario clone",
"teamId": 20030,
"states": true,
"account": {
"4400": 5564,
"5500": 7542
},
"key": {
"4383": 465
},
"hook": {
"11899": 11900
},
"device": {
"432": 116
},
"udt": {
"4130": 5698
},
"datastore": {
"3572": 4587
}
}
Successful response
{
"id": 925,
"name": "Scenario clone",
"teamId": 20030,
"hookId": 11900,
"deviceId": 116,
"deviceScope": null,
"concept": false,
"description": "",
"folderId": null,
"isinvalid": false,
"isActive": false,
"islinked": false,
"islocked": false,
"isPaused": false,
"usedPackages": [
"gateway",
"airtable",
"datastore",
"google-sheets",
"util"
],
"lastEdit": "2021-09-22T06:40:56.692Z",
"scheduling": {
"type": "indefinitely",
"interval": 900
},
"iswaiting": false,
"dlqCount": 0,
"createdByUser": {
"id": 985,
"name": "John Doe",
"email": "[email protected]"
},
"updatedByUser": {
"id": 986,
"name": "John Foo",
"email": "[email protected]"
},
"nextExec": "2021-09-22T06:41:56.692Z"
}
Verifies whether the module data is set or not. This endpoint doesn't retrieve the module data.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
The unique ID of the scenario module. It is available in the scenario blueprint that can be retrieved from the Get scenario blueprint endpoint.
1
GET /api/v2/scenarios/{scenarioId}/data/{moduleId} HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Successful response
{
"exists": true
}
Activates the specified scenario. Also runs the scenario if the scenario is scheduled to run at regular intervals. Read more about scenario scheduling.
The API call response contains the scenario ID and the scenario isActive
property set to true
.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
POST /api/v2/scenarios/{scenarioId}/start HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Successful response
{
"scenario": {
"id": 5,
"isActive": true,
"islinked": true
}
}
Deactivates and stops the specified scenario if the scenario is running. The API call response contains the scenario ID and the scenario isActive
property set to false
.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
POST /api/v2/scenarios/{scenarioId}/stop HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Successful response
{
"scenario": {
"id": 5,
"isActive": false,
"islinked": false
}
}
Runs the specified scenario. The scenario has to be active. If your scenario has required scenario inputs you have to provide the scenario inputs in the request body. If the scenario provides scenario outputs, these are returned in the response.
The ID of the scenario. Get the ID of the scenario with the API call GET /scenarios
.
111
If your scenario has inputs specify the input parameters and values in the data
object.
If set to true
the Make API waits until the scenario finishes. The response contains the scenario status
and executionId
. If the scenario execution takes longer than 40 seconds, the API call returns the time out error, but the scenario is still executed.
If set to false
the API call returns immediately without waiting. The response contains only the executionId
.
false
Url that will be called once the scenario execution finishes. If the run is responsive and finishes within 40 seconds, the url is not called since the result is present in the response.
The callbackUrl
will be called using a POST
request with the following body:
{
"executionId": executionId
,
"statusUrl": "url to retrieve execution status and outputs via GET"
}
POST /api/v2/scenarios/{scenarioId}/run HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 163
{
"data": {
"Test input": "Test value",
"My array": [
"test 1",
"test 2"
],
"My collection": {
"key": "value"
}
},
"responsive": false,
"callbackUrl": "https://example.com/callback"
}
Successful response
{
"executionId": "9c4874979d974c3ebdef1e8aaa7dc452"
}
Retrieves the scenario inputs and outputs specification for the specified scenario. Check out the scenario inputs and outputs documentation in the Make help center.The scenario inputs and outputs feature is available with all plans. Read more about Make pricing.
The ID of the scenario. Get the list of scenarios with the API call GET /scenarios
.
111
GET /api/v2/scenarios/{scenarioId}/interface HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Successful response
{
"interface": {
"input": [
{
"name": "email",
"type": "text",
"default": null,
"required": false,
"multiline": false
}
],
"output": null
}
}
Updates specification of the scenario inputs. Check out the scenario inputs documentation in the Make help center.
If you want to enable the scenario inputs you have to set the scenario scheduling to "On demand" first, otherwise you get error 422 (IM016). You can use the API call:
PATCH /scenarios/{scenarioId}?confirmed=true
with the request body:
{"scheduling": "{\"type\":\"on-demand\"}"}
You can disable inputs for the specified scenario by sending a payload with an empty input
array.
The response contains the updated scenario inputs specification.
The scenario inputs feature requires your account to have the pricing plan Pro or higher. Read more about Make pricing.
The ID of the scenario. Get the list of scenarios with the API call GET /scenarios
.
111
PATCH /api/v2/scenarios/{scenarioId}/interface HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 546
{
"interface": {
"input": [
{
"name": "userName",
"type": "text",
"default": "John Doe",
"required": true,
"multiline": false
},
{
"name": "employeeID",
"type": "number",
"default": null,
"required": false
},
{
"name": "enabledApps_array",
"spec": {
"type": "text",
"default": "Salesforce",
"required": true,
"multiline": false
},
"type": "array"
},
{
"name": "myTestInput4_collection",
"spec": [
{
"name": "accountName",
"type": "text",
"default": "John Doe",
"required": true,
"multiline": false
},
{
"name": "accountID",
"type": "number",
"default": null,
"required": true
}
],
"type": "collection"
}
],
"output": null
}
}
Successful response
{
"interface": {
"input": [
{
"name": "userName",
"type": "text",
"default": "John Doe",
"required": true,
"multiline": false
},
{
"name": "employeeID",
"type": "number",
"default": null,
"required": false
},
{
"name": "enabledApps_array",
"spec": {
"type": "text",
"default": "Salesforce",
"required": true,
"multiline": false
},
"type": "array"
},
{
"name": "myTestInput4_collection",
"spec": [
{
"name": "accountName",
"type": "text",
"default": "John Doe",
"required": true,
"multiline": false
},
{
"name": "accountID",
"type": "number",
"default": null,
"required": true
}
],
"type": "collection"
}
],
"output": null
}
}
Retrieves a list of daily operations and data transfer usage for a specified scenario over the past 30 days.
By default, the endpoint uses the timezone of the user making the API call to define the start and end of each day in the 30-day timeframe.
To use the organization's timezone instead, set the organizationTimezone
parameter to true
. This ensures that the daily aggregates align with the organization's operational hours. This is especially useful for scenarios where aggregated data needs to align with the organization's operational hours.
For instance, a remote data analyst in India working for a Czech company can set organizationTimezone=true
to ensure the usage data reflects the company's timezone, providing more relevant and accurate insights for organizational reporting and analysis.
For more information on timezones in Make, please refer to our Help Center article.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
When set to true
, the endpoint will calculate and return usage data based on the organization's timezone instead of the user's local timezone.
true
GET /api/v2/scenarios/{scenarioId}/usage HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Successfully retrieved usage data
{
"data": [
{
"date": "2024-05-30",
"operations": 9,
"dataTransfer": 135
},
{
"date": "2024-05-31",
"operations": 15,
"dataTransfer": 157
}
]
}
Retrieves buildtime variables of a scenario with the given ID. Buildtime variables could be team or user defined, team defined ones are prefixed with a TAC_
and user defined variables are prefixed with a PAC_
. TAC_
s can be used within the scenario as per its input spec by the entire team, whereas PAC_
s can only be used within the scenario by the user who added them.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
GET /api/v2/scenarios/{scenarioId}/build-variables HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Successful response
{
"variables": {
"input": {
"myPersonalConn1": "PAC_123455551",
"ourTeamConn1": "TAC_11112222"
}
}
}
Adds new buildtime team or user defined variable/s. Buildtime variables should be prefixed either with a TAC_
(for team defined variables) or with a PAC_
(for personal user defined variables), followed by the connection value. If a variable already exists, an error will be thrown. If a variable's name is not within scenario input specification, an error will be thrown. If the adding of new variables was successful the reponse would be OK
.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
POST /api/v2/scenarios/{scenarioId}/build-variables HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 62
{
"input": [
{
"name": "myPersonalConn1",
"value": "PAC_123455552"
}
]
}
Buildtime variables added successfully
{
"ok": 1
}
Updates team or user defined buildtime variable/s. The endpoint updates and overwrites exsiting records with the newly provided values, meaning any existing buildtime variable which is not provided through the payload will be overwritten. Buildtime variables should be prefixed either with a TAC_
(for team defined variables) or with a PAC_
(for personal user defined variables), followed by the connection value. If a variable doesn't exist, it will be added provided that its name is within the scenario input specification. If the updating of variables was successful the reponse would be OK
.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
PUT /api/v2/scenarios/{scenarioId}/build-variables HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 109
{
"input": [
{
"name": "myPersonalConn1",
"value": "PAC_123455552"
},
{
"name": "ourTeamConn1",
"value": "TAC_11112222"
}
]
}
Buildtime variables updated successfully
{
"ok": 1
}
Deletes a buildtime variable with a given value for a scenario with a given ID and returns OK
in the response.
The ID of the scenario. You can get the scenarioId
with the List scenarios API call.
112
The value of the buildtime variable
PAC_123455551
DELETE /api/v2/scenarios/{scenarioId}/build-variables HTTP/1.1
Host: eu1.make.com
Authorization: YOUR_API_KEY
Accept: */*
Buildtime variable deleted successfully
{
"ok": 1
}