curl --request GET \
--url https://agenticadvertising.org/api/registry/operatorimport requests
url = "https://agenticadvertising.org/api/registry/operator"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://agenticadvertising.org/api/registry/operator', 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/operator",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://agenticadvertising.org/api/registry/operator"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://agenticadvertising.org/api/registry/operator")
.asString();require 'uri'
require 'net/http'
url = URI("https://agenticadvertising.org/api/registry/operator")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"domain": "pubmatic.com",
"member": {
"slug": "<string>",
"display_name": "<string>",
"membership_tier": "<string>",
"membership_tier_label": "<string>",
"is_founding_member": true
},
"agent_visibility_summary": {
"public": 1,
"members_only": 1
},
"agents": [
{
"url": "<string>",
"name": "<string>",
"type": "brand",
"authorized_by": [
{
"publisher_domain": "<string>",
"source": "adagents_json",
"authorized_for": "<string>"
}
]
}
]
}{
"error": "<string>"
}Operator lookup
Given a domain, returns the agents this entity operates and which publishers trust them.
Response shape is auth-aware. Anonymous callers see only public agents. Authenticated callers on an AAO membership tier with API access also see members_only agents. Profile owners (callers whose org owns the queried domain) additionally see private agents. This is the primary mechanism by which AAO membership unlocks deeper registry visibility. agent_visibility_summary always reports public and members-only registration counts, independent of caller authorization and scope, so agents: [] is not ambiguous with no discoverable registrations. Private registrations are excluded so their existence remains visible only to the profile owner.
scope bucket filter. Callers can opt INTO a single visibility bucket (or the full union) regardless of what their auth would otherwise unlock — useful for picker UIs that want exactly one slice (e.g. anonymous-equivalent, members-only catalog, owner’s private drafts). scope only narrows; it never escalates (e.g. scope=member on an explorer or anonymous caller silently returns public only).
Member level visibility. When the profile owner has set their member card to public (is_public=true), the member object additionally carries is_founding_member (boolean) plus membership_tier (raw enum) and membership_tier_label (e.g. Professional, Partner, Leader) when the org has a resolvable tier. Founding Member is orthogonal to tier — founding orgs typically display both. For private profiles these fields are absent.
curl --request GET \
--url https://agenticadvertising.org/api/registry/operatorimport requests
url = "https://agenticadvertising.org/api/registry/operator"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://agenticadvertising.org/api/registry/operator', 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/operator",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://agenticadvertising.org/api/registry/operator"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://agenticadvertising.org/api/registry/operator")
.asString();require 'uri'
require 'net/http'
url = URI("https://agenticadvertising.org/api/registry/operator")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"domain": "pubmatic.com",
"member": {
"slug": "<string>",
"display_name": "<string>",
"membership_tier": "<string>",
"membership_tier_label": "<string>",
"is_founding_member": true
},
"agent_visibility_summary": {
"public": 1,
"members_only": 1
},
"agents": [
{
"url": "<string>",
"name": "<string>",
"type": "brand",
"authorized_by": [
{
"publisher_domain": "<string>",
"source": "adagents_json",
"authorized_for": "<string>"
}
]
}
]
}{
"error": "<string>"
}Query Parameters
"pubmatic.com"
Visibility bucket filter for returned agents. One value per agent-visibility enum value plus a catch-all. Each bucket is still gated by auth — scope can only narrow, never escalate.
public→ onlyvisibility=publicagents.member→ public + members_only (members_only is gated on caller's tier; anonymous or explorer-tier callers silently fall through to public-only rather than 403).private→ onlyvisibility=private. Private agents are visible only to the profile owner; non-owners get an empty list.- Omitted or
all→ tier-aware full unlock: public + members_only for API-tier members + private for the profile owner.
Unknown values return 400 — a silent coerce to all could leak data the caller explicitly tried to scope away from.
public, member, private, all "member"
Was this page helpful?