curl --request POST \
--url https://api.atako.ai/integrations/connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"providerKey": "<string>",
"displayName": "<string>",
"secret": "<string>",
"externalLabel": "<string>",
"config": {}
}
'import requests
url = "https://api.atako.ai/integrations/connections"
payload = {
"providerKey": "<string>",
"displayName": "<string>",
"secret": "<string>",
"externalLabel": "<string>",
"config": {}
}
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({
providerKey: '<string>',
displayName: '<string>',
secret: '<string>',
externalLabel: '<string>',
config: {}
})
};
fetch('https://api.atako.ai/integrations/connections', 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.atako.ai/integrations/connections",
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([
'providerKey' => '<string>',
'displayName' => '<string>',
'secret' => '<string>',
'externalLabel' => '<string>',
'config' => [
]
]),
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.atako.ai/integrations/connections"
payload := strings.NewReader("{\n \"providerKey\": \"<string>\",\n \"displayName\": \"<string>\",\n \"secret\": \"<string>\",\n \"externalLabel\": \"<string>\",\n \"config\": {}\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.atako.ai/integrations/connections")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"providerKey\": \"<string>\",\n \"displayName\": \"<string>\",\n \"secret\": \"<string>\",\n \"externalLabel\": \"<string>\",\n \"config\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/integrations/connections")
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 \"providerKey\": \"<string>\",\n \"displayName\": \"<string>\",\n \"secret\": \"<string>\",\n \"externalLabel\": \"<string>\",\n \"config\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"providerKey": "<string>",
"displayName": "<string>",
"authType": "api_key",
"status": "active",
"createdAt": "2023-11-07T05:31:56Z",
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"visibility": "company",
"isMine": true,
"actions": [
{
"key": "<string>",
"scope": "read",
"description": "<string>"
}
],
"mcp": {
"host": "<string>",
"slug": "<string>",
"lastSyncedAt": "<string>",
"toolCount": 123,
"enabledCount": 123,
"pendingReview": 123
},
"externalLabel": "<string>",
"config": {},
"scopes": [
"<string>"
],
"lastUsedAt": "2023-11-07T05:31:56Z",
"createdBy": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Connect an integration via a pasted API key/secret
For OAuth2 connectors without apiKeyAlt, use POST /integrations/oauth//start instead. visibility: ‘company’ (admins only) or ‘personal’ (any member) — defaults to ‘company’ for an admin, ‘personal’ otherwise. Several connections of one provider are allowed; displayName must be unique per provider within its visibility (case-insensitive) — omitted, it defaults to the provider name, suffixed ” 2”, ” 3”… if taken.
curl --request POST \
--url https://api.atako.ai/integrations/connections \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"providerKey": "<string>",
"displayName": "<string>",
"secret": "<string>",
"externalLabel": "<string>",
"config": {}
}
'import requests
url = "https://api.atako.ai/integrations/connections"
payload = {
"providerKey": "<string>",
"displayName": "<string>",
"secret": "<string>",
"externalLabel": "<string>",
"config": {}
}
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({
providerKey: '<string>',
displayName: '<string>',
secret: '<string>',
externalLabel: '<string>',
config: {}
})
};
fetch('https://api.atako.ai/integrations/connections', 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.atako.ai/integrations/connections",
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([
'providerKey' => '<string>',
'displayName' => '<string>',
'secret' => '<string>',
'externalLabel' => '<string>',
'config' => [
]
]),
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.atako.ai/integrations/connections"
payload := strings.NewReader("{\n \"providerKey\": \"<string>\",\n \"displayName\": \"<string>\",\n \"secret\": \"<string>\",\n \"externalLabel\": \"<string>\",\n \"config\": {}\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.atako.ai/integrations/connections")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"providerKey\": \"<string>\",\n \"displayName\": \"<string>\",\n \"secret\": \"<string>\",\n \"externalLabel\": \"<string>\",\n \"config\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/integrations/connections")
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 \"providerKey\": \"<string>\",\n \"displayName\": \"<string>\",\n \"secret\": \"<string>\",\n \"externalLabel\": \"<string>\",\n \"config\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"providerKey": "<string>",
"displayName": "<string>",
"authType": "api_key",
"status": "active",
"createdAt": "2023-11-07T05:31:56Z",
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"visibility": "company",
"isMine": true,
"actions": [
{
"key": "<string>",
"scope": "read",
"description": "<string>"
}
],
"mcp": {
"host": "<string>",
"slug": "<string>",
"lastSyncedAt": "<string>",
"toolCount": 123,
"enabledCount": 123,
"pendingReview": 123
},
"externalLabel": "<string>",
"config": {},
"scopes": [
"<string>"
],
"lastUsedAt": "2023-11-07T05:31:56Z",
"createdBy": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Authorizations
An aik_… programmatic API key (app.atako.ai → Settings → API keys) or a Supabase session JWT.
Body
Response
Never includes credential material.
api_key, oauth2, mcp, internal active, error, revoked 'company' = shared with the whole company, managed by its admins; 'personal' = visible to, managed and grantable (to their own agents) by its creator only. Another member's personal connections are never returned.
company, personal Created by the caller.
List endpoint, custom MCP connections only (providerKey 'mcp', no catalog entry): the active tools, catalog-shaped.
Show child attributes
Show child attributes
List endpoint, custom MCP connections only.
Show child attributes
Show child attributes
Show child attributes
Show child attributes