curl --request PUT \
--url https://agenticadvertising.org/api/registry/mirrors/{platform} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"formats": [
{}
],
"catalog_etag": "<string>",
"properties": [
{}
],
"placements": [
{}
],
"placement_tags": {},
"collections": [
{}
],
"signals": [
{}
],
"signal_tags": {},
"contact": "<unknown>",
"superseded_by": "<string>"
}
'import requests
url = "https://agenticadvertising.org/api/registry/mirrors/{platform}"
payload = {
"formats": [{}],
"catalog_etag": "<string>",
"properties": [{}],
"placements": [{}],
"placement_tags": {},
"collections": [{}],
"signals": [{}],
"signal_tags": {},
"contact": "<unknown>",
"superseded_by": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
formats: [{}],
catalog_etag: '<string>',
properties: [{}],
placements: [{}],
placement_tags: {},
collections: [{}],
signals: [{}],
signal_tags: {},
contact: '<unknown>',
superseded_by: '<string>'
})
};
fetch('https://agenticadvertising.org/api/registry/mirrors/{platform}', 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://agenticadvertising.org/api/registry/mirrors/{platform}",
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([
'formats' => [
[
]
],
'catalog_etag' => '<string>',
'properties' => [
[
]
],
'placements' => [
[
]
],
'placement_tags' => [
],
'collections' => [
[
]
],
'signals' => [
[
]
],
'signal_tags' => [
],
'contact' => '<unknown>',
'superseded_by' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://agenticadvertising.org/api/registry/mirrors/{platform}"
payload := strings.NewReader("{\n \"formats\": [\n {}\n ],\n \"catalog_etag\": \"<string>\",\n \"properties\": [\n {}\n ],\n \"placements\": [\n {}\n ],\n \"placement_tags\": {},\n \"collections\": [\n {}\n ],\n \"signals\": [\n {}\n ],\n \"signal_tags\": {},\n \"contact\": \"<unknown>\",\n \"superseded_by\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.put("https://agenticadvertising.org/api/registry/mirrors/{platform}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"formats\": [\n {}\n ],\n \"catalog_etag\": \"<string>\",\n \"properties\": [\n {}\n ],\n \"placements\": [\n {}\n ],\n \"placement_tags\": {},\n \"collections\": [\n {}\n ],\n \"signals\": [\n {}\n ],\n \"signal_tags\": {},\n \"contact\": \"<unknown>\",\n \"superseded_by\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://agenticadvertising.org/api/registry/mirrors/{platform}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"formats\": [\n {}\n ],\n \"catalog_etag\": \"<string>\",\n \"properties\": [\n {}\n ],\n \"placements\": [\n {}\n ],\n \"placement_tags\": {},\n \"collections\": [\n {}\n ],\n \"signals\": [\n {}\n ],\n \"signal_tags\": {},\n \"contact\": \"<unknown>\",\n \"superseded_by\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"platform": "example_platform",
"catalog_etag": "<string>",
"superseded_by": "<string>",
"publisher_domains": [
"<string>"
],
"updated_at": "2023-11-07T05:31:56Z"
}{
"success": true,
"status": "pending",
"proposal_id": "4ec8bc86-6180-4d0e-aa72-9cbf402d3638",
"proposal_digest": "<string>",
"platform": "example_platform",
"status_url": "<string>",
"submitted_at": "2023-11-07T05:31:56Z"
}{
"error": "<string>",
"details": [
"<unknown>"
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"message": "<string>",
"retryAfter": 123
}{
"error": "<string>"
}Publish or propose community mirror
Submit a catalog-only adagents.json community mirror. Registry moderators and AgenticAdvertising.org administrators publish immediately; other authenticated organization callers create or refresh a pending proposal and receive HTTP 202. Contributor proposals are limited to 1 MiB and 2,000 catalog items. The service validates the assembled document against adagents.json, forces authorized_agents: [], and regenerates $schema and last_updated.
curl --request PUT \
--url https://agenticadvertising.org/api/registry/mirrors/{platform} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"formats": [
{}
],
"catalog_etag": "<string>",
"properties": [
{}
],
"placements": [
{}
],
"placement_tags": {},
"collections": [
{}
],
"signals": [
{}
],
"signal_tags": {},
"contact": "<unknown>",
"superseded_by": "<string>"
}
'import requests
url = "https://agenticadvertising.org/api/registry/mirrors/{platform}"
payload = {
"formats": [{}],
"catalog_etag": "<string>",
"properties": [{}],
"placements": [{}],
"placement_tags": {},
"collections": [{}],
"signals": [{}],
"signal_tags": {},
"contact": "<unknown>",
"superseded_by": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
formats: [{}],
catalog_etag: '<string>',
properties: [{}],
placements: [{}],
placement_tags: {},
collections: [{}],
signals: [{}],
signal_tags: {},
contact: '<unknown>',
superseded_by: '<string>'
})
};
fetch('https://agenticadvertising.org/api/registry/mirrors/{platform}', 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://agenticadvertising.org/api/registry/mirrors/{platform}",
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([
'formats' => [
[
]
],
'catalog_etag' => '<string>',
'properties' => [
[
]
],
'placements' => [
[
]
],
'placement_tags' => [
],
'collections' => [
[
]
],
'signals' => [
[
]
],
'signal_tags' => [
],
'contact' => '<unknown>',
'superseded_by' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://agenticadvertising.org/api/registry/mirrors/{platform}"
payload := strings.NewReader("{\n \"formats\": [\n {}\n ],\n \"catalog_etag\": \"<string>\",\n \"properties\": [\n {}\n ],\n \"placements\": [\n {}\n ],\n \"placement_tags\": {},\n \"collections\": [\n {}\n ],\n \"signals\": [\n {}\n ],\n \"signal_tags\": {},\n \"contact\": \"<unknown>\",\n \"superseded_by\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.put("https://agenticadvertising.org/api/registry/mirrors/{platform}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"formats\": [\n {}\n ],\n \"catalog_etag\": \"<string>\",\n \"properties\": [\n {}\n ],\n \"placements\": [\n {}\n ],\n \"placement_tags\": {},\n \"collections\": [\n {}\n ],\n \"signals\": [\n {}\n ],\n \"signal_tags\": {},\n \"contact\": \"<unknown>\",\n \"superseded_by\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://agenticadvertising.org/api/registry/mirrors/{platform}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"formats\": [\n {}\n ],\n \"catalog_etag\": \"<string>\",\n \"properties\": [\n {}\n ],\n \"placements\": [\n {}\n ],\n \"placement_tags\": {},\n \"collections\": [\n {}\n ],\n \"signals\": [\n {}\n ],\n \"signal_tags\": {},\n \"contact\": \"<unknown>\",\n \"superseded_by\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"platform": "example_platform",
"catalog_etag": "<string>",
"superseded_by": "<string>",
"publisher_domains": [
"<string>"
],
"updated_at": "2023-11-07T05:31:56Z"
}{
"success": true,
"status": "pending",
"proposal_id": "4ec8bc86-6180-4d0e-aa72-9cbf402d3638",
"proposal_digest": "<string>",
"platform": "example_platform",
"status_url": "<string>",
"submitted_at": "2023-11-07T05:31:56Z"
}{
"error": "<string>",
"details": [
"<unknown>"
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"message": "<string>",
"retryAfter": 123
}{
"error": "<string>"
}Authorizations
Bearer token in the Authorization header. Two token types are accepted:
- Organization API key (
sk_...) issued via the dashboard. Org-scoped, long-lived, for server-to-server use. - User JWT obtained via the OAuth 2.1 authorization code flow with PKCE. User-scoped, short-lived. Discover the authorization server at
/.well-known/oauth-authorization-serverand the protected-resource metadata at/.well-known/oauth-protected-resource/api.
Path Parameters
Lowercase platform identifier.
^[a-z0-9_-]{1,64}$"example_platform"
Body
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
Catalog-only adagents.json body for a community mirror. At least one of formats, properties, placements, collections, or signals must be present and non-empty. The service regenerates $schema and last_updated before persisting.
1Show child attributes
Show child attributes
1 - 255Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
HTTPS URL for the canonical successor adagents.json document. Set this before deleting a mirror so buyers can migrate cached references.
^https:\/\/Response
Community mirror published
true Lowercase platform identifier, normalized by the service.
^[a-z0-9_-]{1,64}$"example_platform"
HTTPS successor document URL, when this mirror has been superseded.
^https:\/\/Publisher domains updated from this community mirror catalog.
Was this page helpful?