---
title: "Signal detail with pipeline result, source post, and delivery info"
method: GET
path: "/api/me/signals/{id}"
tags: ["me"]
---

# Signal detail with pipeline result, source post, and delivery info

`GET /api/me/signals/{id}`

## Request

- Base URL: `https://api.signalraven.ai`
- URL: `https://api.signalraven.ai/api/me/signals/{id}`
- Auth: none declared

## Path parameters

- `id` string, uuid, required

## Response `200`

Signal detail

- MeSignalDetail
  - `signal` Signal, required
    - `id` string, uuid, required: Signal event ID
    - `customerId` string, uuid, required
    - `signalType` 'COMPETITOR_POST_COMMENT' | 'COMPETITOR_POST_REACTION' | 'CUSTOMER_POST_COMMENT' | 'CUSTOMER_POST_REACTION' | 'COMPETITOR_EMPLOYEE_POST_COMMENT' | 'COMPETITOR_EMPLOYEE_POST_REACTION' | 'KEYWORD_SEARCH_COMMENT' | 'KEYWORD_SEARCH_REACTION' | 'INDUSTRY_SEARCH_COMMENT' | 'INDUSTRY_SEARCH_REACTION' | 'MENTION_TRACKING_COMMENT' | 'MENTION_TRACKING_REACTION' | 'HASHTAG_SEARCH_COMMENT' | 'HASHTAG_SEARCH_REACTION' | 'EVENT_SEARCH_COMMENT' | 'EVENT_SEARCH_REACTION' | 'EVENT_SEARCH_POST' | 'POSTER_SEARCH_POST' | 'POSTER_SEARCH_REPOST' | 'TARGET_PERSON_POST' | 'TARGET_PERSON_REPOST' | 'TARGET_PERSON_COMMENT' | 'TARGET_PERSON_REACTION' | 'INTELLIGENCE_PUSH_ACTIVITY', required: Signal classification
    - `strength` integer, required
    - `personName` string, required
    - `personTitle` string, nullable, required
    - `personCompany` string, nullable, required
    - `personLinkedinUrl` string, nullable, required: Public LinkedIn profile URL (https://www.linkedin.com/in/<vanity>) since 2026-10-16. Older signals, and newer ones whose profile has no public identifier, keep the URL the event carried, often the member-id form /in/ACoAA…
    - `companyEmployeeCount` integer, nullable, required
    - `companyIndustry` string, nullable, required
    - `companyDescription` string, nullable, required
    - `personLocation` string, nullable, required: Person's LinkedIn-displayed location (e.g. 'Belfast Metropolitan Area'). Joined from person_profile_cache.
    - `personHeadline` string, nullable, required: Person's LinkedIn headline (e.g. 'VP Marketing | Sales engagement evangelist'). Joined from person_profile_cache.
    - `personAbout` string, nullable, required: Person's LinkedIn About text (long-form bio). Joined from person_profile_cache.
    - `personExperience` object[], nullable, required: Person's LinkedIn work history (most-recent first). Joined from person_profile_cache.experience. Each entry has title, company, companyUrl, startDate, endDate, description — endDate is null/empty when the role is current. Portal uses this to render concurrent + past roles at the current company on the signal detail page.
      - `title` string, nullable, required
      - `company` string, nullable, required
      - `companyUrl` string, nullable, required
      - `startDate` string, nullable, required
      - `endDate` string, nullable, required
      - `description` string, nullable, required
    - `companyHeadquarters` string, nullable, required: Company HQ location (e.g. 'San Francisco, CA, US'). Flattened from person_profile_cache.companyHeadquarters → company_profile_cache.headquarters.
    - `stackCount` integer: Count of other signals from the same person OR same company within the last 90 days. Mirrors the Signal Stack panel on the detail page (person match via person_profile_cache.linkedin_urn, company match via case-insensitive personCompany). Used to render the Signal Stack indicator on /signals. 0 when no siblings.
    - `icpAnalysis` IcpAnalysis, required
      - `fit` boolean, required
      - `confidence` number, required
      - `persona` string, required
      - `reasoning` string, required
      - `seniority` string, required
      - `compositeScore` number, nullable
      - `titleScore` number, nullable
      - `marketAffinityScore` number, nullable
      - `industryScore` number, nullable
      - `companySizeScore` number, nullable
      - `locationScore` number, nullable
      - `dimensionNotes` object, nullable
        - `title` string, nullable
        - `marketAffinity` string, nullable
        - `industry` string, nullable
        - `companySize` string, nullable
        - `location` string, nullable
      - `failedDimensions` string[], nullable
      - `buyerClassification` string, nullable
    - `buyerClassification` string, nullable: Normalized buyer/seller/influencer classification: COALESCE(metadata, icp_analysis)->>'buyerClassification'. Coverage is mixed by era (backfill wrote metadata only; older reaction rows wrote icp_analysis only; current rows write both) — this field is the single normalized read. null = pre-classification row (treat as buyer). Drives the Influencer chip + classification filter (plan 2026-08-28).
    - `signalContext` string, nullable, required
    - `event` object, nullable
      - `name` string, required
      - `startDate` string, required
      - `endDate` string, required
      - `role` 'author' | 'engager', required
      - `evidence` 'author_attendance' | 'author_recap' | 'engager_comment' | 'engager_reaction', required
      - `phaseAtCapture` 'pre' | 'live' | 'wrap', nullable
    - `talkingPoints` string[], nullable, required
    - `postTextPreview` string, nullable, required
    - `aiPostSummary` string, nullable, required
    - `whyItMatters` string, nullable, required
    - `engagementDetail` string, nullable, required
    - `sourceEventType` string, nullable, required
    - `sourcePostUrl` string, nullable, required
    - `ownCompanyPost` 'none' | 'person' | 'company', nullable: Own-company post (2026-10-02): whether the post behind this signal was published by the workspace's own company page ('company'), by someone who currently works at the workspace's company ('person'), or by neither ('none'). null = not resolved (no author URL, or a signal with no post such as a job change). Portal label "Own company": Yes (company) / Yes (person) / No.
    - `topicInterest` boolean: Topic interest (Person Activity Monitoring, 2026-10-17): the monitored person's activity was admitted at relevance level 3 — professional content about the workspace's space with no stated need — and starts at strength 5 instead of 8. Portal pill "Topic interest". false or absent for every other signal.
    - `createdAt` string, date-time, required
    - `archivedAt` string, date-time, nullable
    - `tags` SignalTag[]: Workspace tag values applied to this signal. Present on /me list + detail responses; ordered by category then value name.
      - `valueId` string, uuid, required
      - `valueName` string, required
      - `categoryId` string, uuid, required
      - `categoryName` string, required
  - `pipelineResult` object, required
    - `deterministicSellerCheck` object, nullable, required: Layer 1 of buyer/seller pipeline. NULL until backfill ships (backlog).
      - `passed` boolean, required
      - `reason` string, nullable, required
    - `aiIdentityReview` object, nullable, required: Layer 2 of buyer/seller pipeline. NULL until backfill ships (backlog).
      - `skipped` boolean, required
      - `passed` boolean, required
      - `reason` string, nullable, required
    - `classification` 'buyer' | 'influencer' | 'unknown', required: Derived from icp_analysis.persona field today; "unknown" when not present
    - `icpScoring` object, required
      - `composite` number, nullable, required
      - `dimensions` object, nullable, required
        - `title` number, required
        - `marketAffinity` number, required
        - `industry` number, required
        - `companySize` number, required
        - `location` number, required
      - `thresholds` object, nullable, required
        - `title` number, required
        - `marketAffinity` number, required
        - `industry` number, required
        - `companySize` number, required
        - `location` number, required
  - `sourcePost` object, nullable, required
    - `url` string, nullable, required
    - `text` string, nullable, required
    - `postedBy` string, nullable, required
    - `postedAt` string, date-time, nullable, required
    - `totalEngagement` integer, nullable, required
  - `delivery` object, nullable, required
    - `destinationId` string, uuid, nullable, required
    - `destinationName` string, nullable, required
    - `deliveredAt` string, date-time, nullable, required
    - `status` string, required: One of 'pending' | 'delivered' | 'failed'. UI uses this to render the three states distinctly; 'pending' shows as 'Sending…' (warning tone) while the worker hasn't yet processed the activation. The codegen target lacks a literal-union helper so this is typed as `string` here; consumers narrow against the three known values.
    - `success` boolean, required
    - `error` string, nullable, required

## Other responses

- `404`: Signal not found or not owned by customer

---

[API](https://skmtc.dev/signalraven/apis/zygnal-api.md) · [All operations](https://skmtc.dev/signalraven/apis/zygnal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signalraven/apis/zygnal-api/revisions/36e1d9b9d604?raw)
