curl --request POST \
--url 'https://api.flashcat.cloud/safari/a2a-agent/create?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"agent_name": "deploy-bot",
"instructions": "Inspect deployment pipelines and propose rollbacks when a canary fails health checks.",
"card_url": "https://agents.example.com/deploy-bot/card",
"auth_type": "bearer",
"streaming": true,
"team_id": 0,
"environments": [
"env_8s7Hn2kLpQ3xYbVc4Wd2m"
]
}
'import requests
url = "https://api.flashcat.cloud/safari/a2a-agent/create?app_key="
payload = {
"agent_name": "deploy-bot",
"instructions": "Inspect deployment pipelines and propose rollbacks when a canary fails health checks.",
"card_url": "https://agents.example.com/deploy-bot/card",
"auth_type": "bearer",
"streaming": True,
"team_id": 0,
"environments": ["env_8s7Hn2kLpQ3xYbVc4Wd2m"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
agent_name: 'deploy-bot',
instructions: 'Inspect deployment pipelines and propose rollbacks when a canary fails health checks.',
card_url: 'https://agents.example.com/deploy-bot/card',
auth_type: 'bearer',
streaming: true,
team_id: 0,
environments: ['env_8s7Hn2kLpQ3xYbVc4Wd2m']
})
};
fetch('https://api.flashcat.cloud/safari/a2a-agent/create?app_key=', 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.flashcat.cloud/safari/a2a-agent/create?app_key=",
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([
'agent_name' => 'deploy-bot',
'instructions' => 'Inspect deployment pipelines and propose rollbacks when a canary fails health checks.',
'card_url' => 'https://agents.example.com/deploy-bot/card',
'auth_type' => 'bearer',
'streaming' => true,
'team_id' => 0,
'environments' => [
'env_8s7Hn2kLpQ3xYbVc4Wd2m'
]
]),
CURLOPT_HTTPHEADER => [
"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.flashcat.cloud/safari/a2a-agent/create?app_key="
payload := strings.NewReader("{\n \"agent_name\": \"deploy-bot\",\n \"instructions\": \"Inspect deployment pipelines and propose rollbacks when a canary fails health checks.\",\n \"card_url\": \"https://agents.example.com/deploy-bot/card\",\n \"auth_type\": \"bearer\",\n \"streaming\": true,\n \"team_id\": 0,\n \"environments\": [\n \"env_8s7Hn2kLpQ3xYbVc4Wd2m\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.flashcat.cloud/safari/a2a-agent/create?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"agent_name\": \"deploy-bot\",\n \"instructions\": \"Inspect deployment pipelines and propose rollbacks when a canary fails health checks.\",\n \"card_url\": \"https://agents.example.com/deploy-bot/card\",\n \"auth_type\": \"bearer\",\n \"streaming\": true,\n \"team_id\": 0,\n \"environments\": [\n \"env_8s7Hn2kLpQ3xYbVc4Wd2m\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/safari/a2a-agent/create?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"agent_name\": \"deploy-bot\",\n \"instructions\": \"Inspect deployment pipelines and propose rollbacks when a canary fails health checks.\",\n \"card_url\": \"https://agents.example.com/deploy-bot/card\",\n \"auth_type\": \"bearer\",\n \"streaming\": true,\n \"team_id\": 0,\n \"environments\": [\n \"env_8s7Hn2kLpQ3xYbVc4Wd2m\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"agent_id": "a2a_6mWqZ2pK9nLcR3tY8uVb4D"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter skill_id is not valid."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "AccessDenied",
"message": "Access Denied."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "RequestTooFrequently",
"message": "Request too frequently."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InternalError",
"message": "We encountered an internal error, and it has been reported. Please try again later."
}
}Create A2A agent
Register a new A2A remote agent from its agent-card URL.
curl --request POST \
--url 'https://api.flashcat.cloud/safari/a2a-agent/create?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"agent_name": "deploy-bot",
"instructions": "Inspect deployment pipelines and propose rollbacks when a canary fails health checks.",
"card_url": "https://agents.example.com/deploy-bot/card",
"auth_type": "bearer",
"streaming": true,
"team_id": 0,
"environments": [
"env_8s7Hn2kLpQ3xYbVc4Wd2m"
]
}
'import requests
url = "https://api.flashcat.cloud/safari/a2a-agent/create?app_key="
payload = {
"agent_name": "deploy-bot",
"instructions": "Inspect deployment pipelines and propose rollbacks when a canary fails health checks.",
"card_url": "https://agents.example.com/deploy-bot/card",
"auth_type": "bearer",
"streaming": True,
"team_id": 0,
"environments": ["env_8s7Hn2kLpQ3xYbVc4Wd2m"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
agent_name: 'deploy-bot',
instructions: 'Inspect deployment pipelines and propose rollbacks when a canary fails health checks.',
card_url: 'https://agents.example.com/deploy-bot/card',
auth_type: 'bearer',
streaming: true,
team_id: 0,
environments: ['env_8s7Hn2kLpQ3xYbVc4Wd2m']
})
};
fetch('https://api.flashcat.cloud/safari/a2a-agent/create?app_key=', 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.flashcat.cloud/safari/a2a-agent/create?app_key=",
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([
'agent_name' => 'deploy-bot',
'instructions' => 'Inspect deployment pipelines and propose rollbacks when a canary fails health checks.',
'card_url' => 'https://agents.example.com/deploy-bot/card',
'auth_type' => 'bearer',
'streaming' => true,
'team_id' => 0,
'environments' => [
'env_8s7Hn2kLpQ3xYbVc4Wd2m'
]
]),
CURLOPT_HTTPHEADER => [
"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.flashcat.cloud/safari/a2a-agent/create?app_key="
payload := strings.NewReader("{\n \"agent_name\": \"deploy-bot\",\n \"instructions\": \"Inspect deployment pipelines and propose rollbacks when a canary fails health checks.\",\n \"card_url\": \"https://agents.example.com/deploy-bot/card\",\n \"auth_type\": \"bearer\",\n \"streaming\": true,\n \"team_id\": 0,\n \"environments\": [\n \"env_8s7Hn2kLpQ3xYbVc4Wd2m\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.flashcat.cloud/safari/a2a-agent/create?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"agent_name\": \"deploy-bot\",\n \"instructions\": \"Inspect deployment pipelines and propose rollbacks when a canary fails health checks.\",\n \"card_url\": \"https://agents.example.com/deploy-bot/card\",\n \"auth_type\": \"bearer\",\n \"streaming\": true,\n \"team_id\": 0,\n \"environments\": [\n \"env_8s7Hn2kLpQ3xYbVc4Wd2m\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/safari/a2a-agent/create?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"agent_name\": \"deploy-bot\",\n \"instructions\": \"Inspect deployment pipelines and propose rollbacks when a canary fails health checks.\",\n \"card_url\": \"https://agents.example.com/deploy-bot/card\",\n \"auth_type\": \"bearer\",\n \"streaming\": true,\n \"team_id\": 0,\n \"environments\": [\n \"env_8s7Hn2kLpQ3xYbVc4Wd2m\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"agent_id": "a2a_6mWqZ2pK9nLcR3tY8uVb4D"
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter skill_id is not valid."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "AccessDenied",
"message": "Access Denied."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "RequestTooFrequently",
"message": "Request too frequently."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InternalError",
"message": "We encountered an internal error, and it has been reported. Please try again later."
}
}Restrictions
| Aspect | Value |
|---|---|
| Rate limits | 300 requests/minute; 20 requests/second per account |
| Permissions | Agent Manage (ai-sre) |
Usage
instructionsis required; a deprecateddescriptionfield is still accepted for legacy clients and, if both are sent, must exactly matchinstructions.card_urlmust be an absolutehttp/httpsURL with a non-empty host (reachability is enforced by the execution environment, not here);auth_typeaccepts onlynone,api_key, orbearer.environmentsrestricts where the agent can run: a list ofcloudand/or BYOC runner environment IDs; omitted or empty means all environments, and each runner must be visible to the caller.- Creating into a team (
team_id > 0) requires the caller to actually belong to that team; only the account owner/admin may create at account scope (team_id=0). - Every call is recorded in the account audit log.
Authorizations
App key issued from the Flashduty console. Required on every public API call. Keep it secret — it grants the same access as the owning account.
Body
Registration parameters for a new A2A agent.
Agent display name.
128Natural-language instructions for the remote agent: a Markdown document with optional summary frontmatter and a non-empty body, at most 50 KiB (51200 bytes). Required — a deprecated description field is still accepted for legacy clients and, if both are sent, must exactly match instructions.
51200URL of the remote agent card. Must be an absolute http or https URL with a non-empty host; reachability is enforced by the execution environment, not at creation time.
Authentication type for reaching the remote agent: none (default when omitted), api_key, or bearer.
none, api_key, bearer Authentication config key-values, e.g. the API key or bearer token. Values under credential-looking keys (name containing KEY, SECRET, TOKEN, PASSWORD, etc.) are masked back in responses.
Show child attributes
Show child attributes
Whether the remote agent supports streaming.
Team scope: 0 = account-wide; >0 = team. Creating at account scope requires the owner/admin role; creating into a team requires actual membership in that team.
Execution environments this agent is callable from: cloud and/or BYOC runner environment IDs. Omitted or empty means all environments.
Authentication mode: shared (default) shares one credential across all users; per_user_secret requires secret_schema.header_name; per_user_oauth runs per-user OAuth.
JSON-encoded secret schema, e.g. {"header_name":"X-Api-Key"}; required when auth_mode=per_user_secret.
JSON-encoded OAuth metadata; populated by the OAuth discovery flow for per_user_oauth mode.
Allow non-loopback HTTP OAuth discovery/metadata endpoints for this agent instead of requiring HTTPS. Defaults to false.
Skip TLS certificate verification when connecting to this agent's endpoint (self-signed/private certs). Defaults to false.
Response
Success
Standard response envelope used by every Flashduty public API. On success data contains the endpoint-specific payload and error is absent. On failure error is present and data is absent. request_id is always present and is also mirrored in the Flashcat-Request-Id response header.
Unique ID for this request. Mirrored in the Flashcat-Request-Id header. Include it when reporting issues.
"01HK8XQE3Z7JM2NTFQ5YJ8P9R4"
Error payload inside the response envelope. Present only on non-2xx responses.
Show child attributes
Show child attributes
Result of registering an A2A agent.
Show child attributes
Show child attributes
Was this page helpful?