Workspaces
Share an existing credential with a workspace agent
Requires integrations:write. Creating credentials outside this dedicated mint stays human-only by design; the partner flow is admin-connects-once, key-attaches.
POST
/
workspace_agents
/
{workspace_agent_id}
/
credential-associations
Share an existing credential with a workspace agent
curl --request POST \
--url https://api.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"auth_config_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credentials_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations"
payload = {
"auth_config_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credentials_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
auth_config_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
credentials_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations', 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.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations",
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([
'auth_config_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'credentials_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations"
payload := strings.NewReader("{\n \"auth_config_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"credentials_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"auth_config_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"credentials_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"auth_config_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"credentials_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"auth_config_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_by_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"target_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "CONNECTED",
"credentials_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"integration": "<unknown>",
"member_owned": "<unknown>",
"owner": "<unknown>",
"workspace": "<unknown>",
"workspace_agent_id": "<unknown>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
Account API key: key id as the username, secret as the password.
Path Parameters
Response
Successful response
Integration auth config this row applies to
The user or API key that granted this credential to the agent.
Workspace agent install receiving the credential; the association is scoped to this install's workspace. Account-wide availability is plain credential ownership with no association row.
GRANTED = existing credential shared with the agent; CONNECTED = credential created for the agent (connect flow).
Available options:
CONNECTED, GRANTED Linked credential row; null while OAuth connect is pending.
⌘I
Share an existing credential with a workspace agent
curl --request POST \
--url https://api.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"auth_config_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credentials_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations"
payload = {
"auth_config_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credentials_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
auth_config_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
credentials_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations', 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.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations",
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([
'auth_config_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'credentials_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations"
payload := strings.NewReader("{\n \"auth_config_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"credentials_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"auth_config_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"credentials_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.guild.ai/v1/workspace_agents/{workspace_agent_id}/credential-associations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"auth_config_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"credentials_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"auth_config_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_by_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"target_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "CONNECTED",
"credentials_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"integration": "<unknown>",
"member_owned": "<unknown>",
"owner": "<unknown>",
"workspace": "<unknown>",
"workspace_agent_id": "<unknown>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}