Update API Key
curl --request PUT \
--url https://api.buena.ai/api/v2/keys/{keyId} \
--header 'Content-Type: <content-type>' \
--header 'x-api-key: <api-key>' \
--data '
{
"description": "<string>",
"permissions": [
{
"keys:create": "<string>",
"keys:read": "<string>",
"keys:manage": "<string>",
"leads:read": "<string>",
"leads:write": "<string>",
"leads:enrich": "<string>",
"linkedin:schedule": "<string>",
"prospecting:search": "<string>",
"campaigns:manage": "<string>"
}
],
"expiresAt": "<string>"
}
'import requests
url = "https://api.buena.ai/api/v2/keys/{keyId}"
payload = {
"description": "<string>",
"permissions": [
{
"keys:create": "<string>",
"keys:read": "<string>",
"keys:manage": "<string>",
"leads:read": "<string>",
"leads:write": "<string>",
"leads:enrich": "<string>",
"linkedin:schedule": "<string>",
"prospecting:search": "<string>",
"campaigns:manage": "<string>"
}
],
"expiresAt": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "<content-type>"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': '<content-type>'},
body: JSON.stringify({
description: '<string>',
permissions: [
{
'keys:create': '<string>',
'keys:read': '<string>',
'keys:manage': '<string>',
'leads:read': '<string>',
'leads:write': '<string>',
'leads:enrich': '<string>',
'linkedin:schedule': '<string>',
'prospecting:search': '<string>',
'campaigns:manage': '<string>'
}
],
expiresAt: '<string>'
})
};
fetch('https://api.buena.ai/api/v2/keys/{keyId}', 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.buena.ai/api/v2/keys/{keyId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'description' => '<string>',
'permissions' => [
[
'keys:create' => '<string>',
'keys:read' => '<string>',
'keys:manage' => '<string>',
'leads:read' => '<string>',
'leads:write' => '<string>',
'leads:enrich' => '<string>',
'linkedin:schedule' => '<string>',
'prospecting:search' => '<string>',
'campaigns:manage' => '<string>'
]
],
'expiresAt' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"x-api-key: <api-key>"
],
]);
$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.buena.ai/api/v2/keys/{keyId}"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"permissions\": [\n {\n \"keys:create\": \"<string>\",\n \"keys:read\": \"<string>\",\n \"keys:manage\": \"<string>\",\n \"leads:read\": \"<string>\",\n \"leads:write\": \"<string>\",\n \"leads:enrich\": \"<string>\",\n \"linkedin:schedule\": \"<string>\",\n \"prospecting:search\": \"<string>\",\n \"campaigns:manage\": \"<string>\"\n }\n ],\n \"expiresAt\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.buena.ai/api/v2/keys/{keyId}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "<content-type>")
.body("{\n \"description\": \"<string>\",\n \"permissions\": [\n {\n \"keys:create\": \"<string>\",\n \"keys:read\": \"<string>\",\n \"keys:manage\": \"<string>\",\n \"leads:read\": \"<string>\",\n \"leads:write\": \"<string>\",\n \"leads:enrich\": \"<string>\",\n \"linkedin:schedule\": \"<string>\",\n \"prospecting:search\": \"<string>\",\n \"campaigns:manage\": \"<string>\"\n }\n ],\n \"expiresAt\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.buena.ai/api/v2/keys/{keyId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = '<content-type>'
request.body = "{\n \"description\": \"<string>\",\n \"permissions\": [\n {\n \"keys:create\": \"<string>\",\n \"keys:read\": \"<string>\",\n \"keys:manage\": \"<string>\",\n \"leads:read\": \"<string>\",\n \"leads:write\": \"<string>\",\n \"leads:enrich\": \"<string>\",\n \"linkedin:schedule\": \"<string>\",\n \"prospecting:search\": \"<string>\",\n \"campaigns:manage\": \"<string>\"\n }\n ],\n \"expiresAt\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "key_123abc",
"description": "Updated marketing automation key",
"permissions": [
"leads:read",
"leads:write",
"leads:enrich",
"linkedin:schedule"
],
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-20T15:30:00Z",
"lastUsed": "2024-01-20T14:25:00Z",
"expiresAt": null
}
}
Authentication
Update API Key
Update API key permissions and metadata
PUT
/
api
/
v2
/
keys
/
{keyId}
Update API Key
curl --request PUT \
--url https://api.buena.ai/api/v2/keys/{keyId} \
--header 'Content-Type: <content-type>' \
--header 'x-api-key: <api-key>' \
--data '
{
"description": "<string>",
"permissions": [
{
"keys:create": "<string>",
"keys:read": "<string>",
"keys:manage": "<string>",
"leads:read": "<string>",
"leads:write": "<string>",
"leads:enrich": "<string>",
"linkedin:schedule": "<string>",
"prospecting:search": "<string>",
"campaigns:manage": "<string>"
}
],
"expiresAt": "<string>"
}
'import requests
url = "https://api.buena.ai/api/v2/keys/{keyId}"
payload = {
"description": "<string>",
"permissions": [
{
"keys:create": "<string>",
"keys:read": "<string>",
"keys:manage": "<string>",
"leads:read": "<string>",
"leads:write": "<string>",
"leads:enrich": "<string>",
"linkedin:schedule": "<string>",
"prospecting:search": "<string>",
"campaigns:manage": "<string>"
}
],
"expiresAt": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "<content-type>"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': '<content-type>'},
body: JSON.stringify({
description: '<string>',
permissions: [
{
'keys:create': '<string>',
'keys:read': '<string>',
'keys:manage': '<string>',
'leads:read': '<string>',
'leads:write': '<string>',
'leads:enrich': '<string>',
'linkedin:schedule': '<string>',
'prospecting:search': '<string>',
'campaigns:manage': '<string>'
}
],
expiresAt: '<string>'
})
};
fetch('https://api.buena.ai/api/v2/keys/{keyId}', 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.buena.ai/api/v2/keys/{keyId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'description' => '<string>',
'permissions' => [
[
'keys:create' => '<string>',
'keys:read' => '<string>',
'keys:manage' => '<string>',
'leads:read' => '<string>',
'leads:write' => '<string>',
'leads:enrich' => '<string>',
'linkedin:schedule' => '<string>',
'prospecting:search' => '<string>',
'campaigns:manage' => '<string>'
]
],
'expiresAt' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"x-api-key: <api-key>"
],
]);
$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.buena.ai/api/v2/keys/{keyId}"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"permissions\": [\n {\n \"keys:create\": \"<string>\",\n \"keys:read\": \"<string>\",\n \"keys:manage\": \"<string>\",\n \"leads:read\": \"<string>\",\n \"leads:write\": \"<string>\",\n \"leads:enrich\": \"<string>\",\n \"linkedin:schedule\": \"<string>\",\n \"prospecting:search\": \"<string>\",\n \"campaigns:manage\": \"<string>\"\n }\n ],\n \"expiresAt\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.buena.ai/api/v2/keys/{keyId}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "<content-type>")
.body("{\n \"description\": \"<string>\",\n \"permissions\": [\n {\n \"keys:create\": \"<string>\",\n \"keys:read\": \"<string>\",\n \"keys:manage\": \"<string>\",\n \"leads:read\": \"<string>\",\n \"leads:write\": \"<string>\",\n \"leads:enrich\": \"<string>\",\n \"linkedin:schedule\": \"<string>\",\n \"prospecting:search\": \"<string>\",\n \"campaigns:manage\": \"<string>\"\n }\n ],\n \"expiresAt\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.buena.ai/api/v2/keys/{keyId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = '<content-type>'
request.body = "{\n \"description\": \"<string>\",\n \"permissions\": [\n {\n \"keys:create\": \"<string>\",\n \"keys:read\": \"<string>\",\n \"keys:manage\": \"<string>\",\n \"leads:read\": \"<string>\",\n \"leads:write\": \"<string>\",\n \"leads:enrich\": \"<string>\",\n \"linkedin:schedule\": \"<string>\",\n \"prospecting:search\": \"<string>\",\n \"campaigns:manage\": \"<string>\"\n }\n ],\n \"expiresAt\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "key_123abc",
"description": "Updated marketing automation key",
"permissions": [
"leads:read",
"leads:write",
"leads:enrich",
"linkedin:schedule"
],
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-20T15:30:00Z",
"lastUsed": "2024-01-20T14:25:00Z",
"expiresAt": null
}
}
Modify an existing API key’s permissions, description, or other metadata. You can change permissions, update descriptions, and modify expiration dates.
Requires the
keys:manage permission. You can only update keys that you have
created or have been granted access to.Request
The unique identifier of the API key to update
Your API key with
keys:manage permissionMust be
application/jsonBody Parameters
Updated description for the API key
Array of permission strings to grant to this key
Show Available Permissions
Show Available Permissions
Create new API keys
Read API key information
Update and delete API keys
Read lead data
Create and update leads
Enrich lead data
Schedule LinkedIn actions
Search for prospects
Manage campaigns
ISO 8601 timestamp when the key should expire (optional)
Examples
Update Key Permissions
curl -X PUT "https://api.buena.ai/api/v2/keys/key_123abc" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"description": "Updated marketing automation key",
"permissions": [
"leads:read",
"leads:write",
"leads:enrich",
"linkedin:schedule"
]
}'
const response = await fetch("https://api.buena.ai/api/v2/keys/key_123abc", {
method: "PUT",
headers: {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
description: "Updated marketing automation key",
permissions: [
"leads:read",
"leads:write",
"leads:enrich",
"linkedin:schedule",
],
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.put(
'https://api.buena.ai/api/v2/keys/key_123abc',
headers={
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'description': 'Updated marketing automation key',
'permissions': [
'leads:read',
'leads:write',
'leads:enrich',
'linkedin:schedule'
]
}
)
print(response.json())
Response
Always
true for successful requestsUpdated API key information
Show API Key Object
Show API Key Object
Unique identifier for the API key
Description of the API key
Array of permissions granted to this key
ISO 8601 timestamp when the key was created
ISO 8601 timestamp when the key was last updated
ISO 8601 timestamp when the key was last used
ISO 8601 timestamp when the key expires (null if never expires)
{
"success": true,
"data": {
"id": "key_123abc",
"description": "Updated marketing automation key",
"permissions": [
"leads:read",
"leads:write",
"leads:enrich",
"linkedin:schedule"
],
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-20T15:30:00Z",
"lastUsed": "2024-01-20T14:25:00Z",
"expiresAt": null
}
}
Next Steps
List Keys
View all your API keys
Delete Key
Remove an API key
Key Stats
View usage statistics
Authentication Guide
Learn about API security
⌘I

