curl --request POST \
--url https://api.select.dev/v2/destinations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"integration_id": "<string>",
"integration_type": "slack",
"channel": "<string>"
}
'import requests
url = "https://api.select.dev/v2/destinations"
payload = {
"integration_id": "<string>",
"integration_type": "slack",
"channel": "<string>"
}
headers = {
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({integration_id: '<string>', integration_type: 'slack', channel: '<string>'})
};
fetch('https://api.select.dev/v2/destinations', 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.select.dev/v2/destinations",
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([
'integration_id' => '<string>',
'integration_type' => 'slack',
'channel' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-tenant-id: <x-tenant-id>"
],
]);
$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.select.dev/v2/destinations"
payload := strings.NewReader("{\n \"integration_id\": \"<string>\",\n \"integration_type\": \"slack\",\n \"channel\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-tenant-id", "<x-tenant-id>")
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.select.dev/v2/destinations")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"integration_id\": \"<string>\",\n \"integration_type\": \"slack\",\n \"channel\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.select.dev/v2/destinations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"integration_id\": \"<string>\",\n \"integration_type\": \"slack\",\n \"channel\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"etag": "<string>",
"integration_id": "<string>",
"status": "unknown",
"create_time": "<string>",
"update_time": "<string>",
"integration_type": "slack",
"channel": "<string>",
"error_message": "<string>",
"last_used_time": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}Create a destination
Create a destination under one of your organization’s alert integrations.
Set integration_type to the kind of destination and integration_id to
an alert integration of the same type. A new destination has status
unknown until it first delivers an alert.
curl --request POST \
--url https://api.select.dev/v2/destinations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"integration_id": "<string>",
"integration_type": "slack",
"channel": "<string>"
}
'import requests
url = "https://api.select.dev/v2/destinations"
payload = {
"integration_id": "<string>",
"integration_type": "slack",
"channel": "<string>"
}
headers = {
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({integration_id: '<string>', integration_type: 'slack', channel: '<string>'})
};
fetch('https://api.select.dev/v2/destinations', 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.select.dev/v2/destinations",
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([
'integration_id' => '<string>',
'integration_type' => 'slack',
'channel' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-tenant-id: <x-tenant-id>"
],
]);
$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.select.dev/v2/destinations"
payload := strings.NewReader("{\n \"integration_id\": \"<string>\",\n \"integration_type\": \"slack\",\n \"channel\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-tenant-id", "<x-tenant-id>")
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.select.dev/v2/destinations")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"integration_id\": \"<string>\",\n \"integration_type\": \"slack\",\n \"channel\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.select.dev/v2/destinations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"integration_id\": \"<string>\",\n \"integration_type\": \"slack\",\n \"channel\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"etag": "<string>",
"integration_id": "<string>",
"status": "unknown",
"create_time": "<string>",
"update_time": "<string>",
"integration_type": "slack",
"channel": "<string>",
"error_message": "<string>",
"last_used_time": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}Authorizations
Organization API key (sl_…).
Headers
The organization ID the request is scoped to.
Body
- SlackAlertDestinationCreate
- EmailAlertDestinationCreate
- MsTeamsWebhookAlertDestinationCreate
Request body to create a Slack alert destination.
Opaque identifier of the alert integration this destination sends through. Its integration_type must match the destination's. Set when the destination is created and immutable afterward.
The kind of destination, matching the integration_type of its alert integration. Determines which settings the destination carries. Set when the destination is created and immutable afterward.
"slack"Name of the Slack channel alerts are posted to, without the leading #. The SELECT app must be added to a private channel before alerts can be delivered to it.
1Response
Successful Response
- SlackAlertDestination
- EmailAlertDestination
- MsTeamsWebhookAlertDestination
An alert destination that posts to a Slack channel.
Opaque identifier for this destination. Set when the destination is created and immutable afterward.
Opaque strong ETag for this destination's configuration. Matches the ETag response header, and is what If-Match requires on a write. It changes whenever a configurable field on the destination changes.
Opaque identifier of the alert integration this destination sends through. Its integration_type must match the destination's. Set when the destination is created and immutable afterward.
Current delivery status of this destination: connected after a successful delivery or test message, failing after a failed one, and unknown before either has happened.
unknown, pending, failing, connected When the destination was created, as an RFC 3339 UTC timestamp.
When the destination was last changed, as an RFC 3339 UTC timestamp.
The kind of destination, matching the integration_type of its alert integration. Determines which settings the destination carries. Set when the destination is created and immutable afterward.
"slack"Name of the Slack channel alerts are posted to, without the leading #. The SELECT app must be added to a private channel before alerts can be delivered to it.
Why the most recent delivery to this destination failed. Null unless status is failing.
When this destination last sent an alert, as an RFC 3339 UTC timestamp. Null if it has not sent one yet.

