Skip to content

Get Tenant Events

Returns your full tenant-level audit trail — email verification, subscription, payment, and tier/billing-interval change lifecycle events — in chronological order (oldest first).

GET /v1/tenants/events

Authentication

Authorization: Bearer <api-key>

When to call this

This is the one place that shows the full sequence of changes to your subscription over time — e.g. that it started as a monthly GROWTH subscription and later changed to yearly STARTER. GET /v1/subscriptions/me and GET /v1/tenants/me only show current state; this endpoint shows how you got there.

Response

200 OK

json
{
  "ok": true,
  "events": [
    {
      "id": "00000000-0000-0000-0000-000000000101",
      "eventType": "EMAIL_VERIFIED",
      "detail": null,
      "createdAt": "2026-06-01T10:00:00.000Z"
    },
    {
      "id": "00000000-0000-0000-0000-000000000118",
      "eventType": "SUBSCRIPTION_CREATED",
      "detail": { "subscriptionId": "00000000-0000-0000-0000-000000000012", "tier": "GROWTH", "billingInterval": "MONTHLY" },
      "createdAt": "2026-06-01T10:05:00.000Z"
    },
    {
      "id": "00000000-0000-0000-0000-000000000119",
      "eventType": "SUBSCRIPTION_ACTIVATED",
      "detail": { "subscriptionId": "00000000-0000-0000-0000-000000000012", "tier": "GROWTH" },
      "createdAt": "2026-06-01T10:20:00.000Z"
    },
    {
      "id": "00000000-0000-0000-0000-000000000205",
      "eventType": "TIER_CHANGE_REQUESTED",
      "detail": {
        "subscriptionId": "00000000-0000-0000-0000-000000000012",
        "fromTier": "GROWTH",
        "toTier": "STARTER",
        "fromBillingInterval": "MONTHLY",
        "toBillingInterval": "YEARLY",
        "totalAmount": 200,
        "effectiveAt": "2026-07-01T10:20:00.000Z"
      },
      "createdAt": "2026-06-25T09:00:00.000Z"
    },
    {
      "id": "00000000-0000-0000-0000-000000000212",
      "eventType": "TIER_CHANGE_SCHEDULED",
      "detail": {
        "subscriptionId": "00000000-0000-0000-0000-000000000012",
        "fromTier": "GROWTH",
        "toTier": "STARTER",
        "fromBillingInterval": "MONTHLY",
        "toBillingInterval": "YEARLY",
        "effectiveAt": "2026-07-01T10:20:00.000Z",
        "paymentId": "00000000-0000-0000-0000-000000000040"
      },
      "createdAt": "2026-06-27T14:10:00.000Z"
    },
    {
      "id": "00000000-0000-0000-0000-000000000230",
      "eventType": "TIER_CHANGED",
      "detail": {
        "subscriptionId": "00000000-0000-0000-0000-000000000012",
        "fromTier": "GROWTH",
        "toTier": "STARTER",
        "fromBillingInterval": "MONTHLY",
        "toBillingInterval": "YEARLY"
      },
      "createdAt": "2026-07-01T10:20:00.000Z"
    }
  ]
}

detail is a free-form object specific to each eventType (or null for events with no extra context) — the fields shown above match what each event type currently carries, but treat unfamiliar fields as forward-compatible additions rather than a fixed schema.

Event types

EventMeaning
VERIFICATION_EMAIL_SENT / VERIFICATION_EMAIL_FAILED / VERIFICATION_EMAIL_DELIVERED / VERIFICATION_EMAIL_TEMP_FAILED / VERIFICATION_EMAIL_COMPLAINEDRegistration verification email delivery status
EMAIL_VERIFIEDTenant's email was verified
SUBSCRIPTION_CREATEDA subscription was started (POST /v1/subscriptions or at promotion)
PAYMENT_REPORTEDProof of transfer was submitted for a payment
PAYMENT_VERIFIED / PAYMENT_REJECTEDProvider reviewed a payment's proof
INVOICE_LINKEDA self-billed invoice was linked to a subscription or payment
SUBSCRIPTION_ACTIVATEDSubscription reached ACTIVE (first billing period opened)
TIER_CHANGE_REQUESTEDChange Tier created a payment (same-interval upgrade, or any billing-interval change)
TIER_CHANGE_SCHEDULEDA tier/interval change was scheduled to apply at current_period_end — either a free same-interval downgrade (immediately, at request time) or a paid billing-interval change (once its payment's invoice authorizes)
TIER_CHANGEDA tier and/or billing-interval change actually took effect
SUBSCRIPTION_CANCELLATION_SCHEDULEDDELETE /v1/subscriptions scheduled an end-of-period cancellation
SUBSCRIPTION_CANCELLEDSubscription reached CANCELLED (scheduled cancellation applied, or admin override)
RENEWAL_DUEA renewal payment was opened ahead of current_period_end
SUBSCRIPTION_RENEWEDA renewal payment's invoice authorized, extending the billing period
SUBSCRIPTION_EXPIREDSubscription ran past its renewal grace period with no payment and was downgraded to FREE

Errors

StatusCodeWhen
401UNAUTHORIZEDMissing or invalid API key
404NOT_FOUNDTenant could not be resolved (should not normally happen for an authenticated request)
429TOO_MANY_REQUESTSRate limit exceeded

Notes

  • Returns an empty array if nothing has happened yet beyond registration.
  • Not paginated — the full history is returned every time. Fine for typical tenant lifetime volume; if this ever needs pagination, ?sinceId= (mirroring Notifications) would be the natural addition.

Comprobify API Documentation