---
title: "List signals for the customer with filters + pagination"
method: GET
path: "/api/me/signals"
tags: ["me"]
---

# List signals for the customer with filters + pagination

`GET /api/me/signals`

## Request

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

customerId in query is IGNORED — server uses req.customer.id. Filters are AND-combined.

## Query parameters

- `type` string
- `kind` 'reaction' | 'comment': Coarse engagement-kind filter (reaction | comment).
- `minScore` string: Minimum strength 1-10
- `minIcp` string: Minimum composite ICP percentage 0-100, inclusive. Excludes signals without a composite score.
- `classification` 'buyer' | 'influencer': Buyer-classification filter (plan 2026-08-28). Reads COALESCE(metadata, icp_analysis)->>'buyerClassification'; 'buyer' also matches unclassified rows (server treats NULL as buyer).
- `days` string: Look back N days
- `source` string, uuid: Source ID filter (single source UUID)
- `sourceType` string: Filter to all sources of this type (own_company, competitor_company, …).
- `persona` string: Substring of icp_analysis.persona
- `industry` string: Substring of company industry
- `search` string: Free-text search across name/company/context/post
- `company` string: Company key (LinkedIn URL or lowercased name) to filter signals to a single company.
- `view` 'active' | 'archived' | 'all': Per-user archive filter. active (default) hides signals this user has archived; archived shows only those; all shows both.
- `tags` string: Packed tag filter: `<catId>:<tok>|<tok>,<catId2>:<tok>` where tok = value UUID | `!`UUID (exclude) | `none` (untagged in category) | `any` (tagged in category). OR within a group, AND across groups.
- `limit` string
- `offset` string

## Response `200`

Paginated signals

- MeSignalListResponse
  - `signals` 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
  - `total` integer, required
  - `limit` integer, required
  - `offset` integer, required

---

[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)
