---
title: "Fetch a signal"
method: GET
path: "/linkedin/signals/{id}"
tags: ["LinkedIn — Signals"]
---

# Fetch a signal

`GET /linkedin/signals/{id}`

## Request

- Base URL: `https://anjal.app`
- URL: `https://anjal.app/linkedin/signals/{id}`
- Auth: API key in header `X-API-Key`

## Path parameters

- `id` string, required

## Response `200`

- object
  - `signal` LinkedInSignal
    - `id` string, required
    - `kind` 'keyword' | 'engagement' | 'job_change_watchlist', required: Acquisition strategy for this signal: - keyword: poll LinkedIn search for the saved query. - engagement: poll a tracked profile/company's recent posts and fire on engagers. - job_change_watchlist: poll a list of profiles weekly and fire on role/company changes.
    - `name` string, required
    - `query` string, nullable: Required for kind=keyword; null otherwise.
    - `target` object, nullable: Engagement signals only — the resolved actor target.
      - `kind` 'profile' | 'company'
      - `url` string
      - `urn` string: Resolved urn:li:fsd_profile:* or urn:li:fsd_company:*.
      - `label` string, nullable
    - `lastSeenPostUrn` string, nullable: Engagement signals only — watermark of the most recent post processed. We only fire on engagers of posts newer than this.
    - `watchlistCount` integer, nullable: Watchlist signals only — number of profiles being tracked.
    - `sessionId` string, nullable: null = auto-distribute polling across all healthy LinkedIn sessions for this tenant (recommended). Specific id = pin the signal to that account so all polls come from it.
    - `cadence` 'daily' | 'every_12h' | 'every_6h' | 'manual', required
    - `webhookUrl` string, nullable
    - `webhookSecret` string, nullable: Returned only on creation. Verify with HMAC-SHA256.
    - `filterMinIntent` 'low' | 'medium' | 'high', required
    - `intentDescription` string, required: Plain-English firing rule the LLM classifier uses as the authoritative definition of what should fire. Example: "Flag as ready when the author is a founder/operator complaining about cold email — skip vendors, agencies, and content marketers." The keyword is only a coarse pre-filter; this rule decides engage=true/false and the cited reason on every match.
    - `enabled` boolean, required
    - `lastPolledAt` string, date-time, nullable
    - `nextPollAt` string, date-time, nullable
    - `lastError` string, nullable
    - `lastErrorCode` string, nullable
    - `lastErrorAt` string, date-time, nullable
    - `matchesCount` integer
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `404`: Not found.

---

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