Maestro Content API (2.0.0)
Download OpenAPI specification:Download
Maestro Content API documentation provides instructions on using REST APIs Maestro has chosen to publicly expose to its developer customers.
Maestro APIs are defined using the OpenAPI 3.0 specification (formally Swagger). You can download these specs and use them to generate client SDKs in your prefered language. (see "Code Generation" section)
API authentication requires some combination of Client ID (same as site ID), developer API key, and/or JWT (JSON Web Token). See "Authentication" section for details.
While Maestro provides code samples using cURL and NodeJS Axios, developers can also use the Postman application to translate a REST call into approximately 30 other programming languages.
Maestro is committed to keeping its API documentation comprehensive and high-quality. If you have feedback you would like to share with us, please email our documentation team:
Click to bring up email modal > documentation@maestro.io.
When reporting missing or incorrect information, please be as specific and detailed as possible so we have a clear understanding of the problem. Please be aware this email is for documentation ONLY and not technical help issues.
An access code is associated with a subscription entitlement and a scheduled event. Typically, they are used to allow selected customers to bypass payment for an event. Though Maestro generates these codes for you in either a CSV or JSON file, it is up to you to manage them after that.
Add access code
Adds an access code to a subscription entitlement.
Sample call:
curl -X POST 'https://api.maestro.io/accesscode/v1/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your API Key>' \ -d 'accessCode=67899&siteId=<site ID>&sku=my-new-entitlement&type=subscription
Authorizations:
query Parameters
accessCode required | string Access code |
siteId required | string Maestro site ID (same as x-maestro-client-id) |
sku required | string SKU from subscription entitlement |
type required | string (TAccessCodeType) Enum: "subscription" "login" Access code type |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Responses
Response samples
- 200
{- "accessCode": "ABCD-EFGH",
- "siteId": "YOUR_MAESTRO_SITE_ID",
- "sku": "EXAMPLE-SKU",
- "type": "subscription"
}
Get access code
Gets an access code given its ID in the path.
Sample call:
curl 'https://api.maestro.io/accesscode/v1/<Access code ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your API Key>'
Authorizations:
path Parameters
id required | string Access code ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Response samples
- 200
{- "accessCode": "abcd-1234",
- "siteId": "Your site ID",
- "sku": "My-entitlement",
- "type": "subscription"
}
Delete access code
Deletes an access code given its ID in the path.
Sample call:
curl -X DELETE 'https://api.maestro.io/accesscode/v1/60b8bfc854fe01002dc6d7ef' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization Bearer <Your JWT token>'
Authorizations:
path Parameters
id required | string Access code ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Consume access code
Consumes an access code.
Sample call:
curl 'https://api.maestro.io/accesscode/v1/consume/05RD8S' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization Bearer <Your JWT token>'
Authorizations:
path Parameters
accessCode required | string Access code value |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Response samples
- 200
{- "success": true,
- "message": "string"
}
Bulk generate access codes
Generates access codes for a subscription entitlement in either csv or json format.
Sample call:
curl -X POST 'https://api.maestro.io/accesscode/v1/bulk?kind=json' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your API Key>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"sku":"my-new-entitlement", "qty": 10}'
Authorizations:
query Parameters
kind | string Default: "json" Enum: "csv" "json" Generated access codes response format |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Bulk access code generation parameters
qty required | number [ 1 .. 100000 ] How many access codes to generate |
sku required | string Subscription SKU |
Responses
Request samples
- Payload
{- "qty": 1,
- "sku": "string"
}
Response samples
- 200
[- {
- "_id": "string",
- "accessCode": "string",
- "siteId": "string",
- "sku": "string",
- "type": "subscription",
- "created": 0,
- "modified": 0
}
]
Generate TV access code
Generates a TV access code for a specific device and site.
header Parameters
x-maestro-client-id required | string Maestro Site Id |
Request Body schema: application/json
TV access code generation parameters
deviceId required | string Identifier for the TV device |
Responses
Request samples
- Payload
{- "deviceId": "string"
}
Response samples
- 201
- 404
- 500
{- "code": "string",
- "expiresAt": 0
}
Activate an existing TV code
Activates a TV access code
header Parameters
x-maestro-client-id required | string Maestro Site Id |
Authorization required | string JWT Bearer token |
Request Body schema: application/json
TV access code activation parameters
code required | string TV code which needs to be activated |
Responses
Request samples
- Payload
{- "code": "string"
}
Response samples
- 200
- 500
{- "success": true
}
Get account
Gets an account, given its ID in the path.
Sample call:
curl 'https://api.maestro.io/account/v3/<id>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \
path Parameters
id required | string Account ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID', 'Authorization': 'Bearer <Your JWT token>' }; axios.get('https://api.maestro.io/account/v3/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "_id": "string",
- "siteId": "string",
- "globalAccountID": "string",
- "email": "string",
- "marketingOptin": true,
- "name": "string",
- "normalizedName": "string",
- "thirdPartyAuthProviders": [
- {
- "accountId": "string",
- "provider": "string"
}
], - "hash": "string",
- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
], - "subscriptions": [
- {
- "_id": "string",
- "accountId": "string",
- "dateGranted": "string",
- "entitlement": {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "grantedMethod": "accessCode",
- "presentmentCurrency": "string",
- "siteId": "string",
- "status": "active",
- "created": 0,
- "modified": 0
}
], - "uid": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Update account
Updates an account given its ID in the path.
Sample call:
curl -X PUT 'https://api.maestro.io/account/v3/<account ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d '{"thirdPartyAuthProviders":[{"accountId": "7476398876", "provider": "facebook"}]}'
path Parameters
id required | string Account ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to update account
string Account email | |
password | string Account password |
name | string Name |
Array of objects (ThirdPartyAuthProvider) Third-party authorization providers | |
Array of objects (AccountRole) Site roles and permissions |
Responses
Request samples
- Payload
- javascript
{- "email": "string",
- "password": "string",
- "name": "string",
- "thirdPartyAuthProviders": [
- {
- "accountId": "string",
- "provider": "string"
}
], - "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
]
}
Response samples
- 200
{- "_id": "string",
- "siteId": "string",
- "globalAccountID": "string",
- "email": "string",
- "marketingOptin": true,
- "name": "string",
- "normalizedName": "string",
- "thirdPartyAuthProviders": [
- {
- "accountId": "string",
- "provider": "string"
}
], - "hash": "string",
- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
], - "subscriptions": [
- {
- "_id": "string",
- "accountId": "string",
- "dateGranted": "string",
- "entitlement": {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "grantedMethod": "accessCode",
- "presentmentCurrency": "string",
- "siteId": "string",
- "status": "active",
- "created": 0,
- "modified": 0
}
], - "uid": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Delete account
Deletes an account, given its ID in the path.
Sample call:
curl -X DELETE 'https://api.maestro.io/account/v3/<account ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>' \ -H 'Authorization: Bearer <Your JWT token>'
path Parameters
id required | string Account ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID', 'Authorization': 'Bearer <Your JWT token>' }; axios.delete('https://api.maestro.io/account/v3/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Get site accounts
Gets site accounts with filter options.
Sample call:
curl 'https://api.maestro.io/account/v3?name=Ryan' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>'
query Parameters
search | string Search using account object field(s), i.e., /v3?marketingOptin=true |
offset | string Offset from beginning |
limit | number Max to return, default is 50. |
sortBy | string Field to sort by, i.e., name |
sortDirection | string Sort order - 1=ascending, 2=descending |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/account/v3?name=Ryan', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "pagination": {
- "limit": 0,
- "offset": 0,
- "searchFields": [
- "string"
], - "sortDirection": 0,
- "totalCount": 0
}, - "results": [
- {
- "_id": "string",
- "siteId": "string",
- "globalAccountID": "string",
- "email": "string",
- "marketingOptin": true,
- "name": "string",
- "normalizedName": "string",
- "thirdPartyAuthProviders": [
- {
- "accountId": "string",
- "provider": "string"
}
], - "hash": "string",
- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
], - "subscriptions": [
- {
- "_id": "string",
- "accountId": "string",
- "dateGranted": "string",
- "entitlement": {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "grantedMethod": "accessCode",
- "presentmentCurrency": "string",
- "siteId": "string",
- "status": "active",
- "created": 0,
- "modified": 0
}
], - "uid": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
}
Create account
Creates a new account
Sample call:
curl -X POST 'https://api.maestro.io/account/v3/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -d "email=jennydoe@somewebsite.com&password=8675309JD&name=Jenny Doe"
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Request Body schema: text/plain
Parameters to create account
email required | string Account email |
password required | string Account password |
name required | string Account name |
marketingOptin | boolean Receive Maestro marketing email flag |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; const account = {"siteId":"string""email":"string""name":"string""lastLogin":42"thirdPartyAuthProviders":[]"hash":"string""roles":[]"uid":"string""created":42} axios.post('https://api.maestro.io/account/v3/', { headers }, account) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 201
{- "_id": "string",
- "siteId": "string",
- "globalAccountID": "string",
- "email": "string",
- "marketingOptin": true,
- "name": "string",
- "normalizedName": "string",
- "thirdPartyAuthProviders": [
- {
- "accountId": "string",
- "provider": "string"
}
], - "hash": "string",
- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
], - "subscriptions": [
- {
- "_id": "string",
- "accountId": "string",
- "dateGranted": "string",
- "entitlement": {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "grantedMethod": "accessCode",
- "presentmentCurrency": "string",
- "siteId": "string",
- "status": "active",
- "created": 0,
- "modified": 0
}
], - "uid": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Update account
Updates an account.
Sample call:
curl -X PUT 'https://api.maestro.io/account/v3/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d '{"thirdPartyAuthProviders":[{"accountId": "7476398876", "provider": "facebook"}]}'
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to update account
string Account email | |
password | string Account password |
name | string Name |
Array of objects (ThirdPartyAuthProvider) Third-party authorization providers | |
Array of objects (AccountRole) Site roles and permissions |
Responses
Request samples
- Payload
- javascript
{- "email": "string",
- "password": "string",
- "name": "string",
- "thirdPartyAuthProviders": [
- {
- "accountId": "string",
- "provider": "string"
}
], - "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
]
}
Response samples
- 200
{- "_id": "string",
- "siteId": "string",
- "globalAccountID": "string",
- "email": "string",
- "marketingOptin": true,
- "name": "string",
- "normalizedName": "string",
- "thirdPartyAuthProviders": [
- {
- "accountId": "string",
- "provider": "string"
}
], - "hash": "string",
- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
], - "subscriptions": [
- {
- "_id": "string",
- "accountId": "string",
- "dateGranted": "string",
- "entitlement": {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "grantedMethod": "accessCode",
- "presentmentCurrency": "string",
- "siteId": "string",
- "status": "active",
- "created": 0,
- "modified": 0
}
], - "uid": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Send password reset email
Sends a password reset email to account.
Sample call:
curl -X POST 'https://api.maestro.io/account/v3/reset' \ -H 'x-maestro-client-id: <Your Client ID>' \ -d 'baseUrl=https://www.maestro.io/deliton/home-page&email=sa@paulgoldman.com'
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Request Body schema: text/plain
Parameters to send password reset email
email required | string Account email |
baseUrl required | string Base URL |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; const passwordResetInfo = {"baseUrl":"string""email":"string"} axios.post('https://api.maestro.io/account/v3/reset/', { headers }, passwordResetInfo) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Update user password
Updates a user's password using token received in send password reset email API.
Sample call:
curl 'https://api.maestro.io/account/v3/reset/update' \ -H 'x-maestro-client-id: <Your Client ID>' \ -d "token=<token>&password=123pass"
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Request Body schema: text/plain
Parameters to update password
token required | string Token sent in email |
password required | string New password |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; const updatePasswordInfo = {"token":"string""password":"string"} axios.post('https://api.maestro.io/account/v3/update/', { headers }, updatePasswordInfo) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Get accounts and user profiles
Gets accounts and user profiles with filter options.
User profiles contain an account's ID and name.
Sample call:
curl 'https://api.maestro.io/account/v3/roles/query?admin=true' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>'
query Parameters
property | string Account property filter, i.e., /query?marketingOptin=true |
admin | boolean If true, only admin accounts are returned. If false or omitted, all accounts are returned. |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer key |
Responses
Request samples
- javascript
const axios = require('axios'); const querystring = require('querystring'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; const params = querystring.stringify({ search: searchFields: admin: accountQuery: }) axios.get('https://api.maestro.io/account/v3/update/', params, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "accounts": [
- {
- "_id": "string",
- "siteId": "string",
- "globalAccountID": "string",
- "email": "string",
- "marketingOptin": true,
- "name": "string",
- "normalizedName": "string",
- "thirdPartyAuthProviders": [
- {
- "accountId": "string",
- "provider": "string"
}
], - "hash": "string",
- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
], - "subscriptions": [
- {
- "_id": "string",
- "accountId": "string",
- "dateGranted": "string",
- "entitlement": {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "grantedMethod": "accessCode",
- "presentmentCurrency": "string",
- "siteId": "string",
- "status": "active",
- "created": 0,
- "modified": 0
}
], - "uid": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
], - "userProfiles": [
- {
- "_id": "string",
- "accountId": "string",
- "name": "string",
- "created": 0,
- "modified": 0
}
]
}
Get account roles
Gets an account's roles, given its ID in the path.
Sample call:
curl 'https://api.maestro.io/account/v3/roles/<account ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>' \ -H 'Authorization: Bearer <Your JWT token>'
path Parameters
id required | string Account ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer key |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID', 'Authorization': 'Bearer <Your JWT token>' }; axios.get('https://api.maestro.io/account/v3/roles/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
]
Update account roles
Updates an account's roles, given its ID in the path.
Sample call:
curl -X PUT 'https://api.maestro.io/account/v3/roles/<account ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d '{"roles":[{"scope":"*","pageId":[],"write":true}]}'
path Parameters
id required | string Account ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer key |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to update account roles
required | Array of objects (AccountRole) Updated account roles | ||||||
Array
|
Responses
Request samples
- Payload
- javascript
{- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
]
}
Response samples
- 200
{- "_id": "string",
- "siteId": "string",
- "globalAccountID": "string",
- "email": "string",
- "marketingOptin": true,
- "name": "string",
- "normalizedName": "string",
- "thirdPartyAuthProviders": [
- {
- "accountId": "string",
- "provider": "string"
}
], - "hash": "string",
- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
], - "subscriptions": [
- {
- "_id": "string",
- "accountId": "string",
- "dateGranted": "string",
- "entitlement": {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "grantedMethod": "accessCode",
- "presentmentCurrency": "string",
- "siteId": "string",
- "status": "active",
- "created": 0,
- "modified": 0
}
], - "uid": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Update password
Updates an account password.
Sample call:
curl -X PUT 'https://api.maestro.io/account/v3/password' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d '{"password":"new password", "oldPassword":"password"}'
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to update password
password required | string New account password |
oldPassword required | string Old account password |
Responses
Request samples
- Payload
- javascript
{- "password": "string",
- "oldPassword": "string"
}
Get site global accounts
Gets site global accounts.
Sample call:
curl 'https://api.maestro.io/account/v3/global/accounts' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' 'Authorization': 'Bearer <Your JWT token>' }; axios.get('https://api.maestro.io/account/v3/global/accounts', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "_id": "string",
- "siteID": "string",
- "slug": "string"
}
]
Send password reset email for global accounts
Sends password reset email for global accounts.
Sample call:
curl -X POST 'https://api.maestro.io/account/v3/reset/global-accounts' \ -H 'x-maestro-client-id: <Your Client ID>' \ -d 'baseUrl=https://www.maestro.io/deliton/home-page&email=sa@paulgoldman.com'
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Request Body schema: text/plain
Parameters to send password reset email
email required | string Account email |
baseUrl required | string Base URL |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; const passwordResetInfo = {"baseUrl":"string""email":"string"} axios.post('https://api.maestro.io/account/v3/reset/global-accounts', { headers }, passwordResetInfo) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Update user password for global accounts
Updates a user's password for global accounts using token received in send password reset email API.
Sample call:
curl 'https://api.maestro.io/account/v3/reset/global-accounts/update' \ -H 'x-maestro-client-id: <Your Client ID>' \ -d "token=<token>&password=123pass"
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Request Body schema: text/plain
Parameters to update password
token required | string Token sent in email |
password required | string New password |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; const updatePasswordInfo = {"token":"string""password":"string"} axios.post('https://api.maestro.io/account/v3/reset/global-accounts/update/', { headers }, updatePasswordInfo) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Authenticate an account
Authenticate an account and return a JWT
header Parameters
x-maestro-client-id required | string Your Maestro Site ID |
Request Body schema: application/json
Parameters to sign in to your account
email required | string Account email |
password required | string Account password |
Responses
Request samples
- Payload
- javascript
{- "email": "string",
- "password": "string"
}
Response samples
- 200
{- "jwt": "string",
- "refreshToken": "string",
- "service": "string"
}
Generate a login intent
Generate a login intent
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Request Body schema: application/json
Parameters to create a login intent
jwt required | string Account email |
name required | string Account name |
provider required | string Service provider |
service required | string Service name |
thirdPartyAccountId required | string Service name |
Responses
Request samples
- Payload
- javascript
{- "jwt": "string",
- "name": "string",
- "provider": "string",
- "service": "string",
- "thirdPartyAccountId": "string"
}
Response samples
- 200
{- "authenticated": true,
- "jwt": "string",
- "service": "string",
- "siteId": "string",
- "token": "string",
- "name": "string",
- "thirdPartyAccountId": "string"
}
Consumes an auth intent and returns a jwt
Consumes an auth intent and returns a jwt.
path Parameters
token required | string Token ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/auth/v2/intent/consume/8a824eef-4ee2-4416-906e-6ba2bd2a0238', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "jwt": "string",
- "refreshToken": "string",
- "service": "string"
}
Initiate a refund
Initiate a refund through Stripe for the given charge ID and card holder.
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Authorization required | string Your <JWT> |
Request Body schema: application/json
Request body to create a refund
accountId required | string Maestro account ID |
amount | number Refund amount. If omitted, full amount is refunded. |
chargeId required | string Stripe charge ID |
reason required | string (RefundReason) Enum: "duplicate" "fraudulent" "requested_by_customer" Stripe refund reasons |
Responses
Request samples
- Payload
- javascript
{- "accountId": "string",
- "amount": 0,
- "chargeId": "string",
- "reason": "duplicate"
}
Response samples
- 200
{- "success": true,
- "errorMessage": "string"
}
Verify domain with Stripe and Apple Pay
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro client ID (same as site ID) |
Authorization required | string Bearer <Your JWT> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { authorization: 'Your JWT', ['x-maestro-client-id']: 'Your Maestro client ID' }; axios.post( 'https://api.maestro.io/billing/v1/status/apple-pay-verify', { headers }, {} ) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
true
Add a new Bundle
Adds a new Bundle to your site.
Sample call:
curl -X POST 'https://api.maestro.io/bundle/v1/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d "accountId=<Account ID>&sku=example-entitlement"
Authorizations:
header Parameters
x-maestro-client-id required | string Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to craete bundle
_id | string Bundle ID |
name | string Bundle name |
description | string Bundle description |
image | string Bundle image URL |
sku | string Bundle SKU |
siteId | string Site ID |
presentmentCurrency | string Currency Code (USD, EUR, BRL, etc.) |
price | number Bundle price |
Array of objects (BundleItem) | |
created | number When bundle created in UNIX time |
modified | number When bundle last modified in UNIX time |
tags | Array of strings Metadata tags |
Responses
Request samples
- Payload
- javascript
{- "_id": "string",
- "name": "string",
- "description": "string",
- "image": "string",
- "sku": "string",
- "siteId": "string",
- "presentmentCurrency": "string",
- "price": 0,
- "items": [
- {
- "id": "string",
- "type": "string"
}
], - "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Get Bundle (ID)
Gets a bundle given its ID in the path.
Sample call:
curl 'https://api.maestro.io/bundle/v1/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>'
Sample return:
{ "id": "5f7b9b9b9b9b9b9b9b9b9b9b", "name": "MyBundle", "sku": "my-bundle-1", "price": 100, "presentmentCurrency": "USD", "items": [ { "type": "ticket", "id": "123456789" } ], "description": "MyBundle description", "image": "https://example.com/image.png" }
Authorizations:
path Parameters
id required | string Bundle ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'get', url: 'https://api.maestro.io/bundle/v1/<BUNDLE_ID>', headers: { 'x-maestro-client-id': 'Your client ID', 'Authorization': 'Bearer <Your JWT token>' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
{- "_id": "string",
- "name": "string",
- "description": "string",
- "image": "string",
- "sku": "string",
- "siteId": "string",
- "presentmentCurrency": "string",
- "price": 0,
- "items": [
- {
- "id": "string",
- "type": "string"
}
], - "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Create a new calendar event
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your developer API key |
Request Body schema: application/json
Array of objects (CalendarEventCategory) | |
object (CalendarEventDate) | |
descriptionRaw | string |
object (CalendarEventImage) | |
titleRaw | string |
siteId | string |
thirdPartyEventId | string |
Responses
Request samples
- Payload
{- "categories": [
- {
- "id": "string",
- "label": {
- "color": "string",
- "id": "string",
- "title": "string"
}, - "title": "string"
}
], - "date": {
- "endTimestamp": 0,
- "startTimestamp": 0,
- "timeZone": "string",
- "useEndTime": true
}, - "descriptionRaw": "string",
- "image": {
- "show": true,
- "src": "string"
}, - "titleRaw": "string",
- "siteId": "string",
- "thirdPartyEventId": "string"
}
Response samples
- 201
{- "categories": [
- {
- "id": "string",
- "label": {
- "color": "string",
- "id": "string",
- "title": "string"
}, - "title": "string"
}
], - "date": {
- "endTimestamp": 0,
- "startTimestamp": 0,
- "timeZone": "string",
- "useEndTime": true
}, - "descriptionRaw": "string",
- "image": {
- "show": true,
- "src": "string"
}, - "titleRaw": "string",
- "siteId": "string",
- "thirdPartyEventId": "string"
}
Get calendar events between timestamps
Authorizations:
query Parameters
startTimestamp required | number |
endTimestamp required | number |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your developer API key |
Responses
Response samples
- 200
[- {
- "categories": [
- {
- "id": "string",
- "label": {
- "color": "string",
- "id": "string",
- "title": "string"
}, - "title": "string"
}
], - "date": {
- "endTimestamp": 0,
- "startTimestamp": 0,
- "timeZone": "string",
- "useEndTime": true
}, - "descriptionRaw": "string",
- "image": {
- "show": true,
- "src": "string"
}, - "titleRaw": "string",
- "siteId": "string",
- "thirdPartyEventId": "string"
}
]
Get calendar event filters for a site
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your developer API key |
Responses
Response samples
- 200
[- {
- "options": [
- {
- "color": "string",
- "value": "string"
}
], - "title": "string"
}
]
Get unique calendar event categories for a site
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your developer API key |
Responses
Response samples
- 200
[- {
- "id": "string",
- "label": {
- "color": "string",
- "id": "string",
- "title": "string"
}, - "title": "string"
}
]
Get a calendar event by ID
Authorizations:
path Parameters
id required | string |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your developer API key |
Responses
Response samples
- 200
{- "categories": [
- {
- "id": "string",
- "label": {
- "color": "string",
- "id": "string",
- "title": "string"
}, - "title": "string"
}
], - "date": {
- "endTimestamp": 0,
- "startTimestamp": 0,
- "timeZone": "string",
- "useEndTime": true
}, - "descriptionRaw": "string",
- "image": {
- "show": true,
- "src": "string"
}, - "titleRaw": "string",
- "siteId": "string",
- "thirdPartyEventId": "string"
}
Update a calendar event by ID
Authorizations:
path Parameters
id required | string |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your developer API key |
Request Body schema: application/json
Array of objects (CalendarEventCategory) | |
object (CalendarEventDate) | |
descriptionRaw | string |
object (CalendarEventImage) | |
titleRaw | string |
siteId | string |
thirdPartyEventId | string |
Responses
Request samples
- Payload
{- "categories": [
- {
- "id": "string",
- "label": {
- "color": "string",
- "id": "string",
- "title": "string"
}, - "title": "string"
}
], - "date": {
- "endTimestamp": 0,
- "startTimestamp": 0,
- "timeZone": "string",
- "useEndTime": true
}, - "descriptionRaw": "string",
- "image": {
- "show": true,
- "src": "string"
}, - "titleRaw": "string",
- "siteId": "string",
- "thirdPartyEventId": "string"
}
Get unique calendar labels for a category
Authorizations:
path Parameters
categoryTitle required | string |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your developer API key |
Responses
Response samples
- 200
[- {
- "color": "string",
- "id": "string",
- "title": "string"
}
]
Besides the fields included in all webhooks by default, the eventData
object will look like
the following for channels related webhooks:
{ channelId<string>: the maestro channel's ID channelName<string>: the maestro channel's name event<string>: 'admin.channelUpdated' seo: { description<string | undefined>: the channel's SEO description image<string | undefined>: the channel's SEO image keywords<string | undefined>: the channel's SEO keywords title<string>: the channel's SEO title } siteId<string>: the maestro site ID streamId<string>: the stream ID }
Get claim status
Gets a claim status given its ID in the path
Authorizations:
path Parameters
id required | string Claim status ID |
header Parameters
x-maestro-client-id required | string Your Maestro client ID (same as site ID) |
Authorization required | string Bearer <Your JWT> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your developer API key', ['x-maestro-client-id']: 'Your client ID' }; axios.get('https://api.maestro.io/claimstatus/v3/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "questId": "string",
- "productId": "string",
- "accountId": "string",
- "status": "PENDING"
}
Get site claim statuses
Gets all site claim statuses
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro client ID (same as site ID) |
Authorization required | string Bearer <Your JWT> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your developer API key', ['x-maestro-client-id']: 'Your client ID' }; axios.get('https://api.maestro.io/claimstatus/v3/', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "questId": "string",
- "productId": "string",
- "accountId": "string",
- "status": "PENDING"
}
]
Get community accounts
Gets community accounts.
Sample call:
curl 'https://api.maestro.io/community/v1/?offset=string&sortBy=name&sortDirection=-1' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \
query Parameters
offset required | string Offset from beginning |
sortBy required | string name | created |
sortDirection required | number 1 = ascending (default), -1 = descending |
searchBy | string accountInfo | entitlements | paidEntitlements | accessCode | receiptNumber |
searchQuery | string Search query |
object Filters for search query |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const querystring = require('querystring'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID', 'Authorization': 'Bearer <Your JWT token>' }; const params = querystring.stringify({ offset: string sortBy: object sortDirection: number searchBy: string searchQuery: string filter: { channelId: string timeStart: number timeEnd: number } }); axios.get('https://api.maestro.io/community/v1/', params, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "result": {
- "forceExport": true,
- "pagination": {
- "first": "string",
- "last": "string",
- "next": "string",
- "prev": "string",
- "self": "string"
}, - "results": [
- {
- "_id": "string",
- "siteId": "string",
- "globalAccountID": "string",
- "email": "string",
- "marketingOptin": true,
- "name": "string",
- "normalizedName": "string",
- "thirdPartyAuthProviders": [
- {
- "accountId": "string",
- "provider": "string"
}
], - "hash": "string",
- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
], - "subscriptions": [
- {
- "_id": "string",
- "accountId": "string",
- "dateGranted": "string",
- "entitlement": {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "grantedMethod": "accessCode",
- "presentmentCurrency": "string",
- "siteId": "string",
- "status": "active",
- "created": 0,
- "modified": 0
}
], - "uid": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
}, - "results": [
- {
- "accountId": "string",
- "userId": "string",
- "created": 0,
- "lastLogin": 0,
- "marketingOptin": true,
- "name": "string",
- "service": "string",
- "siteId": "string",
- "thumbnail": "string",
- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
]
}
]
}
Get user's profile within community
Gets a user's profile within a community.
Sample call:
curl 'https://api.maestro.io/community/v1/account/?accountId=<accountId>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \
query Parameters
accountId required | string Account ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const querystring = require('querystring'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID', 'Authorization': 'Bearer <Your JWT token>' }; const params = querystring.stringify({ accountId: string }); axios.get('https://api.maestro.io/community/v1/account', params, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "accountItem": {
- "accountId": "string",
- "userId": "string",
- "created": 0,
- "lastLogin": 0,
- "marketingOptin": true,
- "name": "string",
- "service": "string",
- "siteId": "string",
- "thumbnail": "string",
- "roles": [
- {
- "pageId": [
- "string"
], - "scope": "string",
- "write": true
}
]
}, - "tickets": [
- {
- "accessCode": "string",
- "actions": {
- "canCancel": true,
- "canRefund": true,
- "canRemove": true
}, - "currentPeriodEnd": 0,
- "date": 0,
- "dateCanceled": 0,
- "dateRefunded": 0,
- "formattedPrice": "string",
- "grantedMethod": "accessCode",
- "id": "string",
- "methodDescription": "string",
- "name": "string",
- "price": {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}, - "sku": "string",
- "status": "string",
- "statusTooltip": "string",
- "wasRefunded": true
}
], - "subscriptions": [
- {
- "accessCode": "string",
- "actions": {
- "canCancel": true,
- "canRefund": true,
- "canRemove": true
}, - "currentPeriodEnd": 0,
- "date": 0,
- "dateCanceled": 0,
- "dateRefunded": 0,
- "formattedPrice": "string",
- "grantedMethod": "accessCode",
- "id": "string",
- "methodDescription": "string",
- "name": "string",
- "price": {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}, - "sku": "string",
- "status": "string",
- "statusTooltip": "string",
- "wasRefunded": true
}
]
}
Export community users
Exports community users.
Sample call:
curl 'https://api.maestro.io/community/v1/export/?searchBy=string&searchQuery=string' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \
query Parameters
searchBy | string accountInfo | entitlements | paidEntitlements | accessCode | receiptNumber |
searchQuery | string Search query |
object Filters for search query |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const querystring = require('querystring'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID', 'Authorization': 'Bearer <Your JWT token>' }; const params = querystring.stringify({ searchBy: string searchQuery: string filter: { channelId: string timeStart: number timeEnd: number } }); axios.get('https://api.maestro.io/community/v1/export', params, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "exportId": "string",
- "fileName": "string",
- "status": "string"
}
Grant community entitlement
Grants a community entitlement.
Sample call:
curl 'https://api.maestro.io/community/v1/grant-entitlement/?accountId=<accountId>&subscriptionId=<subscriptionId>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \
query Parameters
accountId required | string Account ID |
subscriptionId required | string Subscription ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const querystring = require('querystring'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID', 'Authorization': 'Bearer <Your JWT token>' }; const params = querystring.stringify({ accountId: string subscriptionId: string }); axios.post('https://api.maestro.io/community/v1/grant-entitlement', params, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "success": true
}
Update community entitlement
Updates a community entitlement.
Sample call:
curl 'https://api.maestro.io/community/v1/update-entitlement/?accountiD=<accountId>&action=string&id=string&grantRefund=boolean' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \
query Parameters
accountId required | string Account ID |
action required | string cancel | justRefund | remove | scheduleCancel |
id required | string Account Entitlement Id |
grantRefund required | boolean Grant refund |
reason | string duplicate | fraudulent | requested_by_customer |
refundAmount | number |
refundDetails | string |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const querystring = require('querystring'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID', 'Authorization': 'Bearer <Your JWT token>' }; const params = querystring.stringify({ accountId: string action: string id: string grantRefund: boolean }); axios.patch('https://api.maestro.io/community/v1/update-entitlement', params, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "success": true
}
Maestro provides a default subscription receipt email with the following fields:
- A "Thank you for your purchase!" message at the top
- Ticket receipt number
- Virtual ticket name
- Purchase time/date
- Ticket quantity
- Access instructions
- Link to event
- Payment method
- Ticket price
- Service charge
- Tax
- Total amount
In your site UI (ADMIN > SETTINGS > Profile), you can configure access instructions and your name and logo for this email receipt.
You can create and upload your own email template to use as a subscription purchase email receipt with the "Upload email template" API. Templates use Handlebars - a HTML templating specification that allows you to insert customers' names and other data to personalize messages for each individual recipient.
To send out receipts, Maestro uses Mandrill, a third party service that helps ensure transactional email delivery. By default, the email sender is "Maestro" and the sender email is noreply@maestro.io
. However, you can change these fields with the "Add sender email" API and Maestro can send subscription receipt emails on your behalf. Sending email on your behalf requires that you configure your DNS settings for email authentication in one of two ways:
DKIM (DomainKeys Identified Mail) - A DNS-based email authentication mechanism that helps Mandrill more effectively send mail on your behalf by allowing receivers to verify that we have permission to send your email.
To enable DKIM, create a TXT record for
mandrill._domainkey.yourdomain.com
(replaceyourdomain.com
with the domain you're setting up) with the following value:
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrLHiExVd55zd/IQ/J/mRwSRMAocV/hMB3jXwaHH36d9NaVynQFYV8NaWi69c1veUtRzGt7yAioXqLj7Z4TeEUoOLgrKsn8YnckGs9i3B3tVFB+Ch/4mPhXWiNfNdynHWBcPcbJ8kjEQ2U8y78dHZj1YeRXXVvWob2OaKynO8/lQIDAQAB;
SPF (Sender Policy Framework) - Another DNS-based email authentication mechanism. If you don't have an SPF record, you should add one for your domain. At a minimum, the value should be the following if you're only sending mail through Mandrill for that domain:
v=spf1 include:spf.mandrillapp.com ?all
"
Add sender email
Add sender email for subscription purchase receipts.
Sample call:
curl -X PUT 'https://api.maestro.io/customemail/v1/add-sender-email/' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'Authorization: Bearer <Your JWT>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"domain":"www.somedomain.com", "fromEmail":"admin@somedomain.com", "fromName":"Pablo Escobar", "replyToEmail":"admin@somedomain.com"}'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT> |
Request Body schema: application/json
Request body to add sender email
domain required | string Domain URL (i.e., maestro.io) |
fromEmail required | string Sender email address |
fromName required | string Sender name |
replyToEmail required | string Reply to email |
Responses
Request samples
- Payload
- javascript
{- "domain": "string",
- "fromEmail": "string",
- "fromName": "string",
- "replyToEmail": "string"
}
Upload email template
Upload a handlebars email template for use as a subscription purchase email receipt.
Sample call:
curl -X PUT 'https://api.maestro.io/customemail/v1/receipt/' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'Authorization: Bearer <Your JWT>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"subject":"Thank your for your purchase!", \ "template":"<div><p>Receipt Number: {{receiptNumber}}</p><p>Amount: {{amount}}</p></div>"}'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT> |
Request Body schema: application/json
Request body to upload email receipt template
subject required | string Email subject line |
template required | string HTML Mandrill email template with the following available variables:
|
Responses
Request samples
- Payload
- javascript
{- "subject": "string",
- "template": "string"
}
Delete email template
Deletes a previously uploaded custom email template for a subscription receipt email.
Sample call:
curl -X DELETE 'https://api.maestro.io/customemail/v1/receipt/' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'Authorization: Bearer <Your JWT>'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT> |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'delete', url: 'https://api.maestro.io/customemail/v1/receipt/</p></div>', headers: { 'x-maestro-client-id': 'Your client ID', 'content-type': 'application/json;charset=UTF-8', 'Authorization': 'Bearer <Your JWT>' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Get concurrent viewers in a site
Get the amount of concurrent viewers in a site and its channels
Sample call:
curl 'https://api.maestro.io/insights/v1/concurrents?siteIds=siteId1,siteId2,siteId3' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'super-api-key: <>'
Authorizations:
query Parameters
siteIds | string Provide a list of comma-separated siteIds to get |
header Parameters
x-maestro-client-id | string Your Maestro ID (same as site ID). Only used if siteIds query param is not provided. |
super-api-key required | string Your JWT Super API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['super-api-key']: 'Your Super API key' }; axios.get('https://api.maestro.io/insights/v1/concurrents?siteIds=siteId1,siteId2', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "siteId": "string",
- "concurrents": 0,
- "totalViews": 0,
- "channels": [
- {
- "_id": "string",
- "slug": "string",
- "concurrents": 0
}
]
}
]
Currently, there is only one kind of invite - a magic link. Magic links provide a way for users to authenticate without logging in. This gives them a way to bypass a channel entitlement gate. A typical entitlement gate would ask the user to pay to see a channel. A channel gate can be set up in your channel settings (Channel > Settings) using an existing entitlement (Entitlements > Add Entitlement). When a non-admin user goes to your site they should see this gate. If they have the invite magic link, they can paste it in the browser and bypass it, aka consume the invite. Admins are free to distribute invites to users however they wish, similar to access codes.
Get site invites
Get all site invites with filter options. No filter options returns all.
Sample call: (gets all)
curl 'https://api.maestro.io/invite/v1/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
query Parameters
consumed | boolean Consumed flag filter, i.e., |
revoked | boolean Revoked flag filter, i.e., |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your developer API key', ['x-maestro-client-id']: 'Your client ID' }; axios.get('https://api.maestro.io/invite/v1/', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "_id": "string",
- "consumed": true,
- "redirectUri": "string",
- "revoked": true,
- "siteId": "string",
- "targetSkus": [
- "string"
], - "token": "string",
- "type": "magic-link",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
Create magic link invite
Creates a magic link invite.
Sample call:
curl -X POST 'https://api.maestro.io/invite/v1/magic-link/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{ "redirectUri":"http://web.maestro.io/somesite/home-page", \ "siteId":"<site ID>", "targetSkus":["gate-entitlement"]}'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Parameters to create magic link invite
redirectUri required | string Redirect URI - where the user will be on your site when the invite is consumed. |
siteId required | string Site ID |
targetSkus required | Array of arrays Target SKUs |
Responses
Request samples
- Payload
- javascript
{- "redirectUri": "string",
- "siteId": "string",
- "targetSkus": [ ]
}
Response samples
- 200
{- "invite": {
- "_id": "string",
- "consumed": true,
- "redirectUri": "string",
- "revoked": true,
- "siteId": "string",
- "targetSkus": [
- "string"
], - "token": "string",
- "type": "magic-link",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "inviteUrl": "string"
}
Get invite
Gets an invite given its ID in the path.
Sample call:
curl 'https://api.maestro.io/invite/v1/<invite ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Sample return:
{"_id":"<invite ID>","consumed":false, \ "redirectUri":"http://web.maestro.io/somesubdomain/home-page","revoked":false, \ "siteId":"<site ID>","targetSkus":["gate-entitlement"],"token":"6RZ1QV", \ "type":"magic-link", "created":1625781436608,"modified":1625781436608, \ "tags":[]}
Authorizations:
path Parameters
id required | string Invite ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'get', url: 'https://api.maestro.io/invite/v1/<invite ID>', headers: { 'x-maestro-client-id': 'Your Maestro ID', 'x-maestro-developer-key': 'Your developer API key' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
{- "_id": "string",
- "consumed": true,
- "redirectUri": "string",
- "revoked": true,
- "siteId": "string",
- "targetSkus": [
- "string"
], - "token": "string",
- "type": "magic-link",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Delete invite
Deletes an invite given its ID in the path.
Sample call:
curl -X DELETE 'https://api.maestro.io/invite/v1/<invite ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
path Parameters
id required | string Id of invite you're deleting |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID). |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your developer API key', ['x-maestro-client-id']: 'Your client ID' }; axios.delete('https://api.maestro.io/invite/v1/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "success": true,
- "message": "string"
}
Update a Register Invite
Authorizations:
path Parameters
id required | string Id of invite you're updating |
header Parameters
x-maestro-client-id required | string Your maestro id |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your developer API key', ['x-maestro-client-id']: 'Your client ID' }; const toUpdateinvite = { "redirectUri":"https://yourmaestrosite.com", "siteId":"string", "targetRoles":["object"] } axios.put('https://api.maestro.io/invite/v1/507f191e810c19729de860ea', { headers }, toUpdateinvite) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "_id": "string",
- "consumed": true,
- "redirectUri": "string",
- "revoked": true,
- "siteId": "string",
- "targetSkus": [
- "string"
], - "token": "string",
- "type": "magic-link",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Revoke invite
Revokes an invite given its ID in the path. Revoking an unconsumed invite prevents the user from logging in via the inviteUrl
. If the invite was already consumed, it removes their subscription(s).
Sample call:
curl -X DELETE 'https://api.maestro.io/invite/v1/revoke/<invite ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
path Parameters
id required | string Invite ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your developer API key', ['x-maestro-client-id']: 'Your client ID' }; axios.delete('https://api.maestro.io/invite/v1/revoke/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "success": true,
- "message": "string"
}
Get site overlays
Get all overlays from a specific site.
Sample call:
curl 'https://api.maestro.io/overlay/v1' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as your site ID). |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/overlay/v1/', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "_id": "string",
- "contents": {
- "html": "string"
}, - "cta": {
- "data": { },
- "type": "facebook_share"
}, - "description": "string",
- "duration": 0,
- "name": "string",
- "siteId": "string",
- "type": "template"
}
]
Create overlay
Creates a new site overlay.
Sample call:
curl -X POST 'https://api.maestro.io/overlay/v1' \ -H 'x-maestro-client-id: <Your Maestro ID>' -H 'x-maestro-developer-key: <Your developer API key>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{ "contents": { "html": "<p>Hello World<p>"}, \ "cta": { "data": null, "type": "facebook_share"}, "description": "My overlay2", \ "duration": 10, "name": "my overlay2","siteId":"<Site ID>", \ "type": "template"}'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Request Body schema: application/json
Create overlay parameters
IOverlayTemplate (object) or InstanceOverlay (object) (OverlayContentType) | |
object (Cta) | |
description | string |
duration | number |
name | string |
type | string (OverlayType) Enum: "template" "instance" |
Responses
Request samples
- Payload
- javascript
{- "contents": {
- "html": "string"
}, - "cta": {
- "data": { },
- "type": "facebook_share"
}, - "description": "string",
- "duration": 0,
- "name": "string",
- "type": "template"
}
Response samples
- 200
{- "_id": "string",
- "contents": {
- "html": "string"
}, - "cta": {
- "data": { },
- "type": "facebook_share"
}, - "description": "string",
- "duration": 0,
- "name": "string",
- "siteId": "string",
- "type": "template"
}
Get overlay
Gets an overlay given its ID in the path.
Sample call:
curl 'https://api.maestro.io/overlay/v1/<overlay ID>' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Sample overlay object:
{"_id":"60ad62565e474c00a6f7e2bc","contents":{"html":"<p>Hello World</p>"}, \ "cta":{"data":null,"type":"facebook_share"},"description":"My Overlay", \ "duration":10,"name":"my overlay","siteId":"<site ID>"," \ "type":"template","created":1621975638929,"modified":1621975638929}
Authorizations:
path Parameters
id required | string Overlay ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/overlay/v1/{OVERLAY_ID}', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "_id": "string",
- "contents": {
- "html": "string"
}, - "cta": {
- "data": { },
- "type": "facebook_share"
}, - "description": "string",
- "duration": 0,
- "name": "string",
- "siteId": "string",
- "type": "template"
}
Update overlay
Updates an overlay given its ID in the path.
Sample call:
curl -X PUT 'https://api.maestro.io/overlay/v1/<Overlay ID>' \ -H 'x-maestro-client-id: <Your Maestro ID>' -H 'x-maestro-developer-key: <Your developer API key>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{ "contents": { "html": "<p>Houston, we have a problem.</p>"}}'
Authorizations:
path Parameters
id required | string Overlay ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Update overlay parameters
_id | string Overlay ID |
IOverlayTemplate (object) or InstanceOverlay (object) (OverlayContentType) | |
object (Cta) | |
description | string Overlay description |
duration | number Duration in seconds |
name | string Overlay name |
siteId | string Site ID |
type | string (OverlayType) Enum: "template" "instance" |
Responses
Request samples
- Payload
- javascript
{- "_id": "string",
- "contents": {
- "html": "string"
}, - "cta": {
- "data": { },
- "type": "facebook_share"
}, - "description": "string",
- "duration": 0,
- "name": "string",
- "siteId": "string",
- "type": "template"
}
Broadcast overlay
Broadcast overlay specified in path.
Sample call:
curl -X POST 'https://api.maestro.io/overlay/v1/broadcast/<overlay ID>' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'x-maestro-developer-key: <Your developer API key>' \ -d "duration=200"
Authorizations:
path Parameters
id required | string Overlay ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Broadcast overlay parameters
duration | number How long to broadcast in seconds |
channelId | string If not specified, default is site-wide |
object |
Responses
Request samples
- Payload
- javascript
{- "duration": 0,
- "channelId": "string",
- "variables": {
- "property1": "string",
- "property2": "string"
}
}
Clear site broadcasts
Clear all broadcasts from site.
Sample call:
curl -X POST 'https://api.maestro.io/overlay/v1/clear-broadcast' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID). |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.post('https://api.maestro.io/overlay/v1/clear-broadcast/', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Clear channel broadcasts
Clear all broadcasts from channel specified in path.
Sample call:
curl -X POST 'https://api.maestro.io/overlay/v1/clear-broadcast/<channel ID>' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
path Parameters
targetId required | string Channel ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.post('https://api.maestro.io/overlay/v1/clear-broadcast/{CHANNEL_ID}', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Gets all or the specified Site's Channels and Landings pages
Gets all page ids related to a site
Sample call:
curl 'https://api.maestro.io/page/v2/'
Sample return: [{"_id":"602ab9311d32aa002d9f6f48", "base_language": "en-US", "created":1557352479891,"modified":1643057286035,"tags":[]}, ...] Gets specified channels and/or landing pages related to a site when passing the desired pageIds into the query param
Sample call:
curl 'https://api.maestro.io/page/v2/?ids=["602ab9311d32aa002d9f6f48"]'
Sample return: [{"_id":"602ab9311d32aa002d9f6f48","active_renderers":{"livestream":true,"sidebar":true},"collection":"pages","data":{"styles":{},"regions":{},"artwork":{"header":{"logo":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/602ad66caa245900a56b02bb.png"},"video":{"background":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/602acbf7aa245900a56b02b5.jpg","kind":"images"}},"content":{"live":{"schedule":[{"array_id":"udymJAENT","duration":225,"end_time":"Thu Nov 11 2021 15:36:45 GMT-0500 (Ecuador Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Thu Nov 11 2021 15:33:00 GMT-0500 (Ecuador Time)","video":{"id":"602ad17be86c5f00a60c436c","data":{"title":"Ricky Martin - Pégate (Live)"}}},{"array_id":"SVZzDkHt","duration":1800,"end_time":"Fri Apr 16 2021 17:40:00 GMT-0500 (Ecuador Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Fri Apr 16 2021 17:10:00 GMT-0500 (Ecuador Time)","video":{"_id":"607a0b4e2ffbcb00a6781e79","data":{"title":"Test Streaming"}}},{"array_id":"31rrdQXer","duration":131,"end_time":"Invalid Date","kind":"video","repeat":"none","show_countdown":false,"start_time":"Mon Feb 15 2021 14:25:00 GMT-0500 (Ecuador Time)","video":{"_id":"602acb10e86c5f00a60c436b","data":{"title":"Introducing Dolby Atmos Music + Coldplay | Dolby Music"}}},{"array_id":"BB_20ihKc","duration":216,"end_time":"Wed Aug 21 2019 17:09:47 GMT-0700 (Pacific Daylight Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Wed Aug 21 2019 17:06:11 GMT-0700 (Pacific Daylight Time)","video":{"_id":"5d5ddbd5452a8d9901a43c03","data":{"name":"Lady GaGa - Poker Face [Official Music Video] HQ"},"slug":"lady-ga-ga-poker-face-official-music-video-hq-5d5ddbd5452a8d9901a43c03"}}]},"offline":{"image":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/618d7a85119de100a74a57d6.jpg","kind":"video","mode":"tv","video":{"_id":"602acf92c50bf5002d285e0e"}}},"countdown":{"start_time":"Tue Jan 04 2022 19:29:00 GMT-0500 (Ecuador Time)","title":"Countdown"},"default_mode":"none","gate":{"active":false,"kind":"none","gate":{"subscriptions":[]}},"name":"Watch","schedule":[{"all_day":"yes","duration":2090,"end_time":"Nov 03 2017 01:00:00 GMT+0000 (GMT)","kind":"video","repeat":"none","start_date":"Nov 03 2017","start_time":"Nov 03 2017 00:00:00 GMT+0000 (GMT)","video":{"_id":"5cd3501f74a7d0005b901b71","data":{"name":"Test Video"},"slug":"test-video"}}],"sidebar":[{"_id":"5cd3501f74a7d0005b901b6f","seo":{"title":"Chat"},"slug":"chat"},{"_id":"5cd3501f74a7d0005b901b70","seo":{"title":"Social"},"slug":"social"}],"welcome_screen":{"active":false,"duration":5,"image":"","mobile_image":""}},"last_modified":1643057286035,"renderers":{"livestream":{"livestream_doc":{"_id":"6050e78c57925500a6842944","created":1615914892950,"duration_seconds":0,"modified":1615914892950,"site_id":"602ab9311d32aa002d9f6f35","thumbnail":"https://static.maestro.io/media/5f32f379c04207002caf9c7f/5f6aa0146a9be500a5f3305f.jpg","title":"Test","type":"livestream"},"livestream_published":false,"stream_id":"612666d1d6be50002ea2b998","video_id":"619299eb7fb8cb002e1b1e60"},"sidebar":{"items":[{"array_id":"ojPS_l1gC","id":"609d932a9f42a53905fdb0a3"},{"array_id":"ry6E89OMl","id":"6197d81234cbd37cca05bbf4"},{"array_id":"7ttEXkxPz","id":"6050e5fdd3f5be0ceeb5c6f9"},{"array_id":"oY-k2TYM7","id":"602acefca8c994a364211454"},{"array_id":"gmrLAxQyM","id":"602ad72d89939c4c86b6bac5"},{"array_id":"TR3Ixxi-O","id":"60391df58f3bcf59cff41661"}]}},"seo":{"description":"lalallala","title":"Watch"},"site_id":"602ab9311d32aa002d9f6f35","slug":"home-page-1","style":{"channel_background_color":"#171e26"},"type":"channel","created":1557352479891,"modified":1643057286035,"tags":[]}]
Sample call:
curl 'https://api.maestro.io/page/v2?ids=["602ab9311d32aa002d9f6f48"]&options={"projection": {"data.channel_select_active_image_url": 1, "data.name": 1, "seo.title": 1, "slug": 1}}'
Sample return: [{"_id":"602ab9311d32aa002d9f6f48","data":{"channel_select_active_image_url": "image.png", "name": "Watch"}, "seo": {"title": "Social"}, "slug": "home-page-1" }]
query Parameters
ids | Array of strings An array of pageIds(page._id) which belong to the siteId(x-maestro-client-id) passed in the headers; The array of pageIds must be stringified, JSON.stringify(['602ab9311d32aa002d9f6f48']), before it is appended to the id query |
object An stringified object which accepts a sort direction, sortBy, and projection fields. Sort field applies a sort direction against the page._id & defaults to 0 if no sort direction is passed. The sortBy specifies what page field the returned pages should be sorted by. Projection specifies what page fields should be projected when the page documents are returned. | |
object An stringified object that applies a search query against the page's 'data.name' field |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; const pageIds = JSON.stringify(['602ab9311d32aa002d9f6f48']); const options = JSON.stringify({ 'data.channel_select_active_image_url': 1, 'data.name': 1, 'seo.title': 1, 'slug': 1 }); axios.get('https://api.maestro.io/pages/v2/?ids=${pageIds}&options=${options}', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
Get page by Id
Gets a page given its ID in the path.
Sample call:
curl 'https://api.maestro.io/page/v2/<page ID>' **Sample return:**{"_id":"602ab9311d32aa002d9f6f48","active_renderers":{"livestream":true,"sidebar":true},"collection":"pages","data":{"styles":{},"regions":{},"artwork":{"header":{"logo":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/602ad66caa245900a56b02bb.png"},"video":{"background":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/602acbf7aa245900a56b02b5.jpg","kind":"images"}},"content":{"live":{"schedule":[{"array_id":"udymJAENT","duration":225,"end_time":"Thu Nov 11 2021 15:36:45 GMT-0500 (Ecuador Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Thu Nov 11 2021 15:33:00 GMT-0500 (Ecuador Time)","video":{"_id":"602ad17be86c5f00a60c436c","data":{"title":"Ricky Martin - Pégate (Live)"}}},{"array_id":"SVZzDkHt_","duration":1800,"end_time":"Fri Apr 16 2021 17:40:00 GMT-0500 (Ecuador Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Fri Apr 16 2021 17:10:00 GMT-0500 (Ecuador Time)","video":{"_id":"607a0b4e2ffbcb00a6781e79","data":{"title":"Test Streaming"}}},{"array_id":"31rrdQXer","duration":131,"end_time":"Invalid Date","kind":"video","repeat":"none","show_countdown":false,"start_time":"Mon Feb 15 2021 14:25:00 GMT-0500 (Ecuador Time)","video":{"_id":"602acb10e86c5f00a60c436b","data":{"title":"Introducing Dolby Atmos Music + Coldplay | Dolby Music"}}},{"array_id":"BB_20ihKc","duration":216,"end_time":"Wed Aug 21 2019 17:09:47 GMT-0700 (Pacific Daylight Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Wed Aug 21 2019 17:06:11 GMT-0700 (Pacific Daylight Time)","video":{"_id":"5d5ddbd5452a8d9901a43c03","data":{"name":"Lady GaGa - Poker Face [Official Music Video] HQ"},"slug":"lady-ga-ga-poker-face-official-music-video-hq-5d5ddbd5452a8d9901a43c03"}}]},"offline":{"image":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/618d7a85119de100a74a57d6.jpg","kind":"video","mode":"tv","video":{"_id":"602acf92c50bf5002d285e0e"}}},"countdown":{"start_time":"Tue Jan 04 2022 19:29:00 GMT-0500 (Ecuador Time)","title":"Countdown"},"default_mode":"none","gate":{"active":false,"kind":"none","gate":{"subscriptions":[]}},"name":"Watch","schedule":[{"all_day":"yes","duration":2090,"end_time":"Nov 03 2017 01:00:00 GMT+0000 (GMT)","kind":"video","repeat":"none","start_date":"Nov 03 2017","start_time":"Nov 03 2017 00:00:00 GMT+0000 (GMT)","video":{"_id":"5cd3501f74a7d0005b901b71","data":{"name":"Test Video"},"slug":"test-video"}}],"sidebar":[{"_id":"5cd3501f74a7d0005b901b6f","seo":{"title":"Chat"},"slug":"chat"},{"_id":"5cd3501f74a7d0005b901b70","seo":{"title":"Social"},"slug":"social"}],"welcome_screen":{"active":false,"duration":5,"image":"","mobile_image":""}},"last_modified":1643057286035,"renderers":{"livestream":{"livestream_doc":{"_id":"6050e78c57925500a6842944","created":1615914892950,"duration_seconds":0,"modified":1615914892950,"site_id":"602ab9311d32aa002d9f6f35","thumbnail":"https://static.maestro.io/media/5f32f379c04207002caf9c7f/5f6aa0146a9be500a5f3305f.jpg","title":"Test","type":"livestream"},"livestream_published":false,"stream_id":"612666d1d6be50002ea2b998","video_id":"619299eb7fb8cb002e1b1e60"},"sidebar":{"items":[{"array_id":"ojPS_l1gC","id":"609d932a9f42a53905fdb0a3"},{"array_id":"ry6E89OMl","id":"6197d81234cbd37cca05bbf4"},{"array_id":"7ttEXkxPz","id":"6050e5fdd3f5be0ceeb5c6f9"},{"array_id":"oY-k2TYM7","id":"602acefca8c994a364211454"},{"array_id":"gmrLAxQyM","id":"602ad72d89939c4c86b6bac5"},{"array_id":"TR3Ixxi-O","id":"60391df58f3bcf59cff41661"}]}},"seo":{"description":"lalallala","title":"Watch"},"site_id":"602ab9311d32aa002d9f6f35","slug":"home-page-1","style":{"channel_background_color":"#171e26"},"type":"channel","created":1557352479891,"modified":1643057286035,"tags":[]}
path Parameters
id required | string Page ID |
Responses
Request samples
- javascript
const axios = require('axios'); axios.get('https://api.maestro.io/pages/v2/602ab9311d32aa002d9f6f48') .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
Get Site's Channels
Gets channels related to a site
Sample call:
curl 'https://api.maestro.io/page/v2/channel' **Sample return:**[{"_id":"602ab9311d32aa002d9f6f48","active_renderers":{"livestream":true,"sidebar":true},"collection":"pages","data":{"styles":{},"regions":{},"artwork":{"header":{"logo":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/602ad66caa245900a56b02bb.png"},"video":{"background":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/602acbf7aa245900a56b02b5.jpg","kind":"images"}},"content":{"live":{"schedule":[{"array_id":"udymJAENT","duration":225,"end_time":"Thu Nov 11 2021 15:36:45 GMT-0500 (Ecuador Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Thu Nov 11 2021 15:33:00 GMT-0500 (Ecuador Time)","video":{"_id":"602ad17be86c5f00a60c436c","data":{"title":"Ricky Martin - Pégate (Live)"}}},{"array_id":"SVZzDkHt_","duration":1800,"end_time":"Fri Apr 16 2021 17:40:00 GMT-0500 (Ecuador Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Fri Apr 16 2021 17:10:00 GMT-0500 (Ecuador Time)","video":{"_id":"607a0b4e2ffbcb00a6781e79","data":{"title":"Test Streaming"}}},{"array_id":"31rrdQXer","duration":131,"end_time":"Invalid Date","kind":"video","repeat":"none","show_countdown":false,"start_time":"Mon Feb 15 2021 14:25:00 GMT-0500 (Ecuador Time)","video":{"_id":"602acb10e86c5f00a60c436b","data":{"title":"Introducing Dolby Atmos Music + Coldplay | Dolby Music"}}},{"array_id":"BB_20ihKc","duration":216,"end_time":"Wed Aug 21 2019 17:09:47 GMT-0700 (Pacific Daylight Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Wed Aug 21 2019 17:06:11 GMT-0700 (Pacific Daylight Time)","video":{"_id":"5d5ddbd5452a8d9901a43c03","data":{"name":"Lady GaGa - Poker Face [Official Music Video] HQ"},"slug":"lady-ga-ga-poker-face-official-music-video-hq-5d5ddbd5452a8d9901a43c03"}}]},"offline":{"image":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/618d7a85119de100a74a57d6.jpg","kind":"video","mode":"tv","video":{"_id":"602acf92c50bf5002d285e0e"}}},"countdown":{"start_time":"Tue Jan 04 2022 19:29:00 GMT-0500 (Ecuador Time)","title":"Countdown"},"default_mode":"none","gate":{"active":false,"kind":"none","gate":{"subscriptions":[]}},"name":"Watch","schedule":[{"all_day":"yes","duration":2090,"end_time":"Nov 03 2017 01:00:00 GMT+0000 (GMT)","kind":"video","repeat":"none","start_date":"Nov 03 2017","start_time":"Nov 03 2017 00:00:00 GMT+0000 (GMT)","video":{"_id":"5cd3501f74a7d0005b901b71","data":{"name":"Test Video"},"slug":"test-video"}}],"sidebar":[{"_id":"5cd3501f74a7d0005b901b6f","seo":{"title":"Chat"},"slug":"chat"},{"_id":"5cd3501f74a7d0005b901b70","seo":{"title":"Social"},"slug":"social"}],"welcome_screen":{"active":false,"duration":5,"image":"","mobile_image":""}},"last_modified":1643057286035,"renderers":{"livestream":{"livestream_doc":{"_id":"6050e78c57925500a6842944","created":1615914892950,"duration_seconds":0,"modified":1615914892950,"site_id":"602ab9311d32aa002d9f6f35","thumbnail":"https://static.maestro.io/media/5f32f379c04207002caf9c7f/5f6aa0146a9be500a5f3305f.jpg","title":"Test","type":"livestream"},"livestream_published":false,"stream_id":"612666d1d6be50002ea2b998","video_id":"619299eb7fb8cb002e1b1e60"},"sidebar":{"items":[{"array_id":"ojPS_l1gC","id":"609d932a9f42a53905fdb0a3"},{"array_id":"ry6E89OMl","id":"6197d81234cbd37cca05bbf4"},{"array_id":"7ttEXkxPz","id":"6050e5fdd3f5be0ceeb5c6f9"},{"array_id":"oY-k2TYM7","id":"602acefca8c994a364211454"},{"array_id":"gmrLAxQyM","id":"602ad72d89939c4c86b6bac5"},{"array_id":"TR3Ixxi-O","id":"60391df58f3bcf59cff41661"}]}},"seo":{"description":"lalallala","title":"Watch"},"site_id":"602ab9311d32aa002d9f6f35","slug":"home-page-1","style":{"channel_background_color":"#171e26"},"type":"channel","created":1557352479891,"modified":1643057286035,"tags":[]}]
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/pages/v2/channel', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
Get Site's Channels and Landings
Gets channels and landings related to a site
Sample call:
curl 'https://api.maestro.io/page/v2/channel/channels-landings' **Sample return:**[{"_id":"602ab9311d32aa002d9f6f48","active_renderers":{"livestream":true,"sidebar":true},"collection":"pages","data":{"styles":{},"regions":{},"artwork":{"header":{"logo":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/602ad66caa245900a56b02bb.png"},"video":{"background":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/602acbf7aa245900a56b02b5.jpg","kind":"images"}},"content":{"live":{"schedule":[{"array_id":"udymJAENT","duration":225,"end_time":"Thu Nov 11 2021 15:36:45 GMT-0500 (Ecuador Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Thu Nov 11 2021 15:33:00 GMT-0500 (Ecuador Time)","video":{"_id":"602ad17be86c5f00a60c436c","data":{"title":"Ricky Martin - Pégate (Live)"}}},{"array_id":"SVZzDkHt_","duration":1800,"end_time":"Fri Apr 16 2021 17:40:00 GMT-0500 (Ecuador Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Fri Apr 16 2021 17:10:00 GMT-0500 (Ecuador Time)","video":{"_id":"607a0b4e2ffbcb00a6781e79","data":{"title":"Test Streaming"}}},{"array_id":"31rrdQXer","duration":131,"end_time":"Invalid Date","kind":"video","repeat":"none","show_countdown":false,"start_time":"Mon Feb 15 2021 14:25:00 GMT-0500 (Ecuador Time)","video":{"_id":"602acb10e86c5f00a60c436b","data":{"title":"Introducing Dolby Atmos Music + Coldplay | Dolby Music"}}},{"array_id":"BB_20ihKc","duration":216,"end_time":"Wed Aug 21 2019 17:09:47 GMT-0700 (Pacific Daylight Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Wed Aug 21 2019 17:06:11 GMT-0700 (Pacific Daylight Time)","video":{"_id":"5d5ddbd5452a8d9901a43c03","data":{"name":"Lady GaGa - Poker Face [Official Music Video] HQ"},"slug":"lady-ga-ga-poker-face-official-music-video-hq-5d5ddbd5452a8d9901a43c03"}}]},"offline":{"image":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/618d7a85119de100a74a57d6.jpg","kind":"video","mode":"tv","video":{"_id":"602acf92c50bf5002d285e0e"}}},"countdown":{"start_time":"Tue Jan 04 2022 19:29:00 GMT-0500 (Ecuador Time)","title":"Countdown"},"default_mode":"none","gate":{"active":false,"kind":"none","gate":{"subscriptions":[]}},"name":"Watch","schedule":[{"all_day":"yes","duration":2090,"end_time":"Nov 03 2017 01:00:00 GMT+0000 (GMT)","kind":"video","repeat":"none","start_date":"Nov 03 2017","start_time":"Nov 03 2017 00:00:00 GMT+0000 (GMT)","video":{"_id":"5cd3501f74a7d0005b901b71","data":{"name":"Test Video"},"slug":"test-video"}}],"sidebar":[{"_id":"5cd3501f74a7d0005b901b6f","seo":{"title":"Chat"},"slug":"chat"},{"_id":"5cd3501f74a7d0005b901b70","seo":{"title":"Social"},"slug":"social"}],"welcome_screen":{"active":false,"duration":5,"image":"","mobile_image":""}},"last_modified":1643057286035,"renderers":{"livestream":{"livestream_doc":{"_id":"6050e78c57925500a6842944","created":1615914892950,"duration_seconds":0,"modified":1615914892950,"site_id":"602ab9311d32aa002d9f6f35","thumbnail":"https://static.maestro.io/media/5f32f379c04207002caf9c7f/5f6aa0146a9be500a5f3305f.jpg","title":"Test","type":"livestream"},"livestream_published":false,"stream_id":"612666d1d6be50002ea2b998","video_id":"619299eb7fb8cb002e1b1e60"},"sidebar":{"items":[{"array_id":"ojPS_l1gC","id":"609d932a9f42a53905fdb0a3"},{"array_id":"ry6E89OMl","id":"6197d81234cbd37cca05bbf4"},{"array_id":"7ttEXkxPz","id":"6050e5fdd3f5be0ceeb5c6f9"},{"array_id":"oY-k2TYM7","id":"602acefca8c994a364211454"},{"array_id":"gmrLAxQyM","id":"602ad72d89939c4c86b6bac5"},{"array_id":"TR3Ixxi-O","id":"60391df58f3bcf59cff41661"}]}},"seo":{"description":"lalallala","title":"Watch"},"site_id":"602ab9311d32aa002d9f6f35","slug":"home-page-1","style":{"channel_background_color":"#171e26"},"type":"channel","created":1557352479891,"modified":1643057286035,"tags":[]}]
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/pages/v2/channel/channels-landings', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
Get Site's Landings
Gets landings related to a site
Sample call:
curl 'https://api.maestro.io/page/v2/landing' **Sample return:**[{"_id":"602ab9311d32aa002d9f6f48","active_renderers":{"livestream":true,"sidebar":true},"collection":"pages","data":{"styles":{},"regions":{},"artwork":{"header":{"logo":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/602ad66caa245900a56b02bb.png"},"video":{"background":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/602acbf7aa245900a56b02b5.jpg","kind":"images"}},"content":{"live":{"schedule":[{"array_id":"udymJAENT","duration":225,"end_time":"Thu Nov 11 2021 15:36:45 GMT-0500 (Ecuador Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Thu Nov 11 2021 15:33:00 GMT-0500 (Ecuador Time)","video":{"_id":"602ad17be86c5f00a60c436c","data":{"title":"Ricky Martin - Pégate (Live)"}}},{"array_id":"SVZzDkHt_","duration":1800,"end_time":"Fri Apr 16 2021 17:40:00 GMT-0500 (Ecuador Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Fri Apr 16 2021 17:10:00 GMT-0500 (Ecuador Time)","video":{"_id":"607a0b4e2ffbcb00a6781e79","data":{"title":"Test Streaming"}}},{"array_id":"31rrdQXer","duration":131,"end_time":"Invalid Date","kind":"video","repeat":"none","show_countdown":false,"start_time":"Mon Feb 15 2021 14:25:00 GMT-0500 (Ecuador Time)","video":{"_id":"602acb10e86c5f00a60c436b","data":{"title":"Introducing Dolby Atmos Music + Coldplay | Dolby Music"}}},{"array_id":"BB_20ihKc","duration":216,"end_time":"Wed Aug 21 2019 17:09:47 GMT-0700 (Pacific Daylight Time)","kind":"video","repeat":"none","show_countdown":false,"start_time":"Wed Aug 21 2019 17:06:11 GMT-0700 (Pacific Daylight Time)","video":{"_id":"5d5ddbd5452a8d9901a43c03","data":{"name":"Lady GaGa - Poker Face [Official Music Video] HQ"},"slug":"lady-ga-ga-poker-face-official-music-video-hq-5d5ddbd5452a8d9901a43c03"}}]},"offline":{"image":"https://dev.static.maestro.io/media/602ab9311d32aa002d9f6f35/618d7a85119de100a74a57d6.jpg","kind":"video","mode":"tv","video":{"_id":"602acf92c50bf5002d285e0e"}}},"countdown":{"start_time":"Tue Jan 04 2022 19:29:00 GMT-0500 (Ecuador Time)","title":"Countdown"},"default_mode":"none","gate":{"active":false,"kind":"none","gate":{"subscriptions":[]}},"name":"Watch","schedule":[{"all_day":"yes","duration":2090,"end_time":"Nov 03 2017 01:00:00 GMT+0000 (GMT)","kind":"video","repeat":"none","start_date":"Nov 03 2017","start_time":"Nov 03 2017 00:00:00 GMT+0000 (GMT)","video":{"_id":"5cd3501f74a7d0005b901b71","data":{"name":"Test Video"},"slug":"test-video"}}],"sidebar":[{"_id":"5cd3501f74a7d0005b901b6f","seo":{"title":"Chat"},"slug":"chat"},{"_id":"5cd3501f74a7d0005b901b70","seo":{"title":"Social"},"slug":"social"}],"welcome_screen":{"active":false,"duration":5,"image":"","mobile_image":""}},"last_modified":1643057286035,"renderers":{"livestream":{"livestream_doc":{"_id":"6050e78c57925500a6842944","created":1615914892950,"duration_seconds":0,"modified":1615914892950,"site_id":"602ab9311d32aa002d9f6f35","thumbnail":"https://static.maestro.io/media/5f32f379c04207002caf9c7f/5f6aa0146a9be500a5f3305f.jpg","title":"Test","type":"livestream"},"livestream_published":false,"stream_id":"612666d1d6be50002ea2b998","video_id":"619299eb7fb8cb002e1b1e60"},"sidebar":{"items":[{"array_id":"ojPS_l1gC","id":"609d932a9f42a53905fdb0a3"},{"array_id":"ry6E89OMl","id":"6197d81234cbd37cca05bbf4"},{"array_id":"7ttEXkxPz","id":"6050e5fdd3f5be0ceeb5c6f9"},{"array_id":"oY-k2TYM7","id":"602acefca8c994a364211454"},{"array_id":"gmrLAxQyM","id":"602ad72d89939c4c86b6bac5"},{"array_id":"TR3Ixxi-O","id":"60391df58f3bcf59cff41661"}]}},"seo":{"description":"lalallala","title":"Watch"},"site_id":"602ab9311d32aa002d9f6f35","slug":"home-page-1","style":{"channel_background_color":"#171e26"},"type":"landing","created":1557352479891,"modified":1643057286035,"tags":[]}]
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/pages/v2/landing', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
Gets Page Content Data on Page Id
Gets page content data specific to a site utilizing the given page id. The the content data includes the caniplay content and device check as well as page data.
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-device-id required | any Your Device Id found which is retrievable via https://insights.maestro.io/action POST endpoint. |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' ['x-maestro-device-id']: 'YOUR_DEVICE_ID' }; axios.get('https://api.maestro.io/pages/v2/content/id/{pageId}', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "canIPlayResponse": {
- "contentCheck": {
- "access": "full",
- "live": true,
- "offset": 0,
- "previewTimeRemainingSeconds": 0,
- "userHasChannelGateEntitlement": true,
- "userHasVideoEntitlement": true,
- "video": {
- "video": {
- "_id": "string",
- "description": "string",
- "durationSeconds": 0,
- "player": "youtube",
- "siteId": "string",
- "subscriptions": [
- {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
], - "thumbnail": "string",
- "title": "string",
- "type": "vod",
- "uploadStatus": "pending",
- "url": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
}
}, - "deviceCheck": {
- "accountDevices": {
- "property1": "string",
- "property2": "string"
}, - "accountOverDeviceLimit": true,
- "siteDeviceLimit": 0
}, - "error": {
- "type": "string",
- "message": "string"
}
}, - "channel": {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
}
Gets Page Content Data based on Page Slug
Gets page content data specific to a site utilizing the given page slug. The the content data includes the caniplay content and device check as well as page data.
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-device-id required | any Your Device Id found which is retrievable via https://insights.maestro.io/action POST endpoint. |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' ['x-maestro-device-id']: 'YOUR_DEVICE_ID' }; axios.get('https://api.maestro.io/pages/v2/content/slug/{pageSlug}', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "canIPlayResponse": {
- "contentCheck": {
- "access": "full",
- "live": true,
- "offset": 0,
- "previewTimeRemainingSeconds": 0,
- "userHasChannelGateEntitlement": true,
- "userHasVideoEntitlement": true,
- "video": {
- "video": {
- "_id": "string",
- "description": "string",
- "durationSeconds": 0,
- "player": "youtube",
- "siteId": "string",
- "subscriptions": [
- {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
], - "thumbnail": "string",
- "title": "string",
- "type": "vod",
- "uploadStatus": "pending",
- "url": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
}
}, - "deviceCheck": {
- "accountDevices": {
- "property1": "string",
- "property2": "string"
}, - "accountOverDeviceLimit": true,
- "siteDeviceLimit": 0
}, - "error": {
- "type": "string",
- "message": "string"
}
}, - "channel": {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
}
A Panel is a channel sidebar with activity such as a Twitter feed, a chat thread, Shopify store, advertising, etc. While all panels have common fields, what distinguishes one panel type from another is the panel object's renderer
object.
Sample panel type objects:
ChatImage
Shopify
Person
Group
Quest
Playlist
Twitch chat
Multiple choice
Iframe
Achievement leaderboard
Channel select
Schedule
Get site panels
Gets all site panels with filter options. No options returns all.
Sample call (gets all):
curl 'https://api.maestro.io/panel/v3/' \ -H 'x-maestro-client-id: <Your Client ID>' -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
query Parameters
limit | string Limit to return, default is 50 |
offset | string Offset from beginning |
sortBy | string Sort by field |
sortDirection | string Sort direction - ascending(1) or descending(-1) |
property | string Panel property filter, i.e., v3?prop=value |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your client ID', ['x-maestro-client-id']: 'Your developer API key' }; axios.get('https://api.maestro.io/panel/v3/', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "pagination": {
- "limit": 0,
- "offset": 0,
- "searchFields": [
- "string"
], - "sortDirection": 0,
- "totalCount": 0
}, - "results": [
- {
- "_id": "string",
- "renderer": {
- "allow_non_admin_links": true,
- "behavior": {
- "view": "list",
- "kind": "string",
- "pages": [
- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
}, - "channel": "string",
- "collection": {
- "handle": "string",
- "label": "string",
- "value": "string"
}, - "description": "string",
- "disable_on_mobile_embedded": true,
- "enable_dark_theme": true,
- "filtered_words": "string",
- "group_by_date": true,
- "groups": [
- {
- "id": "string",
- "group_banner_url": "string",
- "group_bio": "string",
- "group_name": "string",
- "group_links": [
- {
- "generated_key": "string",
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "help_link_url": "string",
- "icon_name": "airport",
- "id": "string",
- "iframe_tag": "string",
- "image_url": "string",
- "login_button_text": "string",
- "panel_name": "string",
- "panel_type": "shopify",
- "people": [
- {
- "id": "string",
- "person_bio": "string",
- "person_name": "string",
- "person_title": "string",
- "person_image_url": "string",
- "person_links": [
- {
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "playlist_id": "string",
- "questions": [
- {
- "array_id": "string",
- "poll_id": "string"
}
], - "quests": [
- {
- "array_id": "string",
- "quest_id": "string"
}
], - "rules_link_url": "string",
- "schedule_type_renderer": {
- "schedule_type": "calendar",
- "source_channels": [
- "string"
], - "manual_events": [
- {
- "array_id": "string",
- "end_time": 0,
- "name": "string",
- "location": "string",
- "more_info": "string",
- "references": [
- "string"
]
}
]
}, - "show_completed_count": true,
- "sources": {
- "array_id": "string",
- "source": "string"
}, - "system_image": "string",
- "system_name": "string",
- "system_welcome_message": "string",
- "url": "string"
}, - "collection": "panels",
- "site_id": "string",
- "slug": "string",
- "type": "string",
- "created": 0,
- "last_modified": 0
}
]
}
Create panel
Creates a panel.
Sample call:
curl -X POST 'https://api.maestro.io/panel/v3/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"renderer":{"panel_type":"social", \ "icon_name":"bus","panel_name":"Twitter panel test", \ "sources":[{"array_id":"dnIlTNOGQ","source":"@RayDalio"}]}, \ "site_id":"<site ID>","type":"panel"}'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Parameters to create a panel
required | object (Renderer) |
siteId required | string Site ID |
Responses
Request samples
- Payload
- javascript
{- "renderer": {
- "allow_non_admin_links": true,
- "behavior": {
- "view": "list",
- "kind": "string",
- "pages": [
- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
}, - "channel": "string",
- "collection": {
- "handle": "string",
- "label": "string",
- "value": "string"
}, - "description": "string",
- "disable_on_mobile_embedded": true,
- "enable_dark_theme": true,
- "filtered_words": "string",
- "group_by_date": true,
- "groups": [
- {
- "id": "string",
- "group_banner_url": "string",
- "group_bio": "string",
- "group_name": "string",
- "group_links": [
- {
- "generated_key": "string",
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "help_link_url": "string",
- "icon_name": "airport",
- "id": "string",
- "iframe_tag": "string",
- "image_url": "string",
- "login_button_text": "string",
- "panel_name": "string",
- "panel_type": "shopify",
- "people": [
- {
- "id": "string",
- "person_bio": "string",
- "person_name": "string",
- "person_title": "string",
- "person_image_url": "string",
- "person_links": [
- {
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "playlist_id": "string",
- "questions": [
- {
- "array_id": "string",
- "poll_id": "string"
}
], - "quests": [
- {
- "array_id": "string",
- "quest_id": "string"
}
], - "rules_link_url": "string",
- "schedule_type_renderer": {
- "schedule_type": "calendar",
- "source_channels": [
- "string"
], - "manual_events": [
- {
- "array_id": "string",
- "end_time": 0,
- "name": "string",
- "location": "string",
- "more_info": "string",
- "references": [
- "string"
]
}
]
}, - "show_completed_count": true,
- "sources": {
- "array_id": "string",
- "source": "string"
}, - "system_image": "string",
- "system_name": "string",
- "system_welcome_message": "string",
- "url": "string"
}, - "siteId": "string"
}
Response samples
- 200
{- "_id": "string",
- "renderer": {
- "allow_non_admin_links": true,
- "behavior": {
- "view": "list",
- "kind": "string",
- "pages": [
- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
}, - "channel": "string",
- "collection": {
- "handle": "string",
- "label": "string",
- "value": "string"
}, - "description": "string",
- "disable_on_mobile_embedded": true,
- "enable_dark_theme": true,
- "filtered_words": "string",
- "group_by_date": true,
- "groups": [
- {
- "id": "string",
- "group_banner_url": "string",
- "group_bio": "string",
- "group_name": "string",
- "group_links": [
- {
- "generated_key": "string",
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "help_link_url": "string",
- "icon_name": "airport",
- "id": "string",
- "iframe_tag": "string",
- "image_url": "string",
- "login_button_text": "string",
- "panel_name": "string",
- "panel_type": "shopify",
- "people": [
- {
- "id": "string",
- "person_bio": "string",
- "person_name": "string",
- "person_title": "string",
- "person_image_url": "string",
- "person_links": [
- {
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "playlist_id": "string",
- "questions": [
- {
- "array_id": "string",
- "poll_id": "string"
}
], - "quests": [
- {
- "array_id": "string",
- "quest_id": "string"
}
], - "rules_link_url": "string",
- "schedule_type_renderer": {
- "schedule_type": "calendar",
- "source_channels": [
- "string"
], - "manual_events": [
- {
- "array_id": "string",
- "end_time": 0,
- "name": "string",
- "location": "string",
- "more_info": "string",
- "references": [
- "string"
]
}
]
}, - "show_completed_count": true,
- "sources": {
- "array_id": "string",
- "source": "string"
}, - "system_image": "string",
- "system_name": "string",
- "system_welcome_message": "string",
- "url": "string"
}, - "collection": "panels",
- "site_id": "string",
- "slug": "string",
- "type": "string",
- "created": 0,
- "last_modified": 0
}
Get panel
Gets a panel given its ID in path.
Sample call:
curl 'https://api.maestro.io/panel/v3/<panel ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Sample return:
{"_id":"<panel ID>","collection":"panels", "last_modified":1613096264523, \ "renderer":{"panel_type":"shopify","icon_name":"", \ "collection":{"handle":"home","label":"Home","value":"Z2lkOi8vc2hvcGlmeS9Db2xsZWN0aW9uLzIyNjUyNTYxMDE1MA=="}, \ "id":"6094439a791f9d002d997642"},"site_id":"<site ID>", \ "slug":"panel-6094439a791f9d002d997642-generated","type":"panel", \ "created":1613096264523,"modified":1613096264523}
Authorizations:
path Parameters
id required | string Panel ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your client ID', ['x-maestro-client-id']: 'Your developer API key' }; axios.get('https://api.maestro.io/panel/v3/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "_id": "string",
- "renderer": {
- "allow_non_admin_links": true,
- "behavior": {
- "view": "list",
- "kind": "string",
- "pages": [
- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
}, - "channel": "string",
- "collection": {
- "handle": "string",
- "label": "string",
- "value": "string"
}, - "description": "string",
- "disable_on_mobile_embedded": true,
- "enable_dark_theme": true,
- "filtered_words": "string",
- "group_by_date": true,
- "groups": [
- {
- "id": "string",
- "group_banner_url": "string",
- "group_bio": "string",
- "group_name": "string",
- "group_links": [
- {
- "generated_key": "string",
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "help_link_url": "string",
- "icon_name": "airport",
- "id": "string",
- "iframe_tag": "string",
- "image_url": "string",
- "login_button_text": "string",
- "panel_name": "string",
- "panel_type": "shopify",
- "people": [
- {
- "id": "string",
- "person_bio": "string",
- "person_name": "string",
- "person_title": "string",
- "person_image_url": "string",
- "person_links": [
- {
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "playlist_id": "string",
- "questions": [
- {
- "array_id": "string",
- "poll_id": "string"
}
], - "quests": [
- {
- "array_id": "string",
- "quest_id": "string"
}
], - "rules_link_url": "string",
- "schedule_type_renderer": {
- "schedule_type": "calendar",
- "source_channels": [
- "string"
], - "manual_events": [
- {
- "array_id": "string",
- "end_time": 0,
- "name": "string",
- "location": "string",
- "more_info": "string",
- "references": [
- "string"
]
}
]
}, - "show_completed_count": true,
- "sources": {
- "array_id": "string",
- "source": "string"
}, - "system_image": "string",
- "system_name": "string",
- "system_welcome_message": "string",
- "url": "string"
}, - "collection": "panels",
- "site_id": "string",
- "slug": "string",
- "type": "string",
- "created": 0,
- "last_modified": 0
}
Update panel
Updates a panel given its ID in path.
Sample call:
curl -X PATCH 'https://api.maestro.io/panel/v3/<panel ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"renderer":{"description": "Mulltiple choice pop-up quiz"}}'
Authorizations:
path Parameters
id required | string Panel ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Parameters to update a panel
object (Renderer) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Responses
Request samples
- Payload
- javascript
{- "renderer": {
- "allow_non_admin_links": true,
- "behavior": {
- "view": "list",
- "kind": "string",
- "pages": [
- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
}, - "channel": "string",
- "collection": {
- "handle": "string",
- "label": "string",
- "value": "string"
}, - "description": "string",
- "disable_on_mobile_embedded": true,
- "enable_dark_theme": true,
- "filtered_words": "string",
- "group_by_date": true,
- "groups": [
- {
- "id": "string",
- "group_banner_url": "string",
- "group_bio": "string",
- "group_name": "string",
- "group_links": [
- {
- "generated_key": "string",
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "help_link_url": "string",
- "icon_name": "airport",
- "id": "string",
- "iframe_tag": "string",
- "image_url": "string",
- "login_button_text": "string",
- "panel_name": "string",
- "panel_type": "shopify",
- "people": [
- {
- "id": "string",
- "person_bio": "string",
- "person_name": "string",
- "person_title": "string",
- "person_image_url": "string",
- "person_links": [
- {
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "playlist_id": "string",
- "questions": [
- {
- "array_id": "string",
- "poll_id": "string"
}
], - "quests": [
- {
- "array_id": "string",
- "quest_id": "string"
}
], - "rules_link_url": "string",
- "schedule_type_renderer": {
- "schedule_type": "calendar",
- "source_channels": [
- "string"
], - "manual_events": [
- {
- "array_id": "string",
- "end_time": 0,
- "name": "string",
- "location": "string",
- "more_info": "string",
- "references": [
- "string"
]
}
]
}, - "show_completed_count": true,
- "sources": {
- "array_id": "string",
- "source": "string"
}, - "system_image": "string",
- "system_name": "string",
- "system_welcome_message": "string",
- "url": "string"
}
}
Delete panel
Deletes a panel given its ID in the path.
Sample call:
curl -X DELETE 'https://api.maestro.io/panel/v3/<panel ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
path Parameters
id required | string Panel ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your client ID', ['x-maestro-client-id']: 'Your developer API key' }; axios.delete('https://api.maestro.io/panel/v3/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Replace panel
Replaces a panel given its ID in the path.
Authorizations:
path Parameters
id required | string Panel ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Parameters to replace a panel
required | object (Renderer) |
siteId required | string Site ID |
Responses
Request samples
- Payload
{- "renderer": {
- "allow_non_admin_links": true,
- "behavior": {
- "view": "list",
- "kind": "string",
- "pages": [
- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
}, - "channel": "string",
- "collection": {
- "handle": "string",
- "label": "string",
- "value": "string"
}, - "description": "string",
- "disable_on_mobile_embedded": true,
- "enable_dark_theme": true,
- "filtered_words": "string",
- "group_by_date": true,
- "groups": [
- {
- "id": "string",
- "group_banner_url": "string",
- "group_bio": "string",
- "group_name": "string",
- "group_links": [
- {
- "generated_key": "string",
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "help_link_url": "string",
- "icon_name": "airport",
- "id": "string",
- "iframe_tag": "string",
- "image_url": "string",
- "login_button_text": "string",
- "panel_name": "string",
- "panel_type": "shopify",
- "people": [
- {
- "id": "string",
- "person_bio": "string",
- "person_name": "string",
- "person_title": "string",
- "person_image_url": "string",
- "person_links": [
- {
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "playlist_id": "string",
- "questions": [
- {
- "array_id": "string",
- "poll_id": "string"
}
], - "quests": [
- {
- "array_id": "string",
- "quest_id": "string"
}
], - "rules_link_url": "string",
- "schedule_type_renderer": {
- "schedule_type": "calendar",
- "source_channels": [
- "string"
], - "manual_events": [
- {
- "array_id": "string",
- "end_time": 0,
- "name": "string",
- "location": "string",
- "more_info": "string",
- "references": [
- "string"
]
}
]
}, - "show_completed_count": true,
- "sources": {
- "array_id": "string",
- "source": "string"
}, - "system_image": "string",
- "system_name": "string",
- "system_welcome_message": "string",
- "url": "string"
}, - "siteId": "string"
}
Response samples
- 200
{- "_id": "string",
- "renderer": {
- "allow_non_admin_links": true,
- "behavior": {
- "view": "list",
- "kind": "string",
- "pages": [
- {
- "collection": "pages",
- "data": {
- "artwork": { },
- "channel_select_active_image_url": "string",
- "content": { },
- "countdown": { },
- "default_mode": "string",
- "gate": { },
- "name": "string",
- "schedule": [
- { }
], - "sidebar": [
- { }
], - "welcome_screen": { }
}, - "seo": {
- "title": "string"
}, - "site_id": "string",
- "type": "channel",
- "slug": "string"
}
]
}, - "channel": "string",
- "collection": {
- "handle": "string",
- "label": "string",
- "value": "string"
}, - "description": "string",
- "disable_on_mobile_embedded": true,
- "enable_dark_theme": true,
- "filtered_words": "string",
- "group_by_date": true,
- "groups": [
- {
- "id": "string",
- "group_banner_url": "string",
- "group_bio": "string",
- "group_name": "string",
- "group_links": [
- {
- "generated_key": "string",
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "help_link_url": "string",
- "icon_name": "airport",
- "id": "string",
- "iframe_tag": "string",
- "image_url": "string",
- "login_button_text": "string",
- "panel_name": "string",
- "panel_type": "shopify",
- "people": [
- {
- "id": "string",
- "person_bio": "string",
- "person_name": "string",
- "person_title": "string",
- "person_image_url": "string",
- "person_links": [
- {
- "link_text": "string",
- "link_url": "string",
- "link_icon_name": "airport"
}
], - "created": 0,
- "last_modified": 0
}
], - "playlist_id": "string",
- "questions": [
- {
- "array_id": "string",
- "poll_id": "string"
}
], - "quests": [
- {
- "array_id": "string",
- "quest_id": "string"
}
], - "rules_link_url": "string",
- "schedule_type_renderer": {
- "schedule_type": "calendar",
- "source_channels": [
- "string"
], - "manual_events": [
- {
- "array_id": "string",
- "end_time": 0,
- "name": "string",
- "location": "string",
- "more_info": "string",
- "references": [
- "string"
]
}
]
}, - "show_completed_count": true,
- "sources": {
- "array_id": "string",
- "source": "string"
}, - "system_image": "string",
- "system_name": "string",
- "system_welcome_message": "string",
- "url": "string"
}, - "collection": "panels",
- "site_id": "string",
- "slug": "string",
- "type": "string",
- "created": 0,
- "last_modified": 0
}
Playlists are video collections you can import from Youtube or create from videos already uploaded to your site. To create playlists in your site UI, go to Admin > Library > ADD NEW > PLAYLIST.
Get site playlists
Gets a site's playlists with possible filter options. No filter options returns all.
Sample call (gets all):
curl 'https://api.maestro.io/playlist/v1?sortDirection=-1&sortBy=title' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID>
Authorizations:
query Parameters
limit | string Limit to return, default is 50 |
offset | string Offset from beginning |
sortBy | string Sort by field |
sortDirection | string Sort direction - ascending(1), descending(-1) |
property | string Playlist property filter, i.e., /v1?title=Elvis |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/playlist/v1/?title=myTitle, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "pagination": {
- "limit": 0,
- "offset": 0,
- "pageResults": 0,
- "searchFields": [
- "string"
], - "sortBy": "string",
- "sortDirection": "string",
- "totalCount": 0
}, - "results": [
- {
- "_id": "string",
- "siteId": "string",
- "title": "string",
- "description": "string",
- "members": [
- {
- "id": "string",
- "schema": "string"
}
], - "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
}
Create playlist
Creates a playlist from videos that have already been added to site.
Sample call:
curl -X POST 'https://api.maestro.io/playlist/v1' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID> \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"title":"Rolling Stones", "description": "Stones favorites",\ "members":[{"id":"60b612985c59df002d5dc235","schema":"video"}, \ {"id":"60b612bc01b250002df2b994","schema":"video"}]}
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Parameters to create playlist
title required | string Playlist title |
description | string Playlist description |
required | Array of objects (Member) |
tags | Array of arrays Metadata tags |
Responses
Request samples
- Payload
- javascript
{- "title": "string",
- "description": "string",
- "members": [
- {
- "id": "string",
- "schema": "string"
}
], - "tags": [ ]
}
Response samples
- 200
{- "_id": "string",
- "siteId": "string",
- "title": "string",
- "description": "string",
- "members": [
- {
- "id": "string",
- "schema": "string"
}
], - "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Get playlists
Get playlists given their IDs in the path.
Sample call:
curl 'https://api.maestro.io/playlist/v1/list?ids=<playlist ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID>
Authorizations:
query Parameters
ids | string Playlist IDs, comma separated. |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Response samples
- 200
{- "playlists": null
}
Get playlist
Gets a playlist given its ID in the path.
Sample call:
curl 'https://api.maestro.io/playlist/v1/<playlist ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID>
Sample return:
{"_id":"<playlist ID>","siteId":"<site ID>","title":"Elvis playlist", \ "members":[{"id":"60b4ee921541e8002d0dd081","schema":"video"}, \ {"id":"60b4ee496c5e0b002da3c5ce","schema":"video"}, \ {"id":"60b4ee26017503002d643f5a","schema":"video"}, \ {"id":"60b4edfc745dd4002d603dfd","schema":"video"}], \ "created":1622470341002,"modified":1622470341002}
Authorizations:
path Parameters
id required | string Playlist ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/playlist/v1/5e95e8c70451f322fc7f219e', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "_id": "string",
- "siteId": "string",
- "title": "string",
- "description": "string",
- "members": [
- {
- "id": "string",
- "schema": "string"
}
], - "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Update playlist
Update existing playlist given its ID in the path.
Sample call (update title):
curl -X POST 'https://api.maestro.io/playlist/v1/<playlist ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID> \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"title":"Rolling Stones playlist", "tags":["Rolling Stones", "Mick Jagger"]}
Authorizations:
path Parameters
id required | string Playlist ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Parameters to update playlist
title | string Playlist title |
description | string Playlist description |
Array of objects (Member) Playlist videos | |
tags | Array of arrays Metadata tags |
Responses
Request samples
- Payload
- javascript
{- "title": "string",
- "description": "string",
- "members": [
- {
- "id": "string",
- "schema": "string"
}
], - "tags": [ ]
}
Response samples
- 200
{- "_id": "string",
- "siteId": "string",
- "title": "string",
- "description": "string",
- "members": [
- {
- "id": "string",
- "schema": "string"
}
], - "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Delete playlist
Deletes a playlist given its ID in the path.
Sample call:
curl -X DELETE 'https://api.maestro.io/playlist/v1/<playlist ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>
Authorizations:
path Parameters
id required | string Playlist ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.delete('https://api.maestro.io/playlist/v1/5e95e8c70451f322fc7f219e', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Import Youtube playlist
Imports a Youtube playlist and converts it to a Maestro playlist.
Sample call:
curl -X POST 'https://api.maestro.io/playlist/v1/external/import/youtube' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID> \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"url":"https://www.youtube.com/playlist?list=PLBnJv6rImVe8U1Bw1GbWUcICcpQYoxgdx"}'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Convert playlist URL
url required | string Youtube playlist URL |
Responses
Request samples
- Payload
- javascript
{- "url": "string"
}
Response samples
- 200
{- "_id": "string",
- "siteId": "string",
- "title": "string",
- "description": "string",
- "members": [
- {
- "id": "string",
- "schema": "string"
}
], - "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Validate legacy references of a playlist by id
Get legacy references of a playlist given its ID in the path.
Sample call:
curl 'https://api.maestro.io/playlist/v1/validate-references/<playlist ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ **Sample return:**[{"_id": "61c09d829cd324c51bb34e09","collection": "panels","name": "Next Videos"}]
Authorizations:
path Parameters
id required | string Playlist ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' "Authorization": 'YOUR_BEARER_TOKEN' }; axios.get('https://api.maestro.io/playlist/v1/validate-references/6091bdbcf3fea700a50308c7', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Replace poll by id
Replaces a poll, given its id in the path.
Sample call:
curl 'https://api.maestro.io/poll/v3/<id>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>' \ -d '{"type":"string","question":"string","name":"string","correctAnswerId":"string","siteId":"string","open":true}'
path Parameters
id required | string Id of the poll you're replacing |
header Parameters
x-maestro-client-id required | string Your maestro id |
x-maestro-developer-key required | string Your Maestro developer key |
Request Body schema: application/json
Replacement poll information
type | string poll | prediction | trivia |
question | string poll question |
name | string poll name |
correctAnswerId | string |
siteId | string site id |
open | boolean |
Responses
Request samples
- Payload
- javascript
{- "type": "string",
- "question": "string",
- "name": "string",
- "correctAnswerId": "string",
- "siteId": "string",
- "open": true
}
Response samples
- 200
{- "type": "string",
- "question": "string",
- "name": "string",
- "correctAnswerId": "string",
- "siteId": "string",
- "open": true
}
Get poll by id
Gets a poll, given its id in the path.
Sample call:
curl 'https://api.maestro.io/poll/v3/<id>' \ -H 'x-maestro-client-id: <Your Client ID>'
path Parameters
id required | string Id of the poll to return |
header Parameters
x-maestro-client-id required | string Your maestro id |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/poll/v3/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "type": "string",
- "question": "string",
- "name": "string",
- "correctAnswerId": "string",
- "siteId": "string",
- "open": true
}
Update poll by id
Updates a poll, given its id in the path.
Sample call:
curl 'https://api.maestro.io/poll/v3/<id>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>' \ -d '{"type":"string","question":"string","name":"string","correctAnswerId":"string","siteId":"string","open":true}'
path Parameters
id required | string Id of the poll you're updating |
header Parameters
x-maestro-client-id required | string Your maestro id |
x-maestro-developer-key required | string Your Maestro developer key |
Request Body schema: application/json
Updated poll information
type | string poll | prediction | trivia |
question | string poll question |
name | string poll name |
correctAnswerId | string |
siteId | string site id |
open | boolean |
Responses
Request samples
- Payload
- javascript
{- "type": "string",
- "question": "string",
- "name": "string",
- "correctAnswerId": "string",
- "siteId": "string",
- "open": true
}
Response samples
- 200
{- "type": "string",
- "question": "string",
- "name": "string",
- "correctAnswerId": "string",
- "siteId": "string",
- "open": true
}
Delete poll by id
Deletes a poll, given its id in the path.
Sample call:
curl 'https://api.maestro.io/poll/v3/<id>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>'
path Parameters
id required | string Id of the poll you're deleting |
header Parameters
x-maestro-client-id required | string Your maestro id |
x-maestro-developer-key required | string Your Maestro developer key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.delete('https://api.maestro.io/poll/v3/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Get polls
Gets polls.
Sample call:
curl 'https://api.maestro.io/poll/v3/?search=string&offset=string&limit=string&sortBy=name&sortDirection=-1&rQuery=string' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>'
query Parameters
search | string Search string |
offset | string Offset from beginning |
limit | string Maximum to return |
sortBy | string name | created |
sortDirection | number 1 = ascending (default), -1 = descending |
rQuery | string limit | search | sortBy | sortDirection | offset |
header Parameters
x-maestro-client-id required | string Your maestro id |
x-maestro-developer-key required | string Your Maestro developer key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; const params = querystring.stringify({ search: string offset: string limit: string sortBy: string sortDirection: number rQuery: string }); axios.get('https://api.maestro.io/poll/v3/', params, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "type": "string",
- "question": "string",
- "name": "string",
- "correctAnswerId": "string",
- "siteId": "string",
- "open": true
}
]
Add a poll
Adds a poll.
Sample call:
curl 'https://api.maestro.io/poll/v3/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>' \ -d '{"type":"string","question":"string","name":"string","correctAnswerId":"string","siteId":"string","open":true}'
header Parameters
x-maestro-client-id required | string Your maestro id |
x-maestro-developer-key required | string Your Maestro developer key |
Request Body schema: application/json
Poll information
type | string poll | prediction | trivia |
question | string poll question |
name | string poll name |
correctAnswerId | string |
siteId | string site id |
open | boolean |
Responses
Request samples
- Payload
- javascript
{- "type": "string",
- "question": "string",
- "name": "string",
- "correctAnswerId": "string",
- "siteId": "string",
- "open": true
}
Response samples
- 200
{- "type": "string",
- "question": "string",
- "name": "string",
- "correctAnswerId": "string",
- "siteId": "string",
- "open": true
}
Get references for poll by id
Gets references for a poll, given its id in the path.
Sample call:
curl 'https://api.maestro.io/poll/v3/validate-references/<id>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>'
path Parameters
id required | string Id of the poll to return |
header Parameters
x-maestro-client-id required | string Your maestro id |
x-maestro-developer-key required | string Your Maestro developer key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/poll/v3/validate-references/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
[- {
- "_id": "string",
- "collection": "string",
- "name": "string"
}
]
Quests are ways to reward viewers for completing certain actions like answering a trivia question or sharing on Facebook. A quest object usually contains an action object, though one isn't required. To add a Quest in your site UI, go to ADMIN > CUSTOMIZE & CONTROL > Library > ADD NEW > QUEST
Get site quests
Get site quests with filter options. No options returns all.
Sample call (get all):
curl 'https://api.maestro.io/quest/v2' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>'
query Parameters
search | string Quest title filter. Title is labeled "Name" in the UI. |
sortBy | string Sort by field |
sortDirection | number Sort direction - ascending (1) or descending (-1) |
offset | number Offset from beginning |
limit | number Maximum to return |
property | string Any quest object property to search, i.e., .../v2?rewardType=raffle |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/quest/v2/?sortBy=created&sortDirection=-1', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "pagination": {
- "limit": 0,
- "offset": 0,
- "searchFields": [
- "string"
], - "sortDirection": 0,
- "totalCount": 0
}, - "results": [
- {
- "_id": "string",
- "actions": [
- {
- "arrayId": "string",
- "body": "string",
- "callToAction": "string",
- "channelId": "string",
- "kind": "answer:polls:any",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "validationValue": "string",
- "valueRequired": 0
}
], - "channelIds": [
- "string"
], - "claimedMessage": "string",
- "description": "string",
- "rewardDescription": "string",
- "rewardImage": "string",
- "rewardType": "raffle",
- "siteId": "string",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "title": "string",
- "webhookId": "string",
- "webhookType": "string",
- "webhookValue": 0,
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
}
Create quest
Creates a quest
Sample call:
curl -X POST 'https://api.maestro.io/quest/v2' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"actions":[ {"arrayId":"BK2lafgbV","valueRequired":1, \ "kind":"watch:any:video","channelId":"<channel ID>",\ "body":"Watch this video"}],"channelIds":[], "claimedMessage":"Claim your money now",\ "description":"Test quest","rewardDescription":"Money honey", \ "rewardImage":"https://somewebsite.com/someimage.jpeg","rewardType":"prize",\ "siteId":"<site ID>","title":"Quest prize"}'
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to create quest
title required | string Quest title |
description required | string Quest description |
Array of objects | |
rewardDescription required | string Reward description |
rewardType required | string (RewardType) Enum: "raffle" "prize" "webhook" "prize-service-specific" Reward type |
siteId required | string Site ID Same as your Maestro client ID. |
claimedMessage required | string Claimed message |
rewardInage | string Reward image URL |
timeMaximum | number Quest end date/time in UTC format |
timeMinimum | number Quest start date/time in UTC format |
webhookId | string Webhook ID. User created. Labeled "QUEST ID" in the UI. |
webhookType | string Webhook type. User created, not an enum. Labeled "REWARD TYPE" in the UI. |
webhookValue | number Webhook value. User created. Labeled "REWARD VALUE" in the UI. |
Responses
Request samples
- Payload
{- "title": "string",
- "description": "string",
- "actions": [
- {
- "arrayId": "string",
- "body": "string",
- "kind": "answer:polls:any",
- "callToAction": "string",
- "channelId": "string",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "validationValue": "string",
- "valueRequired": 0
}
], - "rewardDescription": "string",
- "rewardType": "raffle",
- "siteId": "string",
- "claimedMessage": "string",
- "rewardInage": "string",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "webhookId": "string",
- "webhookType": "string",
- "webhookValue": 0
}
Response samples
- 200
{- "_id": "string",
- "actions": [
- {
- "arrayId": "string",
- "body": "string",
- "callToAction": "string",
- "channelId": "string",
- "kind": "answer:polls:any",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "validationValue": "string",
- "valueRequired": 0
}
], - "channelIds": [
- "string"
], - "claimedMessage": "string",
- "description": "string",
- "rewardDescription": "string",
- "rewardImage": "string",
- "rewardType": "raffle",
- "siteId": "string",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "title": "string",
- "webhookId": "string",
- "webhookType": "string",
- "webhookValue": 0,
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Get quest
Gets a quest given its ID in the path.
Sample call:
curl 'https://api.maestro.io/quest/v2/<quest ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>'
Sample return:
{"_id":"<quest ID>","actions":[{"arrayId":"olddhrtvx", \ "kind":"answer:polls:specific","channelId":"6094439a791f9d002d997640", \ "body":"Specific poll quest test","validationValue":"60d0b20ccbe5833465136b26", \ "callToAction":"https://www.somewebsite.com"}],"channelIds":[], \ "claimedMessage":"Poll claimed message","description":"Test answer specific poll quest", \ "rewardDescription":"Poll reward","rewardType":"raffle", \ "siteId":"<site ID>","timeMaximum":1625112000000, \ "timeMinimum":1625025600000,"title":"Answer specific poll quest", \ "created":1624289897208,"modified":1624290661439}
path Parameters
id required | string Quest ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Response samples
- 200
{- "_id": "string",
- "actions": [
- {
- "arrayId": "string",
- "body": "string",
- "callToAction": "string",
- "channelId": "string",
- "kind": "answer:polls:any",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "validationValue": "string",
- "valueRequired": 0
}
], - "channelIds": [
- "string"
], - "claimedMessage": "string",
- "description": "string",
- "rewardDescription": "string",
- "rewardImage": "string",
- "rewardType": "raffle",
- "siteId": "string",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "title": "string",
- "webhookId": "string",
- "webhookType": "string",
- "webhookValue": 0,
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Delete quest
Deletes a quest given its ID in the path.
Sample call:
curl -X DELETE 'https://api.maestro.io/quest/v2/<quest ID> \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>'
path Parameters
id required | string Quest ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Response samples
- 200
{- "_id": "string",
- "actions": [
- {
- "arrayId": "string",
- "body": "string",
- "callToAction": "string",
- "channelId": "string",
- "kind": "answer:polls:any",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "validationValue": "string",
- "valueRequired": 0
}
], - "channelIds": [
- "string"
], - "claimedMessage": "string",
- "description": "string",
- "rewardDescription": "string",
- "rewardImage": "string",
- "rewardType": "raffle",
- "siteId": "string",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "title": "string",
- "webhookId": "string",
- "webhookType": "string",
- "webhookValue": 0,
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Replace quest
Replace quest given its ID in the path.
path Parameters
id required | string Quest ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to replace quest
title required | string Quest title |
description required | string Quest description |
Array of objects | |
rewardDescription required | string Reward description |
rewardType required | string (RewardType) Enum: "raffle" "prize" "webhook" "prize-service-specific" Reward type |
siteId required | string Site ID. Same as your Maestro client ID. |
claimedMessage required | string Claimed message |
rewardInage | string Reward image URL |
timeMaximum | number Quest end date/time in UTC format |
timeMinimum | number Quest start date/time in UTC format |
webhookId | string Webhook ID. User created. Labeled "QUEST ID" in the UI. |
webhookType | string Webhook type. User created, not an enum. Labeled "REWARD TYPE" in the UI. |
webhookValue | number Webhook value. User created. Labeled "REWARD VALUE" in the UI. |
Responses
Request samples
- Payload
{- "title": "string",
- "description": "string",
- "actions": [
- {
- "arrayId": "string",
- "body": "string",
- "kind": "answer:polls:any",
- "callToAction": "string",
- "channelId": "string",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "validationValue": "string",
- "valueRequired": 0
}
], - "rewardDescription": "string",
- "rewardType": "raffle",
- "siteId": "string",
- "claimedMessage": "string",
- "rewardInage": "string",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "webhookId": "string",
- "webhookType": "string",
- "webhookValue": 0
}
Response samples
- 200
{- "_id": "string",
- "actions": [
- {
- "arrayId": "string",
- "body": "string",
- "callToAction": "string",
- "channelId": "string",
- "kind": "answer:polls:any",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "validationValue": "string",
- "valueRequired": 0
}
], - "channelIds": [
- "string"
], - "claimedMessage": "string",
- "description": "string",
- "rewardDescription": "string",
- "rewardImage": "string",
- "rewardType": "raffle",
- "siteId": "string",
- "timeMaximum": 0,
- "timeMinimum": 0,
- "title": "string",
- "webhookId": "string",
- "webhookType": "string",
- "webhookValue": 0,
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Get site
Get site object
Sample call:
curl 'https://api.maestro.io/site/v1/' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your client ID', ['x-maestro-client-id']: 'Your developer API key' }; axios.get('https://api.maestro.io/site/v1/', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "_id": "string",
- "collections": {
- "ads": {
- "slug": "string"
}, - "articles": {
- "slug": "string"
}, - "categories": {
- "slug": "string"
}, - "channels": {
- "slug": "string"
}, - "episodes": {
- "slug": "string"
}, - "panel_sets": {
- "slug": "string"
}, - "panels": {
- "slug": "string"
}, - "people": {
- "slug": "string"
}, - "playlists": {
- "slug": "string"
}, - "polls": {
- "slug": "string"
}, - "shows": {
- "slug": "string"
}, - "tags": {
- "slug": "string"
}, - "videos": {
- "slug": "string"
}
}, - "contract": {
- "service_charge_rate": 0,
- "servicechargerate": 0
}, - "devicelimit": 0,
- "features": { },
- "last_modified": 0,
- "mentor": {
- "add_socials": true,
- "finish": true,
- "init_theme": true,
- "pick_theme": true,
- "welcome": true,
- "welcome_user": true
}, - "name": "string",
- "package": {
- "core": "string",
- "id": "string",
- "version": "string"
}, - "regions": {
- "channel-select": {
- "pages": [
- {
- "array_id": "string",
- "image": "string",
- "image_active": "string",
- "page": {
- "_id": "string",
- "seo": {
- "title": "string"
}, - "slug": "string"
}
}
]
}, - "state": "string"
}, - "featured": {
- "background": "string",
- "pages": [
- {
- "array_id": "string",
- "image": "string",
- "image_active": "string",
- "page": {
- "_id": "string",
- "seo": {
- "title": "string"
}, - "slug": "string"
}
}
], - "state": "string"
}, - "footer": {
- "actions": [
- {
- "content": {
- "html": "string",
- "image": "string",
- "kind": "string",
- "menu": [
- {
- "content": {
- "image": "string",
- "kind": "string",
- "url": "string"
}, - "icon": "airport",
- "text": "string"
}
], - "url": "string"
}, - "display": {
- "icon": "airport",
- "image": "string",
- "kind": "string",
- "text": "string"
}, - "icon": "airport",
- "kind": "string",
- "name": "string",
- "url": "string"
}
], - "background": "string",
- "footer_links": {
- "array_id": "string",
- "kind": "string",
- "name": "string",
- "url": "string"
}, - "hashtag": "string",
- "links": [
- {
- "icon": "airport",
- "image": "string",
- "kind": "string",
- "name": "string",
- "text": "string",
- "url": "string"
}
], - "newsletter": {
- "html": "string",
- "kind": "string",
- "text": "string"
}, - "sharing": [
- {
- "description": "string",
- "hashtag": "string",
- "image": "string",
- "kind": "string",
- "name": "string",
- "text": "string",
- "title": "string",
- "tweet_text": "string"
}
], - "socials": [
- {
- "array_id": "string",
- "icon": "airport",
- "title": "string",
- "url": "string"
}
], - "state": "string",
- "tweet_message": "string"
}, - "header": {
- "authentication": {
- "battlenet": true,
- "coachella": true,
- "facebook": true,
- "faceit": true,
- "maestro": true,
- "openid": true,
- "origin": true,
- "playstation": true,
- "twitch": true,
- "uplay": true,
- "wargaming": true,
- "xbox": true
}, - "background": "string",
- "default_logo": {
- "logo_link": "string",
- "logo_mobile": "string",
- "logo_title": "string",
- "logo_web": "string"
}, - "default_profile": "string",
- "logo": "string",
- "logo_link": "string",
- "mobile": {
- "background": "string",
- "logo": "string"
}, - "mobile_logo": "string",
- "profile_images": [
- {
- "image": "string",
- "title": "string",
- "url": "string"
}
], - "state": "string"
}, - "navigation": {
- "items": [
- {
- "array_id": "string",
- "has_menu": "string",
- "image": "string",
- "link": "string",
- "text": "string"
}
], - "state": "string"
}, - "player": {
- "autoplay_youtube": true,
- "show_video_embed": true,
- "show_video_title": true,
- "show_video_url": true,
- "socials": {
- "facebook": {
- "active": true
}, - "twitter": {
- "active": true
}
}, - "twitch_api": {
- "client_id": "string",
- "redirect_uri": "string"
}
}, - "settings": {
- "allow_new_admin": true,
- "code_injection": {
- "footer": "string",
- "header": "string"
}, - "custom_emails": {
- "from_email": "string",
- "reply_to_email": "string",
- "subject_line": "string",
- "subscription_receipt_template": "string"
}, - "customer_profile": {
- "logo": "string",
- "name": "string"
}, - "default_streaming_provider": "string",
- "domain": {
- "url": "string"
}, - "email": {
- "closing": "string",
- "copyright": "string",
- "from": "string",
- "mailing_address": "string",
- "signature": "string"
}, - "events": [
- {
- "from": 0,
- "name": "string",
- "to": 0
}
], - "home_id": "string",
- "icons": {
- "apple_16_x_16": "string",
- "apple_167_x_167": "string",
- "apple_180_x_180": "string",
- "favicon_128_x_128": "string",
- "favicon_196_x_196": "string",
- "favicon_228_x_228": "string"
}, - "security": {
- "password": "string"
}, - "transitions": {
- "mobile": "string",
- "web": "string"
}, - "user-segments": [
- {
- "data": [
- {
- "kind": "string",
- "type": "string",
- "location": "string"
}
], - "name": "string"
}
], - "user_profiles": {
- "change_name": true,
- "profile_images": [
- {
- "is_admin": true,
- "url": "string"
}
]
}, - "seo": {
- "title": "string",
- "image": "string",
- "keywords": [
- "string"
], - "description": "string"
}, - "localization": {
- "allow_autotranslate": true,
- "base_language": "string"
}, - "login": {
- "privacy": "string",
- "terms": "string",
- "text": "string",
- "marketing_optin": true,
- "marketing_optin_label": "string"
}, - "device_limit": 0,
- "settings_id": "string",
- "shards": [
- "string"
], - "slug": "string",
- "style": {
- "active_color": "string",
- "background": "string",
- "body_font": "string",
- "content_background_color": "string",
- "font": "string",
- "kind": "string",
- "theme": "string",
- "title_background_color": "string",
- "title_font": "string",
- "title_text_color": "string"
}, - "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
}
Replace site
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your developer API key |
Request Body schema: application/json
_id | string Site ID |
object | |
object | |
devicelimit | number Device limit |
features | object Site Features |
last_modified | number When last modified in UNIX time |
object | |
name | string Site name |
object | |
object | |
object | |
object | |
object | |
object | |
object | |
object |
Responses
Request samples
- Payload
- javascript
{- "_id": "string",
- "collections": {
- "ads": {
- "slug": "string"
}, - "articles": {
- "slug": "string"
}, - "categories": {
- "slug": "string"
}, - "channels": {
- "slug": "string"
}, - "episodes": {
- "slug": "string"
}, - "panel_sets": {
- "slug": "string"
}, - "panels": {
- "slug": "string"
}, - "people": {
- "slug": "string"
}, - "playlists": {
- "slug": "string"
}, - "polls": {
- "slug": "string"
}, - "shows": {
- "slug": "string"
}, - "tags": {
- "slug": "string"
}, - "videos": {
- "slug": "string"
}
}, - "contract": {
- "service_charge_rate": 0,
- "servicechargerate": 0
}, - "devicelimit": 0,
- "features": { },
- "last_modified": 0,
- "mentor": {
- "add_socials": true,
- "finish": true,
- "init_theme": true,
- "pick_theme": true,
- "welcome": true,
- "welcome_user": true
}, - "name": "string",
- "package": {
- "core": "string",
- "id": "string",
- "version": "string"
}, - "regions": {
- "channel-select": {
- "pages": [
- {
- "array_id": "string",
- "image": "string",
- "image_active": "string",
- "page": {
- "_id": "string",
- "seo": {
- "title": "string"
}, - "slug": "string"
}
}
]
}, - "state": "string"
}, - "featured": {
- "background": "string",
- "pages": [
- {
- "array_id": "string",
- "image": "string",
- "image_active": "string",
- "page": {
- "_id": "string",
- "seo": {
- "title": "string"
}, - "slug": "string"
}
}
], - "state": "string"
}, - "footer": {
- "actions": [
- {
- "content": {
- "html": "string",
- "image": "string",
- "kind": "string",
- "menu": [
- {
- "content": {
- "image": "string",
- "kind": "string",
- "url": "string"
}, - "icon": "airport",
- "text": "string"
}
], - "url": "string"
}, - "display": {
- "icon": "airport",
- "image": "string",
- "kind": "string",
- "text": "string"
}, - "icon": "airport",
- "kind": "string",
- "name": "string",
- "url": "string"
}
], - "background": "string",
- "footer_links": {
- "array_id": "string",
- "kind": "string",
- "name": "string",
- "url": "string"
}, - "hashtag": "string",
- "links": [
- {
- "icon": "airport",
- "image": "string",
- "kind": "string",
- "name": "string",
- "text": "string",
- "url": "string"
}
], - "newsletter": {
- "html": "string",
- "kind": "string",
- "text": "string"
}, - "sharing": [
- {
- "description": "string",
- "hashtag": "string",
- "image": "string",
- "kind": "string",
- "name": "string",
- "text": "string",
- "title": "string",
- "tweet_text": "string"
}
], - "socials": [
- {
- "array_id": "string",
- "icon": "airport",
- "title": "string",
- "url": "string"
}
], - "state": "string",
- "tweet_message": "string"
}, - "header": {
- "authentication": {
- "battlenet": true,
- "coachella": true,
- "facebook": true,
- "faceit": true,
- "maestro": true,
- "openid": true,
- "origin": true,
- "playstation": true,
- "twitch": true,
- "uplay": true,
- "wargaming": true,
- "xbox": true
}, - "background": "string",
- "default_logo": {
- "logo_link": "string",
- "logo_mobile": "string",
- "logo_title": "string",
- "logo_web": "string"
}, - "default_profile": "string",
- "logo": "string",
- "logo_link": "string",
- "mobile": {
- "background": "string",
- "logo": "string"
}, - "mobile_logo": "string",
- "profile_images": [
- {
- "image": "string",
- "title": "string",
- "url": "string"
}
], - "state": "string"
}, - "navigation": {
- "items": [
- {
- "array_id": "string",
- "has_menu": "string",
- "image": "string",
- "link": "string",
- "text": "string"
}
], - "state": "string"
}, - "player": {
- "autoplay_youtube": true,
- "show_video_embed": true,
- "show_video_title": true,
- "show_video_url": true,
- "socials": {
- "facebook": {
- "active": true
}, - "twitter": {
- "active": true
}
}, - "twitch_api": {
- "client_id": "string",
- "redirect_uri": "string"
}
}, - "settings": {
- "allow_new_admin": true,
- "code_injection": {
- "footer": "string",
- "header": "string"
}, - "custom_emails": {
- "from_email": "string",
- "reply_to_email": "string",
- "subject_line": "string",
- "subscription_receipt_template": "string"
}, - "customer_profile": {
- "logo": "string",
- "name": "string"
}, - "default_streaming_provider": "string",
- "domain": {
- "url": "string"
}, - "email": {
- "closing": "string",
- "copyright": "string",
- "from": "string",
- "mailing_address": "string",
- "signature": "string"
}, - "events": [
- {
- "from": 0,
- "name": "string",
- "to": 0
}
], - "home_id": "string",
- "icons": {
- "apple_16_x_16": "string",
- "apple_167_x_167": "string",
- "apple_180_x_180": "string",
- "favicon_128_x_128": "string",
- "favicon_196_x_196": "string",
- "favicon_228_x_228": "string"
}, - "security": {
- "password": "string"
}, - "transitions": {
- "mobile": "string",
- "web": "string"
}, - "user-segments": [
- {
- "data": [
- {
- "kind": "string",
- "type": "string",
- "location": "string"
}
], - "name": "string"
}
], - "user_profiles": {
- "change_name": true,
- "profile_images": [
- {
- "is_admin": true,
- "url": "string"
}
]
}, - "seo": {
- "title": "string",
- "image": "string",
- "keywords": [
- "string"
], - "description": "string"
}, - "localization": {
- "allow_autotranslate": true,
- "base_language": "string"
}, - "login": {
- "privacy": "string",
- "terms": "string",
- "text": "string",
- "marketing_optin": true,
- "marketing_optin_label": "string"
}, - "device_limit": 0,
- "settings_id": "string",
- "shards": [
- "string"
], - "slug": "string",
- "style": {
- "active_color": "string",
- "background": "string",
- "body_font": "string",
- "content_background_color": "string",
- "font": "string",
- "kind": "string",
- "theme": "string",
- "title_background_color": "string",
- "title_font": "string",
- "title_text_color": "string"
}, - "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
}
Response samples
- 200
{- "_id": "string",
- "collections": {
- "ads": {
- "slug": "string"
}, - "articles": {
- "slug": "string"
}, - "categories": {
- "slug": "string"
}, - "channels": {
- "slug": "string"
}, - "episodes": {
- "slug": "string"
}, - "panel_sets": {
- "slug": "string"
}, - "panels": {
- "slug": "string"
}, - "people": {
- "slug": "string"
}, - "playlists": {
- "slug": "string"
}, - "polls": {
- "slug": "string"
}, - "shows": {
- "slug": "string"
}, - "tags": {
- "slug": "string"
}, - "videos": {
- "slug": "string"
}
}, - "contract": {
- "service_charge_rate": 0,
- "servicechargerate": 0
}, - "devicelimit": 0,
- "features": { },
- "last_modified": 0,
- "mentor": {
- "add_socials": true,
- "finish": true,
- "init_theme": true,
- "pick_theme": true,
- "welcome": true,
- "welcome_user": true
}, - "name": "string",
- "package": {
- "core": "string",
- "id": "string",
- "version": "string"
}, - "regions": {
- "channel-select": {
- "pages": [
- {
- "array_id": "string",
- "image": "string",
- "image_active": "string",
- "page": {
- "_id": "string",
- "seo": {
- "title": "string"
}, - "slug": "string"
}
}
]
}, - "state": "string"
}, - "featured": {
- "background": "string",
- "pages": [
- {
- "array_id": "string",
- "image": "string",
- "image_active": "string",
- "page": {
- "_id": "string",
- "seo": {
- "title": "string"
}, - "slug": "string"
}
}
], - "state": "string"
}, - "footer": {
- "actions": [
- {
- "content": {
- "html": "string",
- "image": "string",
- "kind": "string",
- "menu": [
- {
- "content": {
- "image": "string",
- "kind": "string",
- "url": "string"
}, - "icon": "airport",
- "text": "string"
}
], - "url": "string"
}, - "display": {
- "icon": "airport",
- "image": "string",
- "kind": "string",
- "text": "string"
}, - "icon": "airport",
- "kind": "string",
- "name": "string",
- "url": "string"
}
], - "background": "string",
- "footer_links": {
- "array_id": "string",
- "kind": "string",
- "name": "string",
- "url": "string"
}, - "hashtag": "string",
- "links": [
- {
- "icon": "airport",
- "image": "string",
- "kind": "string",
- "name": "string",
- "text": "string",
- "url": "string"
}
], - "newsletter": {
- "html": "string",
- "kind": "string",
- "text": "string"
}, - "sharing": [
- {
- "description": "string",
- "hashtag": "string",
- "image": "string",
- "kind": "string",
- "name": "string",
- "text": "string",
- "title": "string",
- "tweet_text": "string"
}
], - "socials": [
- {
- "array_id": "string",
- "icon": "airport",
- "title": "string",
- "url": "string"
}
], - "state": "string",
- "tweet_message": "string"
}, - "header": {
- "authentication": {
- "battlenet": true,
- "coachella": true,
- "facebook": true,
- "faceit": true,
- "maestro": true,
- "openid": true,
- "origin": true,
- "playstation": true,
- "twitch": true,
- "uplay": true,
- "wargaming": true,
- "xbox": true
}, - "background": "string",
- "default_logo": {
- "logo_link": "string",
- "logo_mobile": "string",
- "logo_title": "string",
- "logo_web": "string"
}, - "default_profile": "string",
- "logo": "string",
- "logo_link": "string",
- "mobile": {
- "background": "string",
- "logo": "string"
}, - "mobile_logo": "string",
- "profile_images": [
- {
- "image": "string",
- "title": "string",
- "url": "string"
}
], - "state": "string"
}, - "navigation": {
- "items": [
- {
- "array_id": "string",
- "has_menu": "string",
- "image": "string",
- "link": "string",
- "text": "string"
}
], - "state": "string"
}, - "player": {
- "autoplay_youtube": true,
- "show_video_embed": true,
- "show_video_title": true,
- "show_video_url": true,
- "socials": {
- "facebook": {
- "active": true
}, - "twitter": {
- "active": true
}
}, - "twitch_api": {
- "client_id": "string",
- "redirect_uri": "string"
}
}, - "settings": {
- "allow_new_admin": true,
- "code_injection": {
- "footer": "string",
- "header": "string"
}, - "custom_emails": {
- "from_email": "string",
- "reply_to_email": "string",
- "subject_line": "string",
- "subscription_receipt_template": "string"
}, - "customer_profile": {
- "logo": "string",
- "name": "string"
}, - "default_streaming_provider": "string",
- "domain": {
- "url": "string"
}, - "email": {
- "closing": "string",
- "copyright": "string",
- "from": "string",
- "mailing_address": "string",
- "signature": "string"
}, - "events": [
- {
- "from": 0,
- "name": "string",
- "to": 0
}
], - "home_id": "string",
- "icons": {
- "apple_16_x_16": "string",
- "apple_167_x_167": "string",
- "apple_180_x_180": "string",
- "favicon_128_x_128": "string",
- "favicon_196_x_196": "string",
- "favicon_228_x_228": "string"
}, - "security": {
- "password": "string"
}, - "transitions": {
- "mobile": "string",
- "web": "string"
}, - "user-segments": [
- {
- "data": [
- {
- "kind": "string",
- "type": "string",
- "location": "string"
}
], - "name": "string"
}
], - "user_profiles": {
- "change_name": true,
- "profile_images": [
- {
- "is_admin": true,
- "url": "string"
}
]
}, - "seo": {
- "title": "string",
- "image": "string",
- "keywords": [
- "string"
], - "description": "string"
}, - "localization": {
- "allow_autotranslate": true,
- "base_language": "string"
}, - "login": {
- "privacy": "string",
- "terms": "string",
- "text": "string",
- "marketing_optin": true,
- "marketing_optin_label": "string"
}, - "device_limit": 0,
- "settings_id": "string",
- "shards": [
- "string"
], - "slug": "string",
- "style": {
- "active_color": "string",
- "background": "string",
- "body_font": "string",
- "content_background_color": "string",
- "font": "string",
- "kind": "string",
- "theme": "string",
- "title_background_color": "string",
- "title_font": "string",
- "title_text_color": "string"
}, - "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
}
Replace site's features
Authorizations:
path Parameters
siteId required | string |
header Parameters
super-api-key required | string Your Super API key |
Request Body schema: application/json
access_code | boolean Access Code flag |
achievements | boolean Achievements flag |
apple_pay | boolean Apple pay flag |
billing | boolean Billing admin flag |
code_injection | boolean Code Injection flag |
developer | boolean Developer flag |
earnings | boolean Earnings Dashboard flag |
hide_copyright | boolean Hide copyright flag |
hide_gdpr | boolean Hide GDPR banner flag |
hide_maestro_logo | boolean Hide maestro logo flag |
insights_analytics | boolean Insights Analytics flag |
gdpr | boolean Show GDPR banner flag |
generate_captions | boolean Generate Captions flag |
google_pay | boolean Google pay flag |
maestro_support | boolean Maestro support flag |
object | |
revenue | boolean Revenue flag |
secure_vods | boolean Secure VODs flag |
secure_streams | boolean Secure Streams flag |
shopify | boolean Shopify flag |
streaming | boolean Streaming flag |
streams_expire | boolean Streams expire flag |
stream_provider_account | boolean Stream provider account flag |
studio_stream | boolean Stream provider account flag |
support_4_k | boolean 4K Stream flag |
subscriptions | boolean Subscriptions flag |
uploads_v_2 | boolean uploads v2 flag |
vod_uploads | boolean VOD uploads flag |
Responses
Request samples
- Payload
- javascript
{- "access_code": true,
- "achievements": true,
- "apple_pay": true,
- "billing": true,
- "code_injection": true,
- "developer": true,
- "earnings": true,
- "hide_copyright": true,
- "hide_gdpr": true,
- "hide_maestro_logo": true,
- "insights_analytics": true,
- "gdpr": true,
- "generate_captions": true,
- "google_pay": true,
- "maestro_support": true,
- "panels": {
- "fortnite_duos_leadberboard": true,
- "pubg_match": true,
- "tips": true
}, - "revenue": true,
- "secure_vods": true,
- "secure_streams": true,
- "shopify": true,
- "streaming": true,
- "streams_expire": true,
- "stream_provider_account": true,
- "studio_stream": true,
- "support_4_k": true,
- "subscriptions": true,
- "uploads_v_2": true,
- "vod_uploads": true
}
RESTful APIs to perform stream operations using stream objects. Go to ADMIN > CUSTOMIZE & CONTROL > Stream to add live streams in your site's UI. For more information, see the Streaming Directly to Maestro help article.
Get site streams
Gets a site's streams.
Sample call:
curl 'https://api.maestro.io/stream/v1' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'get', url: 'https://api.maestro.io/stream/v1', headers: { 'x-maestro-client-id': 'Your client ID', 'x-maestro-developer-key': 'Your developer API key' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
[- {
- "_id": "string",
- "ingestUrl": "string",
- "isLive": true,
- "playbackUrl": "string",
- "provider": "string",
- "providerStreamId": "string",
- "siteId": "string",
- "streamKey": "string",
- "title": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
Create stream
Creates a stream. Once your stream is created, a stream key and URL is returned. Follow the instructions at the Streaming Directly to Maestro help article to go live.
Sample call:
curl -X POST 'https://api.maestro.io/stream/v1' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"title": "Prince live"}'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to create stream
ingestUrl | string Ingestion URL, i.e., rtmp://origin.cdn.wowza.com:1935/live (rtmp=real time ingestion protocol). |
isLive | boolean Live flag |
playbackUrl | string Playback URL, i.e., https://cdn3.wowza.com/1/MVo0cng1ZGllekxR/ZEwwRit2/hls/live/playlist.m3u8 |
provider | string Provider, , i.e., mux, mux-local, wowza, mux-staging, etc. |
providerStreamId | string Provider stream ID. The ID that a provider like wowza/mux uses to identify the stream (different to our |
siteId | string Site ID |
streamKey | string Stream key - code used to activate a stream. |
title required | string Stream title. |
Responses
Request samples
- Payload
- javascript
{- "ingestUrl": "string",
- "isLive": true,
- "playbackUrl": "string",
- "provider": "string",
- "providerStreamId": "string",
- "siteId": "string",
- "streamKey": "string",
- "title": "string"
}
Response samples
- 200
[- {
- "_id": "string",
- "ingestUrl": "string",
- "isLive": true,
- "playbackUrl": "string",
- "provider": "string",
- "providerStreamId": "string",
- "siteId": "string",
- "streamKey": "string",
- "title": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
Get stream
Gets a stream given its ID in the path.
Sample call:
curl 'https://api.maestro.io/stream/v1/<stream ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Sample return:
{"_id":"<stream ID>","fallbackImageUrl":"https://sapphire.maestro.io/media/v1/5d7ff7eb5b741c00a4aca70c/5e3cad7c4f6b3200a4512dea.png", "ingestUrl":"rtmp://global-live.mux.com:5222/app","isLive":false,"playbackUrl":"https://stream.mux.com/ZmIgOSRW7HOlP01006lThruibdk92tZFBLI1gbyTYqPW8.m3u8", "provider":"mux-local","providerStreamId":"5GKcvAGyE5OS0200ZI9Z64L00Z3JJVY8w8QEyDtT8lbKPI", "siteId":"<site ID>","streamKey":"061fbd8f-8e0a-81c8-0159-a637a0424e5d", "title":"Mux Livestream Test","created":1592960359968,"modified":1592960359968,"tags":[]}
Authorizations:
path Parameters
id required | string Stream ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'get', url: 'https://api.maestro.io/stream/v1/<stream ID>', headers: { 'x-maestro-client-id': 'Your client ID', 'x-maestro-developer-key': 'Your developer API key' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
{- "_id": "string",
- "ingestUrl": "string",
- "isLive": true,
- "playbackUrl": "string",
- "provider": "string",
- "providerStreamId": "string",
- "siteId": "string",
- "streamKey": "string",
- "title": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Delete stream
Deletes a stream given its ID in the path.
Sample call:
curl -X DELETE 'https://api.maestro.io/stream/v1/<stream ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>'
Authorizations:
path Parameters
id required | string Stream ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'delete', url: 'https://api.maestro.io/stream/v1/<stream ID>', headers: { 'x-maestro-client-id': 'Your client ID', 'Authorization': 'Bearer <Your JWT>c' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Start stream
Starts a stream given its ID in the path.
Sample call:
curl -X POST 'https://api.maestro.io/stream/v1/start/<stream ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
path Parameters
id required | string Stream ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'post', url: 'https://api.maestro.io/stream/v1/start/<stream ID>', headers: { 'x-maestro-client-id': 'Your client ID', 'x-maestro-developer-key': 'Your developer API key' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
[- {
- "_id": "string",
- "ingestUrl": "string",
- "isLive": true,
- "playbackUrl": "string",
- "provider": "string",
- "providerStreamId": "string",
- "siteId": "string",
- "streamKey": "string",
- "title": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
Stop stream
Stops a stream given its ID in the path.
Sample call:
curl -X POST 'https://api.maestro.io/stream/v1/stop/<stream ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
path Parameters
id required | string Stream ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'post', url: 'https://api.maestro.io/stream/v1/stop/<stream ID>', headers: { 'x-maestro-client-id': 'Your client ID', 'x-maestro-developer-key': 'Your developer API key' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
[- {
- "_id": "string",
- "ingestUrl": "string",
- "isLive": true,
- "playbackUrl": "string",
- "provider": "string",
- "providerStreamId": "string",
- "siteId": "string",
- "streamKey": "string",
- "title": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
Get games for stream content
Gets games for stream content using IGDB API.
Authorizations:
query Parameters
gameName | string The name of the game to search for |
offset | string The number to offset the results by |
limit | string The number to limit the results by |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'get', url: 'https://api.maestro.io/stream/v1/content/games', headers: { 'x-maestro-client-id': 'Your client ID', 'x-maestro-developer-key': 'Your developer API key' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
[- {
- "id": 0,
- "name": "string"
}
]
Besides the fields included in all webhooks by default, the eventData
object will look like
the following for streaming related webhooks:
{ event<string>: 'admin.wentLive' | 'admin.wentOffline' channelId<string>: the maestro channel's ID channelIcon<string | undefined | null>: the channel's icon channelSeoDescription<string | undefined | null>: the channel's SEO description channelSeoImage<string | undefined | null>: the channel's SEO Image URL channelSeoKeywords<string | undefined | null>: the channel's SEO keywords liveBroadcastId<string>: the ID for the live stream recording to link the VOD siteId<string>: the maestro site ID streamId<string>: the stream ID }
Non-RESTful service for streaming providers to establish an API contract with Maestro.
Authorizations:
Request Body schema: application/json
Request body Stream Provider sends to Maestro to update or register.
canGenerateCaptions | boolean |
canSupport4K | boolean |
name | string |
object |
Responses
Request samples
- Payload
- javascript
{- "canGenerateCaptions": true,
- "canSupport4K": true,
- "name": "string",
- "urls": {
- "createStream": "string",
- "deleteStream": "string",
- "startStream": "string",
- "stopStream": "string"
}
}
Response samples
- 200
{- "id": "string",
- "authorization": "string"
}
Add account subscription
Adds subscription entitlement to account.
Sample call:
curl -X POST 'https://api.maestro.io/subscription/v2/grant' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Developer API Key ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d "accountId=<Account ID>&sku=example-entitlement"
Authorizations:
header Parameters
x-maestro-client-id required | string Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Request body to grant subscription
accountId required | string Account ID |
sku required | string Entitlement subscription being added to account, i.e., my-entitlement-subscription |
Responses
Request samples
- Payload
- javascript
{- "accountId": "string",
- "sku": "string"
}
Revoke account subscription
Revokes an account's subscription.
Sample call:
curl -X POST 'https://api.maestro.io/subscription/v2/revoke' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Developer API Key ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d "accountId=<Account ID>&sku=example-entitlement"
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: text/plain
Request body to revoke subscription
accountId required | string Account ID |
sku required | string Entitlement subscription revoked from account, i.e., my-entitlement-subscription |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'post', url: 'https://api.maestro.io/subscription/v2/revoke?sku=my-new-entitlement&accountId=<account ID>', headers: { 'x-maestro-client-id': 'Your client ID', 'x-maestro-developer-key': 'Your developer API key', 'Authorization': 'Bearer <Your JWT token>' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Get site subscriptions
Gets subscriptions from site with filter options.
Sample call:
curl 'https://api.maestro.io/subscription/v2/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Developer API Key ID>'
Authorizations:
query Parameters
limit | number Max to return, default is 50. |
offset | number Offset from beginning |
sortBy | string Field to sort by, i.e., name |
sortDirection | number Sort order - 1=ascending, -1=descending |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'get', url: 'https://api.maestro.io/subscription/v2/', headers: { 'x-maestro-client-id': 'Your client ID', 'x-maestro-developer-key': 'Your developer API key' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
[- {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
Create subscription
Creates a new site entitlement subscription
Sample call:
curl -X POST 'https://api.maestro.io/subscription/v2/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Developer API Key ID>' \ -d "siteId=<Site ID>&sku=example-entitlement&name='Example Entitlement'&subscriptionProvider=maestro&recurrence=once"
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Create subscription body parameters
name required | string Subscription entitlement name |
siteId required | string Site ID |
sku required | string Entitlement subscription being added to account, i.e., my-entitlement-subscription |
subscriptionProvider required | string Subscription entitlement provider, i.e., maestro |
Array of objects (Price) | |
recurrence | string (SubscriptionRecurrenceType) Enum: "once" "month" "year" |
Responses
Request samples
- Payload
- javascript
{- "name": "string",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once"
}
Response samples
- 200
{- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Get subscription (SKU)
Gets a subscription given a subscription SKU in the path.
Sample call:
curl 'https://api.maestro.io/subscription/v2/sku/some-sku-entitlement' \ -H 'x-maestro-client-id: <Your client ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Authorizations:
path Parameters
sku required | string Subscription SKU |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'get', url: 'https://api.maestro.io/subscription/v2/some-sku-entitlement', headers: { 'x-maestro-client-id': 'Your client ID', 'x-maestro-developer-key': 'Your developer API key' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
{- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Get subscription (ID)
Gets a subscription given its ID in the path.
Sample call:
curl 'https://api.maestro.io/subscription/v2/<subscriptionID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Developer API Key ID>' \
Sample return:
{"_id":"<subscription ID>","name":"'New Sub Entitlement'", \ "recurrence":"month","siteId":"<site ID>","sku":"new-sub-entitlement", \ "stripePlanId":"plan_JYqAlDYTI8u233","subscriptionProvider":"maestro", \ "created":1622119116324,"modified":1622119116749,"tags":[]}
Authorizations:
path Parameters
id required | string Subscription ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'get', url: 'https://api.maestro.io/subscription/v2/<subscription ID>', headers: { 'x-maestro-client-id': 'Your client ID', 'x-maestro-developer-key': 'Your developer API key' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
{- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Update subscription
Updates a site subscription given its ID in path.
curl -X POST 'https://api.maestro.io/subscription/v2/<subscription ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Developer API Key ID>' \ -d "recurrence=year"
Authorizations:
path Parameters
id required | string Subscription ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Request Body schema: application/json
Update subscription body parameters
name required | string Subscription entitlement name |
sku required | string Entitlement subscription being added to account, i.e., my-entitlement-subscription |
subscriptionProvider required | string Subscription entitlement provider, i.e., maestro |
Array of objects (Price) | |
recurrence | string (SubscriptionRecurrenceType) Enum: "once" "month" "year" |
Responses
Request samples
- Payload
- javascript
{- "name": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once"
}
Response samples
- 200
{- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Delete subscription
Delete a subscription given its ID in the path.
Sample call:
curl -X DELETE 'https://api.maestro.io/subscription/v2/<subscription ID> \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Developer API key ID>'
Authorizations:
path Parameters
id required | string Subscription ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'delete', url: 'https://api.maestro.io/subscription/v2/60a4c60a49e6ca002d9108f7', headers: { 'x-maestro-client-id': 'Your client ID', 'x-maestro-developer-key': 'Your developer API key' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Get site account entitlements
Get account subscription entitlements for a site.
Sample call:
curl 'https://api.maestro.io/subscription/v2/account' \ -H 'x-maestro-client-id: <Your client ID>' \ -H 'Authorization: Bearer <Your JWT token>'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'get', url: 'https://api.maestro.io/subscription/v2/account/ headers: { 'x-maestro-client-id': '6094439a791f9d002d99762d', 'Authorization': 'Bearer <Your JWT token>' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
[- {
- "_id": "string",
- "accountId": "string",
- "dateGranted": "string",
- "entitlement": {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "grantedMethod": "accessCode",
- "presentmentCurrency": "string",
- "siteId": "string",
- "status": "active",
- "created": 0,
- "modified": 0
}
]
Get account entitlements
Get an account's subscription entitlements given its ID in the path.
Sample call:
curl 'https://api.maestro.io/subscription/v2/account/<account ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
var axios = require('axios'); var config = { method: 'get', url: 'https://api.maestro.io/subscription/v2/account/<account ID>', headers: { 'x-maestro-client-id': '6094439a791f9d002d99762d', 'Authorization': 'Bearer <Your JWT token>' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
[- {
- "_id": "string",
- "accountId": "string",
- "dateGranted": "string",
- "entitlement": {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}, - "grantedMethod": "accessCode",
- "presentmentCurrency": "string",
- "siteId": "string",
- "status": "active",
- "created": 0,
- "modified": 0
}
]
Create admin theme
Creates an admin theme.
Sample call:
curl 'https://api.maestro.io/theme/v1/admin' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d '{"button":{},"colors":{},"name":"string","type":"admin","typography":{}}'
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to create admin theme
required | object |
required | object |
desktopBackground | string |
icon | string |
logo | string |
mobileBackground | string |
mode | string light | dark |
name required | string |
siteID | string |
type required | string admin | classic | advanced | custom |
required | object |
Responses
Request samples
- Payload
- javascript
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Response samples
- 200
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Apply admin theme to site
Applies an admin theme to a site.
Sample call:
curl 'https://api.maestro.io/theme/v1/admin/apply-admin-theme-to-site' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d '{"siteSlugOrId":"string","themeNameOrId":"string"}'
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to apply admin theme to site
siteSlugOrId | string |
themeNameOrId | string |
Responses
Request samples
- Payload
- javascript
{- "siteSlugOrId": "string",
- "themeNameOrId": "string"
}
Response samples
- 200
{- "success": true
}
Get custom themes
Gets custom themes.
Sample call:
curl 'https://api.maestro.io/themes/v1/custom?limit=string&offset=string' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>'
query Parameters
limit | string Maximum to return |
offset | string Offset from beginning |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer key |
Responses
Request samples
- javascript
const axios = require('axios'); const querystring = require('querystring'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; const params = querystring.stringify({ limit: string offset: string }); axios.get('https://api.maestro.io/themes/v1/custom', params, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "totalCount": 0,
- "themes": [
- {
- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
]
}
Create custom theme
Creates a custom theme.
Sample call:
curl 'https://api.maestro.io/themes/v1/custom' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>' \ -d '{"button":{},"colors":{},"name":"string","type":"custom","typography":{}'
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer key |
Request Body schema: application/json
Parameters to create custom theme
required | object |
required | object |
desktopBackground | string |
icon | string |
logo | string |
mobileBackground | string |
mode | string light | dark |
name required | string |
siteID | string |
type required | string admin | classic | advanced | custom |
required | object |
Responses
Request samples
- Payload
- javascript
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Response samples
- 200
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Update custom theme
Updates a custom theme, given its ID in the path.
Sample call:
curl 'https://api.maestro.io/themes/v1/custom/<themeId>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>' \ -d '{"button":{},"colors":{},"name":"string","type":"custom","typography":{}'
path Parameters
themeId required | string Theme ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer key |
Request Body schema: application/json
Parameters to update custom theme
required | object |
required | object |
desktopBackground | string |
icon | string |
logo | string |
mobileBackground | string |
mode | string light | dark |
name required | string |
siteID | string |
type required | string admin | classic | advanced | custom |
required | object |
Responses
Request samples
- Payload
- javascript
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Response samples
- 200
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Get default themes
Gets default themes.
Sample call:
curl 'https://api.maestro.io/themes/v1/default?limit=string&offset=string' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \
query Parameters
limit | string Maximum to return |
offset | string Offset from beginning |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const querystring = require('querystring'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID', 'Authorization': 'Bearer <Your JWT token>' }; const params = querystring.stringify({ limit: string offset: string }); axios.get('https://api.maestro.io/themes/v1/default', params, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "totalCount": 0,
- "themes": [
- {
- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
]
}
Create default theme
Creates a default theme.
Sample call:
curl 'https://api.maestro.io/theme/v1/default' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d '{"button":{},"colors":{},"name":"string","type":"default","typography":{}'
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to create default theme
required | object |
required | object |
desktopBackground | string |
icon | string |
logo | string |
mobileBackground | string |
mode | string light | dark |
name required | string |
siteID | string |
type required | string admin | classic | advanced | custom |
required | object |
Responses
Request samples
- Payload
- javascript
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Response samples
- 200
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Update default theme
Updates a default theme, given its ID in the path.
Sample call:
curl 'https://api.maestro.io/themes/v1/default/<themeId>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>' \ -d '{"button":{},"colors":{},"name":"string","type":"default","typography":{}'
path Parameters
themeId required | string Theme ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: application/json
Parameters to update default theme
required | object |
required | object |
desktopBackground | string |
icon | string |
logo | string |
mobileBackground | string |
mode | string light | dark |
name required | string |
siteID | string |
type required | string admin | classic | advanced | custom |
required | object |
Responses
Request samples
- Payload
- javascript
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Response samples
- 200
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Get theme
Gets a theme, given its ID in the path.
Sample call:
curl 'https://api.maestro.io/themes/v1/<themeId>' \ -H 'x-maestro-client-id: <Your Client ID>'
path Parameters
themeId required | string Theme ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('https://api.maestro.io/themes/v1/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "button": {
- "borderRadius": "string",
- "textCapitalization": "string"
}, - "colors": {
- "accentPrimary": "string",
- "accentSecondary": "string",
- "accentTertiary": "string",
- "alertConfirmation": "string",
- "alertWarning": "string",
- "alertError": "string",
- "highlightPrimary": "string",
- "highlightSecondary": "string",
- "highlightTertiary": "string",
- "surface1": "string",
- "surface2": "string",
- "surface3": "string",
- "surface4": "string",
- "surface5": "string",
- "surface6": "string",
- "text100": "string",
- "text200": "string",
- "text300": "string",
- "text400": "string",
- "text500": "string"
}, - "desktopBackground": "string",
- "icon": "string",
- "logo": "string",
- "mobileBackground": "string",
- "mode": "string",
- "name": "string",
- "siteID": "string",
- "type": "string",
- "typography": {
- "body": "string",
- "headline": "string"
}
}
Delete theme
Deletes a theme, given its ID in the path.
Sample call:
curl 'https://api.maestro.io/themes/v1/<themeId>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your Maestro developer API key>' \ -H 'Authorization: Bearer <Your JWT token>'
path Parameters
themeId required | string Theme ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer key |
Authorization required | string Bearer <Your JWT token> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'YOUR_KEY', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID', 'Authorization': 'Bearer <Your JWT token>' }; axios.delete('https://api.maestro.io/themes/v1/507f191e810c19729de860ea', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "result": true,
- "pages": [ ]
}
Upsert third party calendar events based on thirdPartyEventId field
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your developer API key |
Request Body schema: application/json
Array of objects (CalendarEventCategory) | |
object (CalendarEventDate) | |
descriptionRaw | string |
object (CalendarEventImage) | |
titleRaw | string |
siteId | string |
thirdPartyEventId | string |
Responses
Request samples
- Payload
{- "categories": [
- {
- "id": "string",
- "label": {
- "color": "string",
- "id": "string",
- "title": "string"
}, - "title": "string"
}
], - "date": {
- "endTimestamp": 0,
- "startTimestamp": 0,
- "timeZone": "string",
- "useEndTime": true
}, - "descriptionRaw": "string",
- "image": {
- "show": true,
- "src": "string"
}, - "titleRaw": "string",
- "siteId": "string",
- "thirdPartyEventId": "string"
}
Response samples
- 200
- 201
{- "categories": [
- {
- "id": "string",
- "label": {
- "color": "string",
- "id": "string",
- "title": "string"
}, - "title": "string"
}
], - "date": {
- "endTimestamp": 0,
- "startTimestamp": 0,
- "timeZone": "string",
- "useEndTime": true
}, - "descriptionRaw": "string",
- "image": {
- "show": true,
- "src": "string"
}, - "titleRaw": "string",
- "siteId": "string",
- "thirdPartyEventId": "string"
}
User profiles are linked to accounts. In common, they have the sane name
field. You can use the Get accounts and user profiles API to get a site's accounts and user profiles.
Get caller's user profile
Gets caller's user profile
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro client ID (same as site ID) |
Authorization required | string Bearer <Your JWT> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your developer API key', ['x-maestro-client-id']: 'Your client ID' }; axios.get('https://api.maestro.io/userprofile/v1', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "_id": "string",
- "accountId": "string",
- "name": "string",
- "created": 0,
- "modified": 0
}
Get user profile
Gets a user profile given its ID in the path
Authorizations:
path Parameters
id required | string |
header Parameters
x-maestro-client-id required | string Your Maestro client ID (same as site ID) |
Authorization required | string Bearer <Your JWT> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your developer API key', ['x-maestro-client-id']: 'Your client ID' }; axios.get('https://api.maestro.io/userprofile/v1', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "_id": "string",
- "accountId": "string",
- "name": "string",
- "created": 0,
- "modified": 0
}
Get video
Gets a video given its ID in path.
Sample call:
curl 'https://api.maestro.io/video/v3/<video ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID>
Sample return:
{{"_id":"<video ID>","description":"Video Clip from Elvis Presley 1957 - Teddy Bear", \ "durationSeconds":127,"player":"youtube","siteId":"<site ID>","subscriptions":[], \ "thumbnail":"https://i.ytimg.com/vi/89MihWd6zKk/mqdefault.jpg", \ "title":"Elvis Presley - Teddy Bear - 1957","type":"vod", \ "url":"https://www.youtube.com/watch?v=89MihWd6zKk", \ "created":1622470182387,"modified":1622470182387}
Authorizations:
path Parameters
id required | string Video ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Response samples
- 200
{- "_id": "string",
- "description": "string",
- "durationSeconds": 0,
- "player": "youtube",
- "siteId": "string",
- "subscriptions": [
- {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
], - "thumbnail": "string",
- "title": "string",
- "type": "vod",
- "uploadStatus": "pending",
- "url": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Update video
Updates a video object given its ID in the path.
Sample call:
curl -X POST 'https://api.maestro.io/video/v3/<video ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID> \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"player": "youtube"}'
Authorizations:
path Parameters
id required | string Video ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Parameters to update a video
durationSeconds | string Video length in seconds |
player | string (PlayerTypes) Enum: "youtube" "dailymotion" "facebook" "facebook_live" "facemask" "file" "mixcloud" "mlg" "iframe" "maestro" "soundcloud" "twitch" "vimeo" |
title | string Video title |
description | string Video description |
thumbnail | string Video thumbnail URL |
type | string (VideoTypes) Enum: "vod" "livestream" |
url | string Video URL |
tags | Array of strings Metadata tags |
Responses
Request samples
- Payload
{- "durationSeconds": "string",
- "player": "youtube",
- "title": "string",
- "description": "string",
- "thumbnail": "string",
- "type": "vod",
- "url": "string",
- "tags": [
- "string"
]
}
Response samples
- 200
{- "_id": "string",
- "description": "string",
- "durationSeconds": 0,
- "player": "youtube",
- "siteId": "string",
- "subscriptions": [
- {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
], - "thumbnail": "string",
- "title": "string",
- "type": "vod",
- "uploadStatus": "pending",
- "url": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Delete video
Deletes a video given its ID in the path.
Sample call:
curl -X DELETE 'https://api.maestro.io/video/v3/<video ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID>
Authorizations:
path Parameters
id required | string Video ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Get site videos
Gets site videos with filter options. No filter options returns all.
Sample call (gets all):
curl 'https://api.maestro.io/video/v3/' \ -H 'x-maestro-client-id: <Your Client ID>' -H 'x-maestro-developer-key: <Your developer API key ID>
Authorizations:
query Parameters
search | string Title search |
offset | number Offset from beginning |
limit | number Max number to retrieve, default is 50 |
sortBy | string Sort by field |
sortDirection | number Sort ascending (1) or descending (-1) |
property | string Any video property, i.e., .../v3?player=youtube |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Response samples
- 200
{- "pagination": {
- "limit": 0,
- "offset": 0,
- "pageResults": 0,
- "search": "string",
- "searchFields": [
- "string"
], - "sortBy": "string",
- "sortDirection": "string",
- "totalCount": 0
}, - "results": [
- {
- "_id": "string",
- "description": "string",
- "durationSeconds": 0,
- "player": "youtube",
- "siteId": "string",
- "subscriptions": [
- {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
], - "thumbnail": "string",
- "title": "string",
- "type": "vod",
- "uploadStatus": "pending",
- "url": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
}
Add video
Adds a video to the site.
Sample call:
curl -X POST 'https://api.maestro.io/video/v3/' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID> \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"durationSeconds":127,"player":"youtube", \ "description":"Elvis is everything, Elvis is everywhere" "title":"Elvis Presley - Teddy Bear - 1957","type":"vod", \ "url":"https://www.youtube.com/watch?v=89MihWd6zKk"}'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Parameters to add a video
durationSeconds required | string Video length in seconds |
player required | string (PlayerTypes) Enum: "youtube" "dailymotion" "facebook" "facebook_live" "facemask" "file" "mixcloud" "mlg" "iframe" "maestro" "soundcloud" "twitch" "vimeo" |
title required | string Video title |
type required | string (VideoTypes) Enum: "vod" "livestream" |
url required | string Video URL |
thumbnail | string Thumbnail image URL |
description | string Video description |
tags | Array of strings Metadata tags |
Responses
Request samples
- Payload
{- "durationSeconds": "string",
- "player": "youtube",
- "title": "string",
- "type": "vod",
- "url": "string",
- "thumbnail": "string",
- "description": "string",
- "tags": [
- "string"
]
}
Response samples
- 200
{- "_id": "string",
- "description": "string",
- "durationSeconds": 0,
- "player": "youtube",
- "siteId": "string",
- "subscriptions": [
- {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
], - "thumbnail": "string",
- "title": "string",
- "type": "vod",
- "uploadStatus": "pending",
- "url": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Get video data
Gets video data given a video URL
Sample call:
curl 'https://api.maestro.io/video/v3/metadata?url=https://www.youtube.com/watch?v=89MihWd6zKk' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID>
Authorizations:
query Parameters
url required | string Video URL |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Response samples
- 200
{- "description": "string",
- "durationSeconds": 0,
- "player": "youtube",
- "thumbnail": "string",
- "title": "string",
- "type": "vod",
- "url": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Get livestream videos
Gets livestream videos with player filter option.
Sample call:
curl 'https://api.maestro.io/video/v3/livestreams' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'x-maestro-developer-key: <Your developer API key ID>
Authorizations:
query Parameters
player | string (PlayerTypes) Enum: "youtube" "dailymotion" "facebook" "facebook_live" "facemask" "file" "mixcloud" "mlg" "iframe" "maestro" "soundcloud" "twitch" "vimeo" Player type filter |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Response samples
- 200
{- "results": [
- {
- "_id": "string",
- "description": "string",
- "durationSeconds": 0,
- "player": "youtube",
- "siteId": "string",
- "subscriptions": [
- {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
], - "thumbnail": "string",
- "title": "string",
- "type": "vod",
- "uploadStatus": "pending",
- "url": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
]
}
Create VOD
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID |
x-maestro-developer-key required | string Your Maestro developer API key |
Request Body schema: application/json
Parameters to create a VOD
durationSeconds required | string Video length in seconds |
streamId required | string Your stream ID |
url required | string Your URL |
Responses
Request samples
- Payload
- javascript
{- "durationSeconds": "string",
- "streamId": "string",
- "url": "string"
}
Response samples
- 200
{- "_id": "string",
- "description": "string",
- "durationSeconds": 0,
- "player": "youtube",
- "siteId": "string",
- "subscriptions": [
- {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
], - "thumbnail": "string",
- "title": "string",
- "type": "vod",
- "uploadStatus": "pending",
- "url": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Add to the video assets
Authorizations:
path Parameters
liveBroadcastId required | string |
header Parameters
x-maestro-client-id required | string Your maestro id |
Request Body schema: application/json
Request body to add assets to videos
title | string Video title |
thumbnail | string Video thumbnail |
Responses
Request samples
- Payload
- javascript
{- "title": "string",
- "thumbnail": "string"
}
Response samples
- 200
{- "_id": "string",
- "description": "string",
- "durationSeconds": 0,
- "player": "youtube",
- "siteId": "string",
- "subscriptions": [
- {
- "_id": "string",
- "name": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "recurrence": "once",
- "siteId": "string",
- "sku": "string",
- "subscriptionProvider": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
], - "thumbnail": "string",
- "title": "string",
- "type": "vod",
- "uploadStatus": "pending",
- "url": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
Get total views for a video
Get total views for a vod (not including livestreams) given its ID in path.
Sample call:
curl 'https://api.maestro.io/video/v3/stats/total-views/<video ID>' \ -H 'x-maestro-client-id: <Your Client ID>'
Sample return:
100
Authorizations:
path Parameters
id required | string Video ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Responses
Response samples
- 200
0
Get total views for a list of videos
Get total views for a list of VODs (including livestreams) given its IDs in path (comma separated).
Sample call (1 video):
curl 'https://api.maestro.io/video/v3/stats/total-views-batch/<video ID>' \ -H 'x-maestro-client-id: <Your Client ID>'
Sample return:
[{ id: '632866517b1c0600308f3d6f' views: 100}]
Sample call (2 videos):
curl 'https://api.maestro.io/video/v3/stats/total-views-batch/<video ID>,<video ID>' \ -H 'x-maestro-client-id: <Your Client ID>'
Sample return:
[ { id: '632866517b1c0600308f3d6f' views: 100}, { id: '61ae6eceb70e95741f90ec2d' views: 200} ]
Authorizations:
path Parameters
ids required | string Video IDs |
header Parameters
x-maestro-client-id required | string Your Maestro ID |
Responses
Response samples
- 200
[- {
- "_id": "string",
- "views": 0
}
]
Besides the fields included in all webhooks by default, the eventData
object will look like
the following for video related webhooks:
{ event<string>: 'admin.vodReady' | 'admin.vodDeleted' channelId<string>: the maestro channel's ID liveBroadcastId<string>: the ID for the live stream recording thumbnail<string>: URL for the VOD thumbnail title<string>: VOD title url<string>: HLS playback URL siteId<string>: the maestro site ID streamId<string>: the source stream ID videoId<string>: the maestro VOD ID }
A wallet is created for a user when they first purchase an entitlement. Payment operations are done through Stripe.
Get wallet
Get wallet from caller account.
Sample call:
curl 'https://api.maestro.io/wallet/v1' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT>'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Authorization required | string Bearer <Your JWT> |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { authorization: 'YOUR_JWT_TOKEN', ['x-maestro-client-id']: 'YOUR_MAESTRO_ID' }; axios.get('/wallet/v1/recurring/{walletId}/{subscriptionId}', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
- 400
{- "wallet": {
- "_id": "string",
- "balance": 0,
- "ownerId": "string",
- "ownerType": "account",
- "siteId": "string",
- "stripeCustomerId": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
}
Insert wallet
Insert wallet for account.
Sample call:
curl 'https://api.maestro.io/wallet/v1' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT>'
Authorizations:
header Parameters
super-api-key required | string Your Super API Key; |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { 'super-api-key': `SUPER_API_KEY`', }; axios.post('/wallet/v1/', wallet, { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
- 400
{- "wallet": {
- "_id": "string",
- "balance": 0,
- "ownerId": "string",
- "ownerType": "account",
- "siteId": "string",
- "stripeCustomerId": "string",
- "created": 0,
- "modified": 0,
- "tags": [
- "string"
]
}
}
Get recurring wallet subscription
Get a wallet's recurring subscription.
Sample call:
curl 'https://api.maestro.io/wallet/v1/recurring/<wallet ID>/<subscription ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT token>'
Authorizations:
path Parameters
walletId required | string Wallet ID |
subscriptionId required | string Subscription ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { authorization: 'Your JWT', ['x-maestro-client-id']: 'Your client ID' }; axios.get('/wallet/v1/recurring/{walletId}/{subscriptionId}', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
- 400
{- "frequency": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "purchaseDate": 0,
- "status": "string",
- "stripeSubscriptionId": "string"
}
Cancel recurring subscription
Cancel a wallet's recurring subscription.
Authorizations:
path Parameters
walletId required | string Wallet ID |
subscriptionId required | string Subscription ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Request Body schema: application/json
Parameters to cancel subscription
refund required | boolean Initiate a refund to the buyer |
scheduled required | string (Scheduled) Enum: "immediate" "endOfBilling" Scheduled type |
Responses
Request samples
- Payload
- javascript
{- "refund": true,
- "scheduled": "immediate"
}
Response samples
- 200
- 400
{- "success": true
}
Get wallet recurring subscriptions
Get wallet's recurring subscriptions given its ID in the path.
Sample call:
curl 'https://api.maestro.io/wallet/v1/recurring/<wallet ID>' \ -H 'x-maestro-client-id: <Your Client ID>' \ -H 'Authorization: Bearer <Your JWT>'
Authorizations:
path Parameters
walletId required | string Wallet ID |
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Authorization required | string Bearer |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { authorization: 'Your JWT', ['x-maestro-client-id']: 'Your client ID' }; axios.get('/wallet/v1/recurring/{walletId}', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
- 400
[- {
- "frequency": "string",
- "prices": [
- {
- "currency": "string",
- "default": true,
- "stripePriceId": "string",
- "value": 0
}
], - "purchaseDate": 0,
- "status": "string",
- "stripeSubscriptionId": "string"
}
]
A webhook - a user-defined HTTP callback - lets your application know when things happen within Maestro. Currently, you can enable it for events in the following areas:
- Access codes
- Accounts
- Authorization
- Billing
- Channels
- Shopify
- Streaming
- Video
You can set this up with our APIs or in your site UI (go to Site Settings > Developer and scroll down). If you don't have an API Key yet, you'll need to generate one first to be able to enable webhooks.
Maestro calls your webhook URL with the following data:
{ account: { Maestro account object } | null; eventData: { [key]: any } | null; method: string; originPath: string; service: string; signature: string; webhookUrl: string; }
eventData
- For most services, this will include the body of the HTTP request issued by the user, other metadata ornull
.Channels
,Streaming
andVideo
messages look different. See Channels, Streaming and Video.account
- The user's Maestro account object.originPath
- Path to the Maestro channel originating the call.method
- Request type being made. GET || POST || PUT || DELETEservice
- Service triggering the event notification. For exampleaccount v3
,shopify v1
, etc.signature
- Your Maestro developer API key.webhookUrl
- Your registered POST event notification webhook URL.
Get site webhook
Get site webhook object.
Sample call:
curl 'https://api.maestro.io/webhooks/v1/' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'x-maestro-developer-key: <Your developer API key>'
Sample return:
{"enabled":true,"webhookSubscriptions":["accesscode-service-v1", "account-service-v3", "auth-service-v2","billing-service-v1","shopify-service-v1"], "webhookUrl":"http://www.somesite.com/webhook"}
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
x-maestro-developer-key required | string Your Maestro developer API key |
Responses
Request samples
- javascript
const axios = require('axios'); const headers = { "x-maestro-developer-key": 'Your client ID', ['x-maestro-client-id']: 'Your developer API key' }; axios.get('https://api.maestro.io/webhooks/v1/', { headers }) .then((response) => { console.log(response); }) .catch((err) => { console.error(err); });
Response samples
- 200
{- "enabled": true,
- "webhookUrl": "string",
- "webhookSubscriptions": [
- "string"
]
}
Create webhook
Create site webhook object.
Sample call:
curl -X POST 'https://api.maestro.io/webhooks/v1/' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'Authorization: Bearer <Your JWT>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"webhooks":{"enabled": true, "webhookSubscriptions":["accesscode-service-v1", "account-service-v3", "auth-service-v2", "billing-service-v1","shopify-service-v1"], "webhookUrl": "http://www.somewebsite.com/webhook"}}'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site IT) |
Authorization required | string Bearer |
Request Body schema: text/plain
Parameters to update webhook object
object | |||||||
|
Responses
Request samples
- javascript
var axios = require('axios'); var data = '{"webhooks":{"enabled": true, "webhookSubscriptions":["accesscode-service-v1", "account-service-v3", "auth-service-v2", "billing-service-v1","shopify-service-v1"], "webhookUrl": "http://www.somewebsite.com/webhook"}}'; var config = { method: 'put', url: 'https://api.maestro.io/webhooks/v1/', headers: { 'x-maestro-client-id': 'Your client ID', 'content-type': 'application/json;charset=UTF-8', 'Authorization': 'Bearer <Your JWT>' }, data : data }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
{- "enabled": true,
- "webhookUrl": "string",
- "webhookSubscriptions": [
- "string"
]
}
Update webhook
Update site webhook object.
Sample call:
curl -X PUT 'https://api.maestro.io/webhooks/v1/' \ -H 'x-maestro-client-id: <Your Maestro ID>' \ -H 'Authorization: Bearer <Your JWT>' \ -H 'content-type: application/json;charset=UTF-8' \ -d '{"webhooks":{"enabled": true, "webhookSubscriptions":["accesscode-service-v1", "account-service-v3", "auth-service-v2", "billing-service-v1","shopify-service-v1"], "webhookUrl": "http://www.somewebsite.com/webhook"}}'
Authorizations:
header Parameters
x-maestro-client-id required | string Your Maestro ID (same as site ID) |
Authorization required | string Bearer <Your JWT token> |
Request Body schema: text/plain
Parameters to update webhook object
object | |||||||
|
Responses
Request samples
- javascript
var axios = require('axios'); var data = '{"webhooks":{"enabled": true, "webhookSubscriptions":["accesscode-service-v1", "account-service-v3", "auth-service-v2", "billing-service-v1","shopify-service-v1"], "webhookUrl": "http://www.somewebsite.com/webhook"}}'; var config = { method: 'put', url: 'https://api.maestro.io/webhooks/v1/', headers: { 'x-maestro-client-id': 'Your client ID', 'content-type': 'application/json;charset=UTF-8', 'Authorization': 'Bearer <Your JWT>' }, data : data }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });
Response samples
- 200
{- "enabled": true,
- "webhookUrl": "string",
- "webhookSubscriptions": [
- "string"
]
}