Create API Key
curl --request POST \
--url https://api.agent-drop.com/v1/api-keys \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>"
}
'import requests
url = "https://api.agent-drop.com/v1/api-keys"
payload = { "name": "<string>" }
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>'})
};
fetch('https://api.agent-drop.com/v1/api-keys', 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.agent-drop.com/v1/api-keys",
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([
'name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"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.agent-drop.com/v1/api-keys"
payload := strings.NewReader("{\n \"name\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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.agent-drop.com/v1/api-keys")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agent-drop.com/v1/api-keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"api_key": "<string>",
"created_at": "<string>"
}API Keys
Create API Key: Generate a New Bearer Token
Generate a new AgentDrop API key (agd_ Bearer token) scoped to your account or to a specific agent. Returned once at creation; store it securely on receipt.
POST
/
v1
/
api-keys
Create API Key
curl --request POST \
--url https://api.agent-drop.com/v1/api-keys \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>"
}
'import requests
url = "https://api.agent-drop.com/v1/api-keys"
payload = { "name": "<string>" }
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>'})
};
fetch('https://api.agent-drop.com/v1/api-keys', 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.agent-drop.com/v1/api-keys",
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([
'name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"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.agent-drop.com/v1/api-keys"
payload := strings.NewReader("{\n \"name\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
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.agent-drop.com/v1/api-keys")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agent-drop.com/v1/api-keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"api_key": "<string>",
"created_at": "<string>"
}Generate a new API key for your account. Use separate keys for different agents, environments, or team members.
Creating a key beyond your plan’s limit returns
The API key value is returned once in this response. Store it immediately. You cannot retrieve it later.
Request
Headers
string
required
Bearer token. Example:
Bearer agd_live_xxxxxxxxxxxxxxxxxxxxBody
string
required
A descriptive name for this key. Examples:
production-agent, staging, crewai-pipeline.Response
string
The key ID, used for revocation.
string
The name you assigned to this key.
string
The full API key. Starts with
agd_. Can be revealed again later from the dashboard.string
ISO 8601 creation timestamp.
Examples
curl -X POST https://api.agent-drop.com/v1/api-keys \
-H "Authorization: Bearer agd_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"name": "production-agent"}'
response = requests.post(
"https://api.agent-drop.com/v1/api-keys",
headers={
"Authorization": "Bearer agd_live_xxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
json={"name": "production-agent"},
)
new_key = response.json()
print(new_key["api_key"]) # agd_live_zzzzzzzzzzzzzzzzzzzz - save this!
const response = await fetch(
"https://api.agent-drop.com/v1/api-keys",
{
method: "POST",
headers: {
Authorization: "Bearer agd_live_xxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ name: "production-agent" }),
}
);
const newKey = await response.json();
console.log(newKey.api_key); // Save this immediately
Response
{
"id": "key_xyz789",
"name": "production-agent",
"api_key": "agd_live_zzzzzzzzzzzzzzzzzzzz",
"created_at": "2026-03-22T12:00:00Z"
}
Key Limits by Plan
| Plan | Max API Keys |
|---|---|
| Free | 1 |
| Builder | 5 |
| Team | 15 |
| Scale | 50 |
| Enterprise | Custom |
403 Forbidden.
Errors
| Status | Code | Description |
|---|---|---|
401 | UNAUTHORIZED | Invalid or missing API key |
403 | KEY_LIMIT_REACHED | You’ve reached the API key limit for your plan |
⌘I
