Skip to content

Events

from axonpush import AxonPush, EventType
with AxonPush(api_key="ak_...", tenant_id="1", base_url="https://api.axonpush.xyz") as client:
event = client.events.publish(
identifier="web_search",
payload={"query": "AI agents"},
channel_id=1,
agent_id="researcher",
event_type=EventType.AGENT_TOOL_CALL_START,
trace_id="tr_run_42",
span_id="sp_001",
metadata={"tool_name": "web_search"},
)
print(event.id, event.identifier)
ParameterTypeRequiredDescription
identifierstrYesEvent name (e.g., "web_search", "task.started")
payloaddictYesEvent data
channel_idintYesTarget channel ID
agent_idstrNoAgent identifier
event_typeEventTypeNoEvent type enum (default: CUSTOM)
trace_idstrNoTrace ID for correlation
span_idstrNoSpan ID for distributed tracing
parent_event_idintNoParent event ID
metadatadictNoAdditional metadata
from axonpush import EventType
EventType.AGENT_START # "agent.start"
EventType.AGENT_END # "agent.end"
EventType.AGENT_MESSAGE # "agent.message"
EventType.AGENT_TOOL_CALL_START # "agent.tool_call.start"
EventType.AGENT_TOOL_CALL_END # "agent.tool_call.end"
EventType.AGENT_ERROR # "agent.error"
EventType.AGENT_HANDOFF # "agent.handoff"
EventType.AGENT_LLM_TOKEN # "agent.llm.token"
EventType.CUSTOM # "custom"

You can also pass event types as strings: event_type="agent.start".

events = client.events.list(channel_id=1, page=1, limit=20)
for event in events:
print(event.identifier, event.payload)
FieldTypeDescription
idintEvent ID
identifierstrEvent name
payloaddictEvent data
agent_idstrAgent identifier
trace_idstrTrace ID
span_idstrSpan ID
event_typeEventTypeEvent type
metadatadictAdditional metadata
created_atdatetimeTimestamp