curl "$ATAI_API_URL/agents/nodes/registry" \
-H "Authorization: Bearer $ATAI_API_KEY"
import os
import requests
base_url = os.environ["ATAI_API_URL"]
api_key = os.environ["ATAI_API_KEY"]
response = requests.get(
f"{base_url}/agents/nodes/registry",
headers={"Authorization": f"Bearer {api_key}"},
)
registry = response.json()
for section in ("connectors", "nodes"):
print(f"{section}:")
for node in registry[section]:
inputs = ", ".join(p["name"] for p in node["contract"]["inputs"]) or "-"
outputs = ", ".join(p["name"] for p in node["contract"]["outputs"]) or "-"
print(f" {node['key']}: in=[{inputs}] out=[{outputs}]")
const response = await fetch(`${process.env.ATAI_API_URL}/agents/nodes/registry`, {
headers: {
'Authorization': `Bearer ${process.env.ATAI_API_KEY}`
}
});
const registry = await response.json();
['connectors', 'nodes'].forEach(section => {
console.log(`${section}:`);
registry[section].forEach(node => {
const inputs = node.contract.inputs.map(p => p.name).join(', ') || '-';
const outputs = node.contract.outputs.map(p => p.name).join(', ') || '-';
console.log(` ${node.key}: in=[${inputs}] out=[${outputs}]`);
});
});
{
"connectors": [
{
"key": "<connector_key>",
"description": "Reads records from an external data ref.",
"contract": {
"inputs": [],
"outputs": [
{"name": "out", "type": "Record"}
]
},
"config_schema": {},
"default_config": {}
}
],
"nodes": [
{
"key": "<node_key>",
"description": "Groups records into windows.",
"contract": {
"inputs": [
{"name": "in", "type": "Record"}
],
"outputs": [
{"name": "out", "type": "Window"}
]
},
"config_schema": {
"type": "object",
"properties": {}
},
"default_config": {}
}
]
}
Agents API
List Node Registry
List the nodes available for building blueprints
GET
/
agents
/
nodes
/
registry
curl "$ATAI_API_URL/agents/nodes/registry" \
-H "Authorization: Bearer $ATAI_API_KEY"
import os
import requests
base_url = os.environ["ATAI_API_URL"]
api_key = os.environ["ATAI_API_KEY"]
response = requests.get(
f"{base_url}/agents/nodes/registry",
headers={"Authorization": f"Bearer {api_key}"},
)
registry = response.json()
for section in ("connectors", "nodes"):
print(f"{section}:")
for node in registry[section]:
inputs = ", ".join(p["name"] for p in node["contract"]["inputs"]) or "-"
outputs = ", ".join(p["name"] for p in node["contract"]["outputs"]) or "-"
print(f" {node['key']}: in=[{inputs}] out=[{outputs}]")
const response = await fetch(`${process.env.ATAI_API_URL}/agents/nodes/registry`, {
headers: {
'Authorization': `Bearer ${process.env.ATAI_API_KEY}`
}
});
const registry = await response.json();
['connectors', 'nodes'].forEach(section => {
console.log(`${section}:`);
registry[section].forEach(node => {
const inputs = node.contract.inputs.map(p => p.name).join(', ') || '-';
const outputs = node.contract.outputs.map(p => p.name).join(', ') || '-';
console.log(` ${node.key}: in=[${inputs}] out=[${outputs}]`);
});
});
{
"connectors": [
{
"key": "<connector_key>",
"description": "Reads records from an external data ref.",
"contract": {
"inputs": [],
"outputs": [
{"name": "out", "type": "Record"}
]
},
"config_schema": {},
"default_config": {}
}
],
"nodes": [
{
"key": "<node_key>",
"description": "Groups records into windows.",
"contract": {
"inputs": [
{"name": "in", "type": "Record"}
],
"outputs": [
{"name": "out", "type": "Window"}
]
},
"config_schema": {
"type": "object",
"properties": {}
},
"default_config": {}
}
]
}
Requires version 1.1.9 or later of the Archetype platform.
Overview
This endpoint returns the nodes available in the configuredagent_core registry, split into connectors (sources and sinks) and nodes (everything else). Each list is sorted by node key.
Use it to discover the node key values a blueprint’s connectors/nodes maps can reference, along with each node’s port contract, config schema, and default config.
Request
This endpoint takes no parameters.Response
array
required
Registered source/sink nodes, sorted by node key.
array
required
Every other registered node, sorted by node key.
Node object
string
required
The node key referenced from a blueprint’s
connectors/nodes.string
required
Description of the node.
object
required
The node’s input and output ports (sorted by port name).
array
required
Input ports, each with a
name and a type.array
required
Output ports, each with a
name and a type.object
required
JSON Schema for the node’s config (
{} when the node takes no config).object
required
The node’s default config as a JSON object.
Port object
string
required
Name of the port.
string
required
The port’s data type, e.g.
Record or Window.curl "$ATAI_API_URL/agents/nodes/registry" \
-H "Authorization: Bearer $ATAI_API_KEY"
import os
import requests
base_url = os.environ["ATAI_API_URL"]
api_key = os.environ["ATAI_API_KEY"]
response = requests.get(
f"{base_url}/agents/nodes/registry",
headers={"Authorization": f"Bearer {api_key}"},
)
registry = response.json()
for section in ("connectors", "nodes"):
print(f"{section}:")
for node in registry[section]:
inputs = ", ".join(p["name"] for p in node["contract"]["inputs"]) or "-"
outputs = ", ".join(p["name"] for p in node["contract"]["outputs"]) or "-"
print(f" {node['key']}: in=[{inputs}] out=[{outputs}]")
const response = await fetch(`${process.env.ATAI_API_URL}/agents/nodes/registry`, {
headers: {
'Authorization': `Bearer ${process.env.ATAI_API_KEY}`
}
});
const registry = await response.json();
['connectors', 'nodes'].forEach(section => {
console.log(`${section}:`);
registry[section].forEach(node => {
const inputs = node.contract.inputs.map(p => p.name).join(', ') || '-';
const outputs = node.contract.outputs.map(p => p.name).join(', ') || '-';
console.log(` ${node.key}: in=[${inputs}] out=[${outputs}]`);
});
});
{
"connectors": [
{
"key": "<connector_key>",
"description": "Reads records from an external data ref.",
"contract": {
"inputs": [],
"outputs": [
{"name": "out", "type": "Record"}
]
},
"config_schema": {},
"default_config": {}
}
],
"nodes": [
{
"key": "<node_key>",
"description": "Groups records into windows.",
"contract": {
"inputs": [
{"name": "in", "type": "Record"}
],
"outputs": [
{"name": "out", "type": "Window"}
]
},
"config_schema": {
"type": "object",
"properties": {}
},
"default_config": {}
}
]
}
Important Notes
- A blueprint document must place each entry in the right section: connectors under
connectors, everything else undernodes. Registration validates this. config_schemais{}when a node takes no config.- Port
typevalues (e.g.Record,Window) determine which nodes can be wired together in a blueprint’sgraph.edges.
Was this page helpful?