Create a comment-to-DM automation
curl --request POST \
--url https://api.example.com/v1/comment-automations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"accountId": "<string>",
"name": "Guide lead magnet",
"dmText": "<string>",
"mediaIds": [
"<string>"
],
"keywords": [
"guide",
"link"
],
"matchType": "contains",
"dmButtonLabel": "<string>",
"dmButtonUrl": "<string>",
"publicReplyText": "<string>",
"oncePerUser": true
}
'import requests
url = "https://api.example.com/v1/comment-automations"
payload = {
"accountId": "<string>",
"name": "Guide lead magnet",
"dmText": "<string>",
"mediaIds": ["<string>"],
"keywords": ["guide", "link"],
"matchType": "contains",
"dmButtonLabel": "<string>",
"dmButtonUrl": "<string>",
"publicReplyText": "<string>",
"oncePerUser": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
accountId: '<string>',
name: 'Guide lead magnet',
dmText: '<string>',
mediaIds: ['<string>'],
keywords: ['guide', 'link'],
matchType: 'contains',
dmButtonLabel: '<string>',
dmButtonUrl: '<string>',
publicReplyText: '<string>',
oncePerUser: true
})
};
fetch('https://api.example.com/v1/comment-automations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/comment-automations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accountId' => '<string>',
'name' => 'Guide lead magnet',
'dmText' => '<string>',
'mediaIds' => [
'<string>'
],
'keywords' => [
'guide',
'link'
],
'matchType' => 'contains',
'dmButtonLabel' => '<string>',
'dmButtonUrl' => '<string>',
'publicReplyText' => '<string>',
'oncePerUser' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/comment-automations"
payload := strings.NewReader("{\n \"accountId\": \"<string>\",\n \"name\": \"Guide lead magnet\",\n \"dmText\": \"<string>\",\n \"mediaIds\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"guide\",\n \"link\"\n ],\n \"matchType\": \"contains\",\n \"dmButtonLabel\": \"<string>\",\n \"dmButtonUrl\": \"<string>\",\n \"publicReplyText\": \"<string>\",\n \"oncePerUser\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/comment-automations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"accountId\": \"<string>\",\n \"name\": \"Guide lead magnet\",\n \"dmText\": \"<string>\",\n \"mediaIds\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"guide\",\n \"link\"\n ],\n \"matchType\": \"contains\",\n \"dmButtonLabel\": \"<string>\",\n \"dmButtonUrl\": \"<string>\",\n \"publicReplyText\": \"<string>\",\n \"oncePerUser\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/comment-automations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountId\": \"<string>\",\n \"name\": \"Guide lead magnet\",\n \"dmText\": \"<string>\",\n \"mediaIds\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"guide\",\n \"link\"\n ],\n \"matchType\": \"contains\",\n \"dmButtonLabel\": \"<string>\",\n \"dmButtonUrl\": \"<string>\",\n \"publicReplyText\": \"<string>\",\n \"oncePerUser\": true\n}"
response = http.request(request)
puts response.read_bodyautomations
Create a comment-to-DM automation
POST
/
v1
/
comment-automations
Create a comment-to-DM automation
curl --request POST \
--url https://api.example.com/v1/comment-automations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"accountId": "<string>",
"name": "Guide lead magnet",
"dmText": "<string>",
"mediaIds": [
"<string>"
],
"keywords": [
"guide",
"link"
],
"matchType": "contains",
"dmButtonLabel": "<string>",
"dmButtonUrl": "<string>",
"publicReplyText": "<string>",
"oncePerUser": true
}
'import requests
url = "https://api.example.com/v1/comment-automations"
payload = {
"accountId": "<string>",
"name": "Guide lead magnet",
"dmText": "<string>",
"mediaIds": ["<string>"],
"keywords": ["guide", "link"],
"matchType": "contains",
"dmButtonLabel": "<string>",
"dmButtonUrl": "<string>",
"publicReplyText": "<string>",
"oncePerUser": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
accountId: '<string>',
name: 'Guide lead magnet',
dmText: '<string>',
mediaIds: ['<string>'],
keywords: ['guide', 'link'],
matchType: 'contains',
dmButtonLabel: '<string>',
dmButtonUrl: '<string>',
publicReplyText: '<string>',
oncePerUser: true
})
};
fetch('https://api.example.com/v1/comment-automations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/comment-automations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accountId' => '<string>',
'name' => 'Guide lead magnet',
'dmText' => '<string>',
'mediaIds' => [
'<string>'
],
'keywords' => [
'guide',
'link'
],
'matchType' => 'contains',
'dmButtonLabel' => '<string>',
'dmButtonUrl' => '<string>',
'publicReplyText' => '<string>',
'oncePerUser' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/comment-automations"
payload := strings.NewReader("{\n \"accountId\": \"<string>\",\n \"name\": \"Guide lead magnet\",\n \"dmText\": \"<string>\",\n \"mediaIds\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"guide\",\n \"link\"\n ],\n \"matchType\": \"contains\",\n \"dmButtonLabel\": \"<string>\",\n \"dmButtonUrl\": \"<string>\",\n \"publicReplyText\": \"<string>\",\n \"oncePerUser\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/comment-automations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"accountId\": \"<string>\",\n \"name\": \"Guide lead magnet\",\n \"dmText\": \"<string>\",\n \"mediaIds\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"guide\",\n \"link\"\n ],\n \"matchType\": \"contains\",\n \"dmButtonLabel\": \"<string>\",\n \"dmButtonUrl\": \"<string>\",\n \"publicReplyText\": \"<string>\",\n \"oncePerUser\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/comment-automations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountId\": \"<string>\",\n \"name\": \"Guide lead magnet\",\n \"dmText\": \"<string>\",\n \"mediaIds\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"guide\",\n \"link\"\n ],\n \"matchType\": \"contains\",\n \"dmButtonLabel\": \"<string>\",\n \"dmButtonUrl\": \"<string>\",\n \"publicReplyText\": \"<string>\",\n \"oncePerUser\": true\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Instagram or Facebook Page account to watch.
Example:
"Guide lead magnet"
The DM sent to the commenter.
Platform media ids to watch (mediaId from get_account_media). Empty = every post on the account, including future ones.
Trigger words. Matching is case- and accent-insensitive. Required unless matchType is any.
Example:
["guide", "link"]
Available options:
contains, exact, any Button label (20 chars max shown). Empty removes the button, along with dmButtonUrl.
Button destination (https URL). Empty removes the button, along with dmButtonLabel.
Optional public reply posted under the comment.
Send at most one DM per person for this automation.
Response
201 - undefined