Skip to content
Listener.comDevelopers

Event types

Every event Listener sends, where it comes from, and an example payload for each.

1 min read

Subscribe an endpoint to the types below, or to ["*"] for all of them. Every event shares the same envelope:

Field
idevt_…. Unique; use it to deduplicate.
typeOne of the types below.
api_versionThe API version that shaped data.
createdWhen the change happened (ISO 8601, UTC).
workspace_idThe workspace it happened in.
sourceapi, app or system. See where events come from.
data.objectThe resource after the change. For *.deleted, its last known state.
data.changed_fieldsFor updates detected in the app: the names of the fields that changed.
data.previous_attributesFor updates: old values, when they are known (status, title, node_count, last_updated, connected, stale).
requestFor source: "api": the id and idempotency_key of the request that caused it. Otherwise null.

The labels next to each type show which sources can produce it. Expand a type to see an example.

The same catalog, with these examples, is served as JSON at GET /v1/event-types (no authentication). Events detected from app changes carry a compact data.object; call the matching GET endpoint when you need the full resource. webhook_endpoint.test is sent only when you ask for it: a * subscription never receives it.

Campaigns

campaign.createdAPIAppA campaign was created.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "campaign.created",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "campaign",
      "id": "Xb3kQ9LmT2vWc8Rz1PaE",
      "title": "Acme Coffee Q4 Fall Flight",
      "description": "Host-read mid-rolls plus two YouTube integrations per show.",
      "status": "active",
      "start_date": "2026-10-01",
      "end_date": "2026-12-15",
      "brand": {
        "name": "Acme Coffee",
        "slug": "acme-coffee",
        "domain": "acmecoffee.example",
        "logo": "https://cdn.example.com/acme-coffee.png"
      },
      "goals": {
        "total_views": 2500000,
        "total_budget": 85000
      },
      "cluster_ids": [
        "cluster-6vQ1jWjYcK2mWkQ0dGx3Zp"
      ],
      "total_slots": 12,
      "created_at": "2026-09-22T15:04:11Z",
      "updated_at": "2026-10-14T09:29:58Z",
      "public_url": "https://network.listener.com/northwind-audio/campaigns/Xb3kQ9LmT2vWc8Rz1PaE"
    }
  },
  "request": null
}
campaign.updatedAPIAppA campaign's title, description, dates, brand, goals, slots, linked clusters, exclusions or EMV settings changed.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "campaign.updated",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "campaign",
      "id": "Xb3kQ9LmT2vWc8Rz1PaE",
      "title": "Acme Coffee Q4 Fall Flight",
      "description": "Host-read mid-rolls plus two YouTube integrations per show.",
      "status": "active",
      "start_date": "2026-10-01",
      "end_date": "2026-12-15",
      "brand": {
        "name": "Acme Coffee",
        "slug": "acme-coffee",
        "domain": "acmecoffee.example",
        "logo": "https://cdn.example.com/acme-coffee.png"
      },
      "goals": {
        "total_views": 2500000,
        "total_budget": 85000
      },
      "cluster_ids": [
        "cluster-6vQ1jWjYcK2mWkQ0dGx3Zp"
      ],
      "total_slots": 12,
      "created_at": "2026-09-22T15:04:11Z",
      "updated_at": "2026-10-14T09:29:58Z",
      "public_url": "https://network.listener.com/northwind-audio/campaigns/Xb3kQ9LmT2vWc8Rz1PaE"
    },
    "changed_fields": [
      "goals",
      "slots"
    ],
    "previous_attributes": {}
  },
  "request": null
}
campaign.deletedAPIAppA campaign was deleted.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "campaign.deleted",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "campaign",
      "id": "Xb3kQ9LmT2vWc8Rz1PaE",
      "title": "Acme Coffee Q4 Fall Flight",
      "deleted": true
    }
  },
  "request": null
}
campaign.status_changedAPIAppA campaign's status (upcoming, active, completed) changed, either set by hand or because its flight started or ended.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "campaign.status_changed",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "campaign",
      "id": "Xb3kQ9LmT2vWc8Rz1PaE",
      "title": "Acme Coffee Q4 Fall Flight",
      "description": "Host-read mid-rolls plus two YouTube integrations per show.",
      "status": "active",
      "start_date": "2026-10-01",
      "end_date": "2026-12-15",
      "brand": {
        "name": "Acme Coffee",
        "slug": "acme-coffee",
        "domain": "acmecoffee.example",
        "logo": "https://cdn.example.com/acme-coffee.png"
      },
      "goals": {
        "total_views": 2500000,
        "total_budget": 85000
      },
      "cluster_ids": [
        "cluster-6vQ1jWjYcK2mWkQ0dGx3Zp"
      ],
      "total_slots": 12,
      "created_at": "2026-09-22T15:04:11Z",
      "updated_at": "2026-10-14T09:29:58Z",
      "public_url": "https://network.listener.com/northwind-audio/campaigns/Xb3kQ9LmT2vWc8Rz1PaE"
    },
    "previous_attributes": {
      "status": "upcoming"
    }
  },
  "request": null
}

Clusters

cluster.createdAPIAppAn episode cluster was created (by hand, by the AI cluster builder or by a merge).
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "cluster.created",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "cluster",
      "id": "cluster-6vQ1jWjYcK2mWkQ0dGx3Zp",
      "show_id": "pQ7sHt2Lw9XcV4bN1mRa",
      "name": "Episode 412: Deadline Day Fallout",
      "internal_title": null,
      "episode_ids": [
        "6vQ1jWjYcK2mWkQ0dGx3Zp"
      ],
      "node_count": 18,
      "is_manual": false,
      "auto_generated": true,
      "created_at": "2026-10-13T18:22:40Z",
      "updated_at": "2026-10-14T09:12:03Z",
      "public_url": "https://listener.com/cluster/pQ7sHt2Lw9XcV4bN1mRa_cluster-6vQ1jWjYcK2mWkQ0dGx3Zp"
    }
  },
  "request": null
}
cluster.updatedAPIAppA cluster's name, internal title, linked episodes, brand collaboration or page customization changed, or nodes were removed.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "cluster.updated",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "cluster",
      "id": "cluster-6vQ1jWjYcK2mWkQ0dGx3Zp",
      "show_id": "pQ7sHt2Lw9XcV4bN1mRa",
      "name": "Episode 412: Deadline Day Fallout",
      "internal_title": null,
      "episode_ids": [
        "6vQ1jWjYcK2mWkQ0dGx3Zp"
      ],
      "node_count": 18,
      "is_manual": false,
      "auto_generated": true,
      "created_at": "2026-10-13T18:22:40Z",
      "updated_at": "2026-10-14T09:12:03Z",
      "public_url": "https://listener.com/cluster/pQ7sHt2Lw9XcV4bN1mRa_cluster-6vQ1jWjYcK2mWkQ0dGx3Zp"
    },
    "changed_fields": [
      "name"
    ],
    "previous_attributes": {}
  },
  "request": null
}
cluster.deletedAPIAppA cluster was deleted.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "cluster.deleted",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "cluster",
      "id": "cluster-6vQ1jWjYcK2mWkQ0dGx3Zp",
      "show_id": "pQ7sHt2Lw9XcV4bN1mRa",
      "deleted": true
    }
  },
  "request": null
}
cluster.nodes_addedAPIAppContent nodes (clips, posts, videos) were added to a cluster.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "cluster.nodes_added",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "cluster",
      "id": "cluster-6vQ1jWjYcK2mWkQ0dGx3Zp",
      "show_id": "pQ7sHt2Lw9XcV4bN1mRa",
      "name": "Episode 412: Deadline Day Fallout",
      "internal_title": null,
      "episode_ids": [
        "6vQ1jWjYcK2mWkQ0dGx3Zp"
      ],
      "node_count": 18,
      "is_manual": false,
      "auto_generated": true,
      "created_at": "2026-10-13T18:22:40Z",
      "updated_at": "2026-10-14T09:12:03Z",
      "public_url": "https://listener.com/cluster/pQ7sHt2Lw9XcV4bN1mRa_cluster-6vQ1jWjYcK2mWkQ0dGx3Zp"
    },
    "previous_attributes": {
      "node_count": 14
    },
    "nodes_added": 4
  },
  "request": null
}
cluster_build.completedAPISystemAn AI cluster build job finished (done, failed or cancelled).
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "cluster_build.completed",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "system",
  "data": {
    "object": {
      "object": "cluster_build",
      "job_id": "bld_9Qe2Rk7Tz1",
      "status": "done",
      "scope": {
        "kind": "range",
        "from_date": "2026-10-01",
        "to_date": "2026-10-14",
        "episode_ids": []
      },
      "mode": "auto",
      "source": "mcp",
      "total": 9,
      "done": 9,
      "progress_pct": 100,
      "counts": {
        "built": 6,
        "ready": 2,
        "nothing": 1,
        "failed": 0,
        "skipped": 0
      },
      "credits_used": 41,
      "created_at": "2026-10-14T08:40:00Z"
    }
  },
  "request": null
}

Shows, episodes & data

episode.createdAppA new episode appeared in a show's feed data (stored Spotify, Apple or YouTube episodes).
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "episode.created",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "episode",
      "id": "6vQ1jWjYcK2mWkQ0dGx3Zp",
      "show_id": "pQ7sHt2Lw9XcV4bN1mRa",
      "title": "Episode 412: Deadline Day Fallout",
      "published_at": "2026-10-14",
      "duration": "1:12:40",
      "duration_seconds": 4360,
      "episode_number": "412",
      "source_platform": "spotify",
      "cover": "https://i.scdn.co/image/ab6765630000ba8a1f0f3c6e2c0b6d1e2f3a4b5c",
      "share_url": "https://open.spotify.com/episode/6vQ1jWjYcK2mWkQ0dGx3Zp"
    }
  },
  "request": null
}
analytics.refreshedAppA show platform's analytics advanced (its last-updated stamp moved forward after a refresh or sync).
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "analytics.refreshed",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "platform_status",
      "show_id": "pQ7sHt2Lw9XcV4bN1mRa",
      "show_name": "Dugout Daily",
      "platform": "youtube",
      "connected": true,
      "last_updated": "2026-10-14T06:02:31Z",
      "age_hours": 0.4,
      "stale": false
    },
    "previous_attributes": {
      "last_updated": "2026-10-13T06:01:12Z"
    }
  },
  "request": null
}
integration.connectedAPIA platform was connected to a show through the API (by handle, profile URL or API key). The first data refresh may still be running.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "integration.connected",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "api",
  "data": {
    "object": {
      "object": "integration",
      "id": "instagram",
      "show_id": "pQ7sHt2Lw9XcV4bN1mRa",
      "path": "users/pQ7sHt2Lw9XcV4bN1mRa",
      "urls": {
        "app": "https://network.listener.com/app/integrations?show=pQ7sHt2Lw9XcV4bN1mRa",
        "public": null
      },
      "written": {
        "uid": "pQ7sHt2Lw9XcV4bN1mRa",
        "platform": "instagram",
        "handle": "dugoutdaily",
        "url": "https://www.instagram.com/dugoutdaily/"
      },
      "data": {
        "show_id": "pQ7sHt2Lw9XcV4bN1mRa",
        "platform": "instagram",
        "status": "connected",
        "connected": true,
        "username": "dugoutdaily",
        "profile_url": "https://www.instagram.com/dugoutdaily/",
        "refreshed": true,
        "previous_state": "disconnected",
        "previous_account": null
      }
    }
  },
  "request": {
    "id": "req_8f2LkQ0wXv1Tz",
    "idempotency_key": null
  }
}
integration.disconnectedAPIAppA show's platform connection was turned off (through the API or in the app) or lost.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "integration.disconnected",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "platform_status",
      "show_id": "pQ7sHt2Lw9XcV4bN1mRa",
      "show_name": "Dugout Daily",
      "platform": "youtube",
      "connected": false,
      "last_updated": "2026-10-14T06:02:31Z",
      "age_hours": 3.1,
      "stale": false
    },
    "previous_attributes": {
      "connected": true
    }
  },
  "request": null
}
integration.staleAppA connected platform has not refreshed for more than 36 hours.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "integration.stale",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "platform_status",
      "show_id": "pQ7sHt2Lw9XcV4bN1mRa",
      "show_name": "Dugout Daily",
      "platform": "youtube",
      "connected": true,
      "last_updated": "2026-10-12T20:55:00Z",
      "age_hours": 36.6,
      "stale": true
    },
    "previous_attributes": {
      "stale": false
    }
  },
  "request": null
}
show.updatedAPIA show's or the network's public profile was edited.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "show.updated",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "api",
  "data": {
    "object": {
      "object": "show",
      "id": "pQ7sHt2Lw9XcV4bN1mRa",
      "name": "Dugout Daily",
      "handle": "dugout-daily",
      "image": "https://firebasestorage.googleapis.com/v0/b/listener/o/dugout-daily.jpg",
      "public_url": "https://listener.com/dugout-daily",
      "categories": [
        "Sports",
        "Baseball"
      ]
    }
  },
  "request": {
    "id": "req_8f2LkQ0wXv1Tz",
    "idempotency_key": null
  }
}

Brands & reports

report.createdAPIAppA shared report was published (by hand or by a report automation).
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "report.created",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "report",
      "id": "rpt_2026_10_weekly_northwind",
      "title": "Weekly network scorecard — Oct 7–13",
      "network_name": "Northwind Audio",
      "time_range": "7d",
      "created_at": "2026-10-14T08:00:12Z",
      "is_automated": true,
      "urls": {
        "network": "https://network.listener.com/report/uJm8Fq1kT0bYwZ3xA9cD/rpt_2026_10_weekly_northwind",
        "public": "https://listener.com/report/uJm8Fq1kT0bYwZ3xA9cD/rpt_2026_10_weekly_northwind"
      }
    }
  },
  "request": null
}
report.deletedAPIAppA shared report was deleted.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "report.deleted",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "app",
  "data": {
    "object": {
      "object": "report",
      "id": "rpt_2026_10_weekly_northwind",
      "deleted": true
    }
  },
  "request": null
}
brand.updatedAPIA brand profile (name, domain, logo, notes, contact) was created or updated.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "brand.updated",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "api",
  "data": {
    "object": {
      "object": "brand",
      "slug": "acme-coffee",
      "name": "Acme Coffee",
      "domain": "acmecoffee.example",
      "logo": "https://cdn.example.com/acme-coffee.png",
      "notes": "Prefers host reads; no competitor mentions in the same episode.",
      "has_contact": true,
      "campaign_count": 4,
      "public_url": "https://network.listener.com/northwind-audio/brands/acme-coffee"
    }
  },
  "request": {
    "id": "req_8f2LkQ0wXv1Tz",
    "idempotency_key": null
  }
}

Webhooks

webhook_endpoint.testOn demand onlyAPISent on demand from the dashboard or POST /v1/webhook-endpoints/{id}/test. Never sent automatically.
Example payload
{
  "object": "event",
  "id": "evt_1a2B3c4D5e6F7g8H9i0JkLmN",
  "type": "webhook_endpoint.test",
  "api_version": "2026-10-14",
  "created": "2026-10-14T09:30:00Z",
  "workspace_id": "uJm8Fq1kT0bYwZ3xA9cD",
  "source": "api",
  "data": {
    "object": {
      "object": "webhook_endpoint_test",
      "endpoint_id": "we_4mT8sKq2Zx7Lb1Nc9VfR3pYd",
      "message": "This is a test event from Listener. Respond with any 2xx status to acknowledge it."
    }
  },
  "request": {
    "id": "req_8f2LkQ0wXv1Tz",
    "idempotency_key": null
  }
}