Amperity · AsyncAPI Specification
Amperity Webhooks
Version
View Spec
View on GitHub
CompanyEnterpriseCustomer Data PlatformCDPIdentity ResolutionCustomer 360MarketingDataProfilesAnalyticsMCPAgentsRetailIdentityAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: https://docs.amperity.com/operator/destination_webhook.md
docs:
- https://docs.amperity.com/operator/destination_webhook.html
- https://github.com/amperity/amperity-lambda-runner
checked: '2026-08-13'
spec_type: null
spec_note: >-
Amperity publishes NO AsyncAPI document. Searched the docs site, the llms.txt index set, the
github.com/amperity organization and /asyncapi.yaml on every host - nothing. Recorded as absent, not
fabricated.
surface: webhook-destination
surface_note: >-
Amperity's event surface is outbound-only and destination-shaped. There is no subscribe-to-events
webhook catalog in the usual sense: an operator configures a WEBHOOK DESTINATION, and when a query's
results are published Amperity writes an NDJSON file to S3, mints a presigned download URL, and then
calls a customer-hosted AWS Lambda endpoint with a fixed JSON payload. The customer's function pulls
the data and reports back to a public Amperity endpoint so the run can be tracked. That is a real,
documented, contract-bearing callback - but it is one generic delivery event, not a catalog of typed
business events (no customer.created, no segment.updated, no workflow.completed).
inbound_events:
supported: false
note: >-
Inbound real-time ingestion is the Streaming API (POST JSON/XML up to 1 MB), which is a plain REST
ingest endpoint, not an event/pub-sub contract. See apis.yml -> Amperity Streaming API.
webhooks:
- name: webhook-destination-delivery
direction: outbound
trigger: >-
A campaign or query orchestration publishes results to a configured webhook destination.
transport: 'HTTPS request to a customer-owned AWS Lambda endpoint outside the Amperity VPC'
data_delivery: >-
Results are serialized to NDJSON, published to Amazon S3, and exposed through a presigned URL. The
payload carries the URL; it does not carry the rows.
payload_fields:
- {name: settings, description: 'Destination/data-template settings, as a JSON object'}
- {name: label_name, description: The label associated with the delivery}
- {name: access_token, description: Token used by the receiving function when calling back to Amperity}
- {name: webhook_id, description: Identifier of the configured webhook destination}
- {name: callback_url, description: Public Amperity endpoint the Lambda function reports progress and success to}
- {name: data_url, description: Presigned URL from which the NDJSON result file is downloaded}
payload_source: https://docs.amperity.com/operator/destination_webhook.html
callback:
required: true
note: >-
Amperity tracks the Lambda run and monitors it for success using the same tooling as its
first-party integrations, so the receiving function MUST post regular updates back to
callback_url. The webhook is a two-way handshake, not fire-and-forget.
toolkit:
name: amperity-lambda-runner
url: https://github.com/amperity/amperity-lambda-runner
language: python
note: >-
Amperity's open-source reference template, helper class and local-environment tooling for
building the receiving function. Last pushed 2023-09-08.
security_note: >-
No signature, HMAC or timestamp verification scheme is documented for the inbound request to the
customer's Lambda; the published contract is a bearer access_token inside the JSON body. Recorded
as documented, not endorsed.
gaps:
- 'No AsyncAPI document.'
- 'No typed event catalog - one generic delivery callback covers the whole surface.'
- 'No documented signing/verification scheme for the outbound request.'
- 'No event schemas or examples beyond the six-field payload above.'