curl --request PATCH \
--url https://api.atako.ai/integrations/connections/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"displayName": "<string>",
"secret": "<string>",
"config": {}
}
'import requests
url = "https://api.atako.ai/integrations/connections/{id}"
payload = {
"displayName": "<string>",
"secret": "<string>",
"config": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({displayName: '<string>', secret: '<string>', config: {}})
};
fetch('https://api.atako.ai/integrations/connections/{id}', 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/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'displayName' => '<string>',
'secret' => '<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/{id}"
payload := strings.NewReader("{\n \"displayName\": \"<string>\",\n \"secret\": \"<string>\",\n \"config\": {}\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.atako.ai/integrations/connections/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"displayName\": \"<string>\",\n \"secret\": \"<string>\",\n \"config\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/integrations/connections/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"displayName\": \"<string>\",\n \"secret\": \"<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>"
}Replace an integration connection's credential, or rename it, in place
Send {displayName} alone to rename (unique per provider within the visibility, else 409 name_taken). A company connection is managed by an admin, a personal one by its creator only (403 forbidden otherwise). The connection keeps its id, so every per-agent grant pointing at it survives — which is the point: DELETE destroys the connection and its secret, so disconnect/reconnect hands back a new id and strips every agent of its tools. config is re-validated against the connector’s anchored patterns; omit it to keep the stored one. The connection goes back to active. Never returns credential material.
curl --request PATCH \
--url https://api.atako.ai/integrations/connections/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"displayName": "<string>",
"secret": "<string>",
"config": {}
}
'import requests
url = "https://api.atako.ai/integrations/connections/{id}"
payload = {
"displayName": "<string>",
"secret": "<string>",
"config": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({displayName: '<string>', secret: '<string>', config: {}})
};
fetch('https://api.atako.ai/integrations/connections/{id}', 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/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'displayName' => '<string>',
'secret' => '<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/{id}"
payload := strings.NewReader("{\n \"displayName\": \"<string>\",\n \"secret\": \"<string>\",\n \"config\": {}\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.atako.ai/integrations/connections/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"displayName\": \"<string>\",\n \"secret\": \"<string>\",\n \"config\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/integrations/connections/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"displayName\": \"<string>\",\n \"secret\": \"<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.
Path Parameters
Connection id
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