Add a monitored Mothership channel
curl --request POST \
--url https://api.replicas.dev/v1/agent/mothership/monitor-channel \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"channel_id": "<string>",
"approval_channel_id": "<string>",
"approval_thread_ts": "<string>",
"approval_message_ts": "<string>",
"approval_user_id": "<string>",
"instructions": "<string>"
}
'import requests
url = "https://api.replicas.dev/v1/agent/mothership/monitor-channel"
payload = {
"channel_id": "<string>",
"approval_channel_id": "<string>",
"approval_thread_ts": "<string>",
"approval_message_ts": "<string>",
"approval_user_id": "<string>",
"instructions": "<string>"
}
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({
channel_id: '<string>',
approval_channel_id: '<string>',
approval_thread_ts: '<string>',
approval_message_ts: '<string>',
approval_user_id: '<string>',
instructions: '<string>'
})
};
fetch('https://api.replicas.dev/v1/agent/mothership/monitor-channel', 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.replicas.dev/v1/agent/mothership/monitor-channel",
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([
'channel_id' => '<string>',
'approval_channel_id' => '<string>',
'approval_thread_ts' => '<string>',
'approval_message_ts' => '<string>',
'approval_user_id' => '<string>',
'instructions' => '<string>'
]),
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.replicas.dev/v1/agent/mothership/monitor-channel"
payload := strings.NewReader("{\n \"channel_id\": \"<string>\",\n \"approval_channel_id\": \"<string>\",\n \"approval_thread_ts\": \"<string>\",\n \"approval_message_ts\": \"<string>\",\n \"approval_user_id\": \"<string>\",\n \"instructions\": \"<string>\"\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.replicas.dev/v1/agent/mothership/monitor-channel")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"channel_id\": \"<string>\",\n \"approval_channel_id\": \"<string>\",\n \"approval_thread_ts\": \"<string>\",\n \"approval_message_ts\": \"<string>\",\n \"approval_user_id\": \"<string>\",\n \"instructions\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.replicas.dev/v1/agent/mothership/monitor-channel")
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 \"channel_id\": \"<string>\",\n \"approval_channel_id\": \"<string>\",\n \"approval_thread_ts\": \"<string>\",\n \"approval_message_ts\": \"<string>\",\n \"approval_user_id\": \"<string>\",\n \"instructions\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"channel": {
"channel_id": "<string>",
"instructions": "<string>",
"preset_id": "<string>"
}
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}Slack
Add a monitored Mothership channel
Adds or updates one monitored Slack channel after verifying a single-use organization admin confirmation that exactly repeats the target channel and instructions. Available only to the organization’s Mothership agent.
POST
/
v1
/
agent
/
mothership
/
monitor-channel
Add a monitored Mothership channel
curl --request POST \
--url https://api.replicas.dev/v1/agent/mothership/monitor-channel \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"channel_id": "<string>",
"approval_channel_id": "<string>",
"approval_thread_ts": "<string>",
"approval_message_ts": "<string>",
"approval_user_id": "<string>",
"instructions": "<string>"
}
'import requests
url = "https://api.replicas.dev/v1/agent/mothership/monitor-channel"
payload = {
"channel_id": "<string>",
"approval_channel_id": "<string>",
"approval_thread_ts": "<string>",
"approval_message_ts": "<string>",
"approval_user_id": "<string>",
"instructions": "<string>"
}
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({
channel_id: '<string>',
approval_channel_id: '<string>',
approval_thread_ts: '<string>',
approval_message_ts: '<string>',
approval_user_id: '<string>',
instructions: '<string>'
})
};
fetch('https://api.replicas.dev/v1/agent/mothership/monitor-channel', 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.replicas.dev/v1/agent/mothership/monitor-channel",
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([
'channel_id' => '<string>',
'approval_channel_id' => '<string>',
'approval_thread_ts' => '<string>',
'approval_message_ts' => '<string>',
'approval_user_id' => '<string>',
'instructions' => '<string>'
]),
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.replicas.dev/v1/agent/mothership/monitor-channel"
payload := strings.NewReader("{\n \"channel_id\": \"<string>\",\n \"approval_channel_id\": \"<string>\",\n \"approval_thread_ts\": \"<string>\",\n \"approval_message_ts\": \"<string>\",\n \"approval_user_id\": \"<string>\",\n \"instructions\": \"<string>\"\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.replicas.dev/v1/agent/mothership/monitor-channel")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"channel_id\": \"<string>\",\n \"approval_channel_id\": \"<string>\",\n \"approval_thread_ts\": \"<string>\",\n \"approval_message_ts\": \"<string>\",\n \"approval_user_id\": \"<string>\",\n \"instructions\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.replicas.dev/v1/agent/mothership/monitor-channel")
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 \"channel_id\": \"<string>\",\n \"approval_channel_id\": \"<string>\",\n \"approval_thread_ts\": \"<string>\",\n \"approval_message_ts\": \"<string>\",\n \"approval_user_id\": \"<string>\",\n \"instructions\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"channel": {
"channel_id": "<string>",
"instructions": "<string>",
"preset_id": "<string>"
}
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}Authorizations
API key authentication. Obtain your API key from the Replicas dashboard under Organization → Settings → API Keys.
Body
application/json
Slack channel ID to monitor.
Slack channel containing the admin confirmation.
Root timestamp of the confirmation thread.
Timestamp of the admin confirmation message.
Slack user ID of the confirming organization admin.
Confirmed channel-specific triage instructions.
Maximum string length:
2000⌘I