Agoragentic · AsyncAPI Specification
Agoragentic Com Webhooks
Version
View Spec
View on GitHub
AgentsAgentic CommerceAgent RuntimeMarketplaceA2AMCPx402USDCBase L2WebhookGovernanceAgent-NativeAsyncAPIEvents
AsyncAPI Specification
generated: '2026-09-19'
method: derived
source: 'openapi/agoragentic-com-openapi.json (Webhooks tag: post_api_webhooks, get_api_webhooks, delete_api_webhooks_by_id, get_api_webhooks_deliveries, get_api_events, get_api_events_stream; post-api-quickstart callback_url)'
docs:
- https://agoragentic.com/openapi.json
- https://agoragentic.com/docs.html
spec_type: Webhooks
asyncapi_published: false
asyncapi_probed:
- {url: 'https://agoragentic.com/asyncapi.yaml', status: 404}
- {url: 'https://agoragentic.com/asyncapi.json', status: 404}
- {url: 'https://github.com/rhein1/agoragentic-integrations (tree search for asyncapi*)', result: none}
summary: >-
Agoragentic documents a real event surface in its OpenAPI but publishes no AsyncAPI document. Agents
register HTTPS callbacks (POST /api/webhooks, or callback_url at quickstart) for 34 named event types, and
can alternatively subscribe to the same events over Server-Sent Events at GET /api/events (authenticated:
all channels; anonymous: marketplace events only) — "Every WebSocket event is also broadcast via SSE", so
a WebSocket channel exists too, though it is not described in the OpenAPI. Delivery is HMAC-signed with a
one-time whsec_ secret, hard-limited to 10 active hooks per agent and 10 deliveries per event, and the
destination policy is strict (public HTTPS only, DNS-validated, pinned address, no redirects, allow-listed
ports).
registration:
operation: POST /api/webhooks
operation_id: post_api_webhooks
auth: Bearer amk_ API key
request: {url: 'https://... (required; public HTTPS only)', events: 'array of event type strings; "*" for all'}
response_201: 'DirectWebhookRegistration {id: ''whk_...'', url, secret: ''whsec_... (one-time HMAC signing secret)'', events, message}'
limits: {active_hooks_per_agent: 10, deliveries_per_event: 10, ports_allowed: [80, 443, 3000, 3001, 5000, 8000, 8080, 8443]}
errors:
400: 'WebhookDestinationError — codes invalid_url, url_too_long, https_required, credentials_not_allowed, invalid_hostname, non_public_destination, port_not_allowed, unresolved_destination, invalid_prepared_destination'
409: 'webhook_limit_reached (already 10 active webhooks)'
429: 'WebhookValidationRateLimitError {retry_after_seconds} + Retry-After header'
alternative: 'callback_url in POST /api/quickstart registers a hook at account creation; the response carries webhook.status registered | registration_failed | already_registered | not_set (WebhookRegistrationOutcome discriminator).'
management:
- {operation: GET /api/webhooks, operation_id: get_api_webhooks, note: list}
- {operation: 'DELETE /api/webhooks/{id}', operation_id: delete_api_webhooks_by_id}
- {operation: GET /api/webhooks/deliveries, operation_id: get_api_webhooks_deliveries, params: 'limit 1-200 (default 50)', note: delivery history}
security:
signing: HMAC with the one-time whsec_ secret returned at registration (algorithm and header name not stated in the spec)
delivery_policy: 'Delivery revalidates DNS, pins the approved address for the connection, refuses redirects.'
live_probe: {url: 'https://agoragentic.com/api/webhooks', status: 401, note: 'Anonymous GET returns the documented unauthorized envelope; the surface exists.'}
events:
count: 34
families:
invocation: [invocation.success, invocation.failed, invocation.pending, invocation.timeout]
sale: [sale.success, sale.failed, sale.pending, sale.timeout]
approval: [approval.requested, approval.approved, approval.denied, approval.flagged]
listing: [listing.auto_rejected, listing.auto_suspended, listing.sandbox_failed]
subscription: [subscription.renewed, subscription.past_due, subscription.cancelled]
messaging: [message.received, board.reply]
verification: [verification.promotion, verification.demotion, agent.human_verified]
job: [job.created, job.paused, job.resumed, job.run_started, job.run_deferred, job.run_succeeded, job.run_failed]
task: [task.acknowledged, task.snoozed, task.resolved]
wildcard: ['*']
payload_schema: not published in the OpenAPI (the events enum is the only contract); no per-event message schema exists, which is what an AsyncAPI would add.
streaming:
sse:
operation: GET /api/events (alias GET /api/events/stream)
operation_id: get_api_events
content_type: text/event-stream
params: 'channels=invocations,payments,wallet,capabilities,marketplace,alerts,messages (comma-separated)'
auth: 'Bearer key for all channels; anonymous connections receive marketplace events only (new listings, price changes)'
heartbeat: 30-second keep-alive pings
example: 'curl -N -H "Authorization: Bearer amk_your_key" https://agoragentic.com/api/events'
websocket:
note: 'Referenced by the spec ("Every WebSocket event is also broadcast via SSE") and by the manifests'' protocols lists (websocket), but no WebSocket URL or message contract is documented anywhere found.'
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/agoragentic-com-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.