Skip to main content
GET
/
v1
/
alerts
/
matches
/
{id}
cURL
curl "https://api.particle.pro/v1/alerts/matches/{id}"
{
  "alert_id": "<string>",
  "deliveries": [
    {
      "channel": "<string>",
      "created_at": "2023-11-07T05:31:56Z",
      "id": "<string>",
      "status": "<string>",
      "error_message": "<string>",
      "sent_at": "2023-11-07T05:31:56Z"
    }
  ],
  "detected_at": "2023-11-07T05:31:56Z",
  "entity_id": "<string>",
  "entity_type": "<string>",
  "id": "<string>",
  "mention_count": 123,
  "monitor_id": "<string>",
  "source_id": "<string>",
  "source_type": "<string>",
  "episode": {
    "podcast_id": "<string>",
    "podcast_title": "<string>",
    "title": "<string>",
    "apple_podcasts_url": "<string>",
    "duration_seconds": 123,
    "explicit": true,
    "image_url": "<string>",
    "podcast_image_url": "<string>",
    "podcast_slug": "<string>",
    "published_at": "2023-11-07T05:31:56Z",
    "slug": "<string>"
  },
  "is_backfilled": true,
  "llm_summary": "<string>",
  "mention_variants": [
    "<string>"
  ],
  "roles": [
    "<string>"
  ],
  "salience": 123,
  "truncated": true,
  "windows": [
    {
      "end_seconds": 123,
      "lines": [
        {
          "end_seconds": 123,
          "start_seconds": 123,
          "text": "<string>",
          "is_mention": true,
          "number": 123,
          "role": "<string>",
          "speaker": "<string>"
        }
      ],
      "start_seconds": 123,
      "segment_id": "<string>",
      "segment_title": "<string>",
      "segment_type": "<string>"
    }
  ]
}

Path Parameters

id
string
required

Match ID

Response

OK

alert_id
string
required

ID of the parent alert.

deliveries
object[] | null
required
detected_at
string<date-time>
required
entity_id
string
required
entity_type
string
required
id
string
required
kind
enum<string>
required

Inherited from the parent alert's kind so clients can render mention vs appearance semantics without a follow-up alert lookup. Match payloads from ENTITY_MENTION alerts carry mention_count and mention_variants; PODCAST_SPEAKER matches carry roles and a line-count in mention_count.

Available options:
ENTITY_MENTION,
PODCAST_SPEAKER
mention_count
integer<int64>
required
monitor_id
string
required

Deprecated — use alert_id. ID of the parent alert.

source_id
string
required
source_type
string
required
episode
object

Optional episode + podcast metadata embedded so a single response renders a card without a follow-up /v1/episodes/{id} call. Populated for preview-sample matches (POST /v1/projects/{projectId}/alerts/preview's GET response) and for the landing-page GETs (GET /v1/alerts/deliveries/{id} in both summary and detailed views, GET /v1/alerts/matches/{id}); absent on the paginated live matches list.

is_backfilled
boolean

True for matches written by the post-create historical sweep. Backfilled matches are real matches the live pipeline would have produced, with DetectedAt set to the source episode's publish time. They never trigger delivery (no email is sent) — the field lets the UI label them so users can distinguish 'past' from 'going-forward' matches.

llm_summary
string

AI-generated narrative summary of this match with prior-mention context from the past 7 days for the same (alert, entity). Generated asynchronously after match creation. Absent (field omitted) when the summarizer hasn't processed the row yet OR when the LLM exhausted its retry budget — clients should treat both states the same: no summary to render. Visible to both org members and the public landing-page tier; the summary describes the mention itself, not the alert configuration.

mention_variants
string[] | null
roles
string[] | null

Canonical speaker role(s) the matched entity appeared as. One of GUEST, PANELIST, CORRESPONDENT, or AUDIENCE (raw STT/LLM labels like CALLER, REPORTER, LISTENER are normalized to these buckets on write). Populated only for PODCAST_SPEAKER matches; sorted alphabetically for deterministic order.

salience
number<float>
truncated
boolean
windows
object[] | null