The composition catalogue for a registry entry
const url = 'https://api.aerandil.com/v1/agent-authoring/pick-list/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.aerandil.com/v1/agent-authoring/pick-list/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>'What an author may actually build this agent out of: every object type, action, function and metric the entry is allowed to reach, intersected down twice — once against the entry’s own declared maxima (declared_action_scopes, declared_function_scopes, declared_data_classes) and once against the calling author’s clearances. A type the author cannot read is absent rather than listed-and-refused, so the pick-list never advertises a capability its holder would be denied at invocation. The entry itself is loaded under the caller’s authority, so a marking they cannot read is a 404 like any other redacted read.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The agent_registry_entry being authored against.
Responses
Section titled “Responses”The intersected catalogue.
object
object
object
object
object
object
object
object
Bound target object type for targeted actions. Untargeted actions (creates) leave it null.
object
Kind discriminator of the function’s declared return type (e.g. struct, money, int). The full typed schema lives in /v1/openapi.json at the per-function /invoke path.
Bound target object type for targeted functions. Unbound functions leave it null.
A canonical (highest-version) metric offered to the author, trimmed to what a builder needs to reference and label one.
object
The metric’s native temporal grain.
object
Row-level markings applied to every instance (e.g. pii, payment_data).
API name of the property that serves as the type’s primary key.
Levels of the tenancy hierarchy at which instances of this type are allowed to live.
Lifecycle state of the type definition.
API name of the property used for human-readable titles (e.g. an SDK’s .toString() equivalent).
Example
{ "action_types": [ { "effects": [ { "kind": "create" } ] } ], "metrics": [ { "grain": "day" } ], "object_types": [ { "scope_levels": [ "tenant" ], "status": "active" } ]}The bearer authenticated but does not hold the scope this operation requires.
Structured error wrapper. Every non-2xx response from any Aerandil endpoint serialises to this shape; the HTTP status carries the failure class (4xx/5xx), the body adds a stable code for programmatic dispatch plus a human-readable message.
object
object
Stable, programmatic error code (e.g. unauthorized, forbidden, not_found, invalid_body, invalid_url, precondition_failed, no_secondary_key). Clients dispatch on code, not on the message (which may be localised or contextualised in future versions).
Request-id correlation handle echoed on the request-id response header — support teams correlate without scraping logs.
Human-readable explanation of the failure.
Per-error structured detail. The shape varies by code (e.g. forbidden_action carries {"action": "..."}; precondition_failed carries {"current_version": N}).
Examplegenerated
{ "error": { "code": "example", "instance_id": "example", "message": "example", "parameters": "example" }}No such object in the caller’s tenant — which is also the answer when it exists in another tenant, by design.
Structured error wrapper. Every non-2xx response from any Aerandil endpoint serialises to this shape; the HTTP status carries the failure class (4xx/5xx), the body adds a stable code for programmatic dispatch plus a human-readable message.
object
object
Stable, programmatic error code (e.g. unauthorized, forbidden, not_found, invalid_body, invalid_url, precondition_failed, no_secondary_key). Clients dispatch on code, not on the message (which may be localised or contextualised in future versions).
Request-id correlation handle echoed on the request-id response header — support teams correlate without scraping logs.
Human-readable explanation of the failure.
Per-error structured detail. The shape varies by code (e.g. forbidden_action carries {"action": "..."}; precondition_failed carries {"current_version": N}).
Examplegenerated
{ "error": { "code": "example", "instance_id": "example", "message": "example", "parameters": "example" }}