Account activity events
The events that record what happens inside your ApiTraffic account, who did what and when, and how to read them from the app or the API.
Note: This page and the event reference are generated from
docs/events/account-activity.asyncapi.json, which is itself built from the API’s event registry. Spec version 1.0.0, 96 customer-visible events.
Events describing what happens inside an ApiTraffic account: who did what, and when.
These are account actions, not captured API traffic. Creating a bucket, inviting a teammate, revoking a token and changing a plan all appear here. The requests your services handle do not.
Delivery
Every event is written to a durable log before delivery is attempted, which is what makes
at-least-once delivery and replay possible. Expect redeliveries and deduplicate on id.
Ordering
Not guaranteed. Order events by occurredAt rather than by arrival.
Support sessions
When ApiTraffic support acts inside your account under a consent window you granted, the
event carries actor.type: staff and names them in actor.impersonatedBy. These are
delivered exactly like your own people’s actions, deliberately - access you cannot audit
is not access you agreed to.
Where to read these events
Every event below is recorded in your account history as it happens. You can read it in two places.
In the app
Open the account menu, choose Account, then the History tab. The Account history list shows each event with who did it and when, and lets you filter it. See Activity log.
Over the API
GET /v1/accounts/{accountSid}/activity returns the same events, newest first. Each record carries every envelope field, plus the IP address and user agent of the person who acted (withheld when ApiTraffic support acted).
curl -s "https://api.apitraffic.io/v1/accounts/${APITRAFFIC_ACCOUNT_SID}/activity?category=security&limit=100" \
-H "Authorization: Bearer ${APITRAFFIC_API_TOKEN}"
| Query parameter | Description |
|---|---|
category |
Only events in this category, such as security or billing. |
action |
Only this event type, such as security.api_token_created. |
severity |
info, notice or critical. |
actorUserSid |
Only events done by this person. |
targetSid |
Only events about this object. |
startTime, endTime |
ISO 8601 bounds on when the event occurred. |
limit |
1 to 200. Defaults to 50. |
offset |
Skip this many events, for paging. The response includes total. |
GET /v1/accounts/{accountSid}/activity/catalog lists the event types that can appear in your account.
Webhook delivery (coming soon)
Info: Delivery of these events to an endpoint you register is coming soon. Until it ships, there is no webhook setting in the app and nothing is sent. To act on account activity today, poll the activity API above: it returns the same event objects.
The channel and envelope below are the delivery format events will be sent in. Build your consumer against them now, reading from the API today and switching to delivery when it ships:
- Deduplicate on
id. The same event can arrive more than once. - Order by
occurredAt, not by the order you received events in. - Acknowledge quickly. For a delivery, return a 2xx before doing slow work; any other status, or a timeout, is retried with backoff.
- Read
actor.typeandsourcetogether to tell a person changing something from a scheduled job changing the same thing.
Channel
Delivery is coming soon. When it ships, each event is sent to your endpoint as follows.
POST /webhooks/activity
Events for one account, delivered to a URL you register.
Only customer-visible events appear here. ApiTraffic records additional internal events for its own operations; those are never delivered and are not documented.
Receive account activity
ApiTraffic sends these to your registered endpoint.
Respond 2xx to acknowledge. Any other status, or a timeout, is retried with backoff. Acknowledge before doing slow work - a handler that blocks will be retried while it runs.
Envelope
Every event carries the same envelope. The event-specific body is in data.
-
id (string, required): Unique id for this event. Stable across redeliveries, so it is what to deduplicate on. Example:
"act_3HrBcuMDtqwF8KlccVBKAzCpF7f". -
type (string, required): The event type. One of the values enumerated by the channel.
-
category (string, required): Broad grouping, for routing and filtering. One of
"account","alerting","billing","bucket","data","integration","security","support","team". -
severity (string, required): How much attention the event warrants.
criticalmarks things worth alerting a human about. One of"info","notice","critical". -
accountSid (string, required): The account the event belongs to. Example:
"acc_2Zx9KpQwErTyUiOpAsDfGhJkL". -
occurredAt (string, required): When the action happened. Not necessarily when it was delivered - a replayed or retried event keeps its original timestamp.
-
source (string | null): How the action reached us.
httpis a call to the API, usually somebody in the dashboard;jobis scheduled or batch work running on our side;webhookis an upstream provider telling us something;cliis a command-line tool. Read alongsideactor.type: together they distinguish a person making a change from a nightly job making the same one. One of"http","job","webhook","cli". -
actor (object, required): Who performed the action.
actor
-
type (string, required): Who acted.
useris one of your people.staffis ApiTraffic support, acting under a consent window you granted.api_tokenis one of your own machine credentials - the action came from your systems, not from a person at a screen.integrationis an upstream provider we act on behalf of, such as Stripe.systemmeans no one was involved at all: scheduled work, a batch run, or an automatic consequence of something else. When it issystem,actor.sidandactor.labelare null andsourcetells you what kind of automation it was. One of"user","staff","system","api_token","integration". -
sid (string | null): The acting user, when there is one.
-
label (string | null): How the actor was identified at the time, usually an email address. Captured when the event was recorded, so it survives the user later being deleted.
-
impersonatedBy (string | null): Set only when ApiTraffic support performed this inside a support session. Null on everything else.
-
target (object | null): What was acted upon. Null for events that are about the account as a whole.
target
-
type (string): The kind of object, e.g.
bucket. -
sid (string | null):
-
label (string | null): The object’s name as it was at the time. Deliberately not updated if the object is later renamed.
-
summary (string | null): A rendered one-line description, as it read when the event happened. Safe to display directly.
Event catalogue
96 events across 9 categories. Payload fields for each are in the event reference.
Account
| Event | Severity | Summary |
|---|---|---|
account.client_ip_mode_changed |
notice | An owner or admin changed how client IP addresses are kept on requests: in full, truncated to their network, or not at all. |
account.close_cancelled |
notice | A close scheduled for the end of the paid period was cancelled, and the subscription will renew. |
account.close_scheduled |
critical | The account will close, and its data be deleted, when the paid period ends. |
account.closed |
critical | The account was closed: access and capture stopped. Its captured data is deleted after the grace period (account.data_purge_completed). |
account.created |
notice | The account was created. |
account.data_purge_completed |
notice | A purge or close finished deleting the account’s data. |
account.data_purged |
critical | A purge of the account’s data was started: captured traffic, saved work, rules and settings, or automations, as chosen. account.data_purge_completed follows when it is done. Usage is not reduced. |
account.environment_created |
info | A new environment was added. |
account.environment_deleted |
notice | An environment was removed. |
account.environment_updated |
info | An environment was changed. |
account.name_changed |
info | The account name was changed. |
account.overage_toggled |
notice | The account owner turned “Allow overage” on or off. Off, new requests and other metered usage are not recorded past the plan’s allowance until the billing period resets, and no overage is billed. |
account.query_text_toggled |
notice | An owner or admin turned on or off storing the text of database queries (and where they were called from) in performance data. |
account.sample_data_toggled |
info | An owner or admin showed or hid the read-only sample bucket for the team. |
account.settings_updated |
info | A setting on the account was changed. |
Alerting
| Event | Severity | Summary |
|---|---|---|
alerting.channel_changed |
notice | A notification channel was renamed or its destination or settings changed. |
alerting.channel_created |
notice | A notification channel (Slack, webhook, email, …) was added. |
alerting.channel_deleted |
notice | A notification channel was removed. |
alerting.channel_secret_rotated |
notice | A channel secret was replaced; the previous one stays valid for 24 hours. |
alerting.delivery_log_viewed |
info | Someone opened the delivery attempts of a channel, which include response excerpts from the receiver. |
alerting.delivery_redelivered |
notice | A notification was sent again by hand from the delivery log. |
alerting.incident_acknowledged |
info | Someone acknowledged an incident; pending escalation steps are cancelled. |
alerting.incident_owner_changed |
info | An incident was assigned to someone else. |
alerting.incident_reopened |
info | An incident was reopened or returned to open by hand. |
alerting.incident_resolved |
info | An incident was resolved manually. |
alerting.route_changed |
notice | A routing policy was created, updated, reordered or removed. |
alerting.silence_created |
notice | A silence was created: matching alerts still fire but are not delivered. |
alerting.silence_expired |
info | A silence was expired before its end time. |
Billing
| Event | Severity | Summary |
|---|---|---|
billing.ingest_rate_limited |
notice | Records were not recorded this billing period because the account sent more than its plan’s records per second. Fires once per period. |
billing.overage_resumed |
notice | Every overage invoice is settled; overage is billed again as the account allows. |
billing.overage_suspended |
critical | Usage past an overage-billed allowance stops at the allowance until every overage invoice is paid. |
billing.payment_failed |
critical | A charge against the payment method failed. |
billing.payment_method_updated |
notice | The card or payment method on file was changed. |
billing.plan_changed |
notice | The subscription moved to a different plan. |
billing.plan_over_limit |
critical | A scheduled plan change took effect while the account held more of a resource than the new plan includes. Nothing was removed; new ones cannot be created until it is back within the limit. |
billing.promotion_reward_ended |
notice | A promotion reward expired or was withdrawn. |
billing.promotion_reward_granted |
notice | A referral or advocacy reward was applied to this account. |
billing.subscription_cancelled |
critical | The subscription was cancelled. |
billing.subscription_resumed |
notice | A cancellation was reversed. |
billing.trial_ended |
notice | A trial period ended. |
billing.trial_started |
info | A trial period began. |
billing.usage_limit_reached |
critical | Usage hit the plan allowance. |
Bucket
| Event | Severity | Summary |
|---|---|---|
bucket.created |
info | A new bucket was created. |
bucket.deleted |
critical | A bucket and its configuration were deleted. |
bucket.updated |
info | A bucket setting was changed. |
Data
| Event | Severity | Summary |
|---|---|---|
data.catalog_changed |
info | Customer catalogue entries (labels and attributes of tag values) were added, replaced or removed. |
data.dashboard_created |
info | A report dashboard was created. |
data.dashboard_deleted |
info | A report dashboard was deleted (its reports are kept). |
data.dashboard_updated |
info | A dashboard was renamed, rearranged, refiltered or shared differently. |
data.dimension_classified |
notice | A tag key’s classification changed (which decides masking and where its values may go), or it became or stopped being the customer key. |
data.dimension_demoted |
notice | A tag key is no longer aggregated; reports on it read raw rows. |
data.dimension_promoted |
notice | A tag key was promoted to fast, pre-aggregated reports. |
data.dimension_updated |
info | A tag key was renamed, described, hidden or shown again. |
data.embed_disabled |
notice | A report or dashboard stopped allowing embedding (turned off, or made private); its embeds stop showing it. |
data.embed_enabled |
critical | A report or dashboard can now be shown by embed tokens the account signs. |
data.exclusion_changed |
notice | A rule governing which traffic is captured was changed. |
data.redaction_changed |
critical | A rule governing what data is redacted before storage was changed. |
data.report_created |
info | A custom report was saved, from scratch or from a template. |
data.report_deleted |
info | A saved report was deleted, with its revisions; dashboard tiles showing it were removed. |
data.report_updated |
info | A saved report was renamed, redefined, redrawn, moved, pinned or shared differently. |
data.retention_changed |
notice | How long captured traffic is kept was changed. |
data.share_created |
critical | Data was made reachable through a share link. |
data.share_revoked |
notice | A share link was disabled. |
Integration
| Event | Severity | Summary |
|---|---|---|
integration.git_connected |
notice | A git provider was connected to the account. |
integration.git_disconnected |
notice | A git provider connection was removed. |
integration.webhook_changed |
notice | An outbound webhook was created, updated or removed. |
integration.workflow_changed |
info | A workflow was created, updated or removed. |
Security
| Event | Severity | Summary |
|---|---|---|
security.api_token_access_changed |
critical | An API token’s role or access scopes were changed. |
security.api_token_created |
critical | A new API token was minted. |
security.api_token_revoked |
notice | An API token was revoked. |
security.mcp_token_created |
critical | A new MCP token was minted. |
security.mcp_token_revoked |
notice | An MCP token was revoked. |
security.mfa_disabled |
critical | A member turned MFA off. |
security.mfa_enabled |
notice | A member enrolled in MFA. |
security.mfa_required_changed |
critical | The account changed whether MFA is mandatory for everyone. |
security.mfa_reset |
critical | A member’s MFA enrolment was reset, usually by support. |
security.oauth_app_authorized |
critical | A person authorized an application to access the account. |
security.oauth_app_revoked |
notice | An application’s access to the account was revoked. |
security.passkey_added |
critical | A new passkey was registered as a sign-in method. |
security.passkey_removed |
notice | A passkey was removed as a sign-in method. |
security.password_changed |
notice | A member changed their password. |
security.signed_in |
info | Somebody signed in to the account. |
security.signed_out |
info | Somebody deliberately ended their session. |
security.sms_added |
critical | A phone number was verified and registered as a sign-in method. |
security.sms_consent_granted |
notice | Consent to receive text-message verification codes was given, before any message was sent. |
security.sms_removed |
notice | A phone number was removed as a sign-in method. |
Support
| Event | Severity | Summary |
|---|---|---|
support.access_granted |
critical | The account opened a staff-access consent window. |
support.access_revoked |
notice | The account closed its staff-access consent window. |
support.session_started |
critical | A member of staff began an impersonated session. |
Team
| Event | Severity | Summary |
|---|---|---|
team.invitation_accepted |
notice | An invitation was accepted and the person joined. |
team.invitation_revoked |
notice | A pending invitation was withdrawn. |
team.member_added |
notice | Somebody was granted access to the account. |
team.member_invited |
notice | Somebody was invited to join the account. |
team.member_removed |
notice | Somebody lost access to the account. |
team.primary_changed |
critical | Ownership of the account moved to a different person. |
team.role_changed |
notice | A member’s role was changed. |