Create Connection
curl --request POST \
--url https://api.agent-drop.com/v1/connections \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"message": "<string>"
}
'import requests
url = "https://api.agent-drop.com/v1/connections"
payload = {
"email": "<string>",
"message": "<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({email: '<string>', message: '<string>'})
};
fetch('https://api.agent-drop.com/v1/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.agent-drop.com/v1/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([
'email' => '<string>',
'message' => '<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/connections"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"message\": \"<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/connections")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"message\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agent-drop.com/v1/connections")
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 \"email\": \"<string>\",\n \"message\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"status": "<string>",
"invited_email": "<string>",
"message": {},
"created_at": "<string>"
}Connections
Create Connection: Send an Account Pairing Invite
Send an AgentDrop connection invite to another account by email. Once accepted, both accounts can propose agent pairings for encrypted cross-account transfer.
POST
/
v1
/
connections
Create Connection
curl --request POST \
--url https://api.agent-drop.com/v1/connections \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"message": "<string>"
}
'import requests
url = "https://api.agent-drop.com/v1/connections"
payload = {
"email": "<string>",
"message": "<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({email: '<string>', message: '<string>'})
};
fetch('https://api.agent-drop.com/v1/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.agent-drop.com/v1/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([
'email' => '<string>',
'message' => '<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/connections"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"message\": \"<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/connections")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"message\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agent-drop.com/v1/connections")
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 \"email\": \"<string>\",\n \"message\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"status": "<string>",
"invited_email": "<string>",
"message": {},
"created_at": "<string>"
}Send a connection invite to another AgentDrop account. If the recipient already has an account, they receive a pending invite they can accept or reject. If not, the invite waits for them to sign up.
Connections are account-level. Once two accounts are connected, their agents can be paired to exchange files. You can send a maximum of 10 invites per hour.
Request
Headers
string
required
Bearer token. Example:
Bearer agd_live_xxxxxxxxxxxxxxxxxxxxBody Parameters
string
required
Email address of the account you want to connect with. Maximum 256 characters.
string
Optional message to include with the invite. Maximum 500 characters.
Response
string
Unique connection ID (UUID).
string
Always
pending for a new invite.string
The email address the invite was sent to.
string|null
The message attached to the invite, or
null.string
ISO 8601 creation timestamp.
Examples
curl -X POST https://api.agent-drop.com/v1/connections \
-H "Authorization: Bearer agd_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"message": "Let'\''s connect our agents!"
}'
import requests
response = requests.post(
"https://api.agent-drop.com/v1/connections",
headers={"Authorization": "Bearer agd_live_xxxxxxxxxxxxxxxxxxxx"},
json={
"email": "[email protected]",
"message": "Account connection request for shared data pipelines.",
},
)
connection = response.json()
print(connection["id"]) # UUID
const response = await fetch(
"https://api.agent-drop.com/v1/connections",
{
method: "POST",
headers: {
Authorization: "Bearer agd_live_xxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
email: "[email protected]",
message: "Account connection request for shared data pipelines.",
}),
}
);
const connection = await response.json();
console.log(connection.id);
Response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending",
"invited_email": "[email protected]",
"message": "Account connection request for shared data pipelines.",
"created_at": "2026-03-28T12:00:00Z"
}
Errors
| Status | Code | Description |
|---|---|---|
400 | VALIDATION_ERROR | Invalid email or message too long |
400 | SELF_CONNECTION | You cannot connect with yourself |
401 | UNAUTHORIZED | Invalid or missing API key |
403 | BLOCKED | One side has blocked the other |
403 | PLAN_LIMIT_REACHED | Your plan’s connection limit has been reached. Upgrade to add more. |
409 | ALREADY_CONNECTED | An active connection already exists with this account |
409 | INVITE_PENDING | A pending invite already exists for this account or email |
429 | RATE_LIMITED | Max 10 connection invites per hour |
⌘I
