---
title: "Preview a signal"
method: POST
path: "/v1/tracker/rules/preview-signal"
tags: ["Tracker"]
---

# Preview a signal

`POST /v1/tracker/rules/preview-signal`

Returns an example signal payload for a given rule configuration. No side effects — nothing is created or dispatched. Free to call. Useful for understanding signal shapes before creating rules.

<span>⚡ <strong>Rate limit:</strong> 120 requests per 1 minute</span>

<span>💰 <strong>Cost:</strong> FREE! No credits are charged for this API.&nbsp;<span title="Pricing shown is default pricing. Actual pricing may vary.">ⓘ</span></span>

## Request body

- object
  - `apiKey` string, required — Your Fiber API key
  - `config` union, required — Rule configuration to preview. Same shape as when creating a rule.
    - HeadcountCrossedThreshold
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'headcount_crossed_threshold', required
      - `entityType` 'company', required
      - `direction` 'above' | 'below', required — Whether to alert when headcount crosses the threshold going up or down
      - `threshold` integer, required — The employee count threshold to watch for crossing. Any positive integer is accepted.
    - HeadcountGrowthPercent
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'headcount_growth_percent', required
      - `entityType` 'company', required
      - `minPercentChange` number, required — Minimum percent change to trigger (e.g. 20 means 20% growth)
      - `direction` 'grew' | 'shrank' | 'either', required — Whether to alert on growth, shrinkage, or either
      - `minStartingHeadcount` integer, nullable — Only alert if the company had at least this many employees before the change. Omit for any starting size.
    - NewFundingRound
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'new_funding_round', required
      - `entityType` 'company', required
      - `minAmountUsd` number, nullable — Only alert for rounds above this amount. Omit for any amount.
      - `roundTypes` string[], nullable — Round types to alert on. Defaults to equity-focused types when omitted. Set explicitly to include debt/grant types.
    - FundingStageChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'funding_stage_changed', required
      - `entityType` 'company', required
      - `toStages` string[], nullable — Only alert if new stage is one of these. Omit for any stage change.
    - JobPostingWithKeyword
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'job_posting_with_keyword', required
      - `entityType` 'company', required
      - `keywords` string[], required — Alert when a job posting title contains any of these keywords
      - `seniorityLevels` string[], nullable — Only alert for these seniority levels. Omit for any level.
      - `locationTypes` string[], nullable — Only alert for these location types. Omit for any. Deprecated.
      - `minPostings` integer, nullable — Only alert if at least this many NEW matching postings are detected in a single check cycle. Omit for 1 (any new match).
    - JobPostingInFunction
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'job_posting_in_function', required
      - `entityType` 'company', required
      - `jobFunctions` string[], nullable, required — Alert when a job posting is in any of these departments/functions.
      - `minPostings` integer, nullable — Only alert if at least this many NEW matching postings are detected in a single check cycle. Omit for 1 (any new match).
    - NewsWithKeyword
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'news_with_keyword', required
      - `entityType` 'company', required
      - `keywords` string[], required — Alert when a news article title or summary matches any keyword
      - `sentiment` 'positive' | 'negative' | 'neutral' | 'null', nullable — Only alert for news with this sentiment. Omit for any sentiment.
    - CompanyNews
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'company_news', required
      - `entityType` 'company', required
      - `sentiment` 'positive' | 'negative' | 'neutral' | 'null', nullable — Only alert for news with this sentiment. Omit for any sentiment.
      - `minArticles` integer, nullable — Only alert when at least this many articles are detected in a single check. Useful for filtering noise from single tangential mentions. Omit for any count.
    - HqLocationChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'hq_location_changed', required
      - `entityType` 'company', required
    - CompanyStatusChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'company_status_changed', required
      - `entityType` 'company', required
      - `toStatuses` string[], nullable — Only alert if new status is one of these. Omit for any status change.
    - TechnologyAdded
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'technology_added', required
      - `entityType` 'company', required
      - `technologies` string[], nullable — Only alert for these technologies. Omit for any new technology.
    - CompanyPosted
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'company_posted', required
      - `entityType` 'company', required
      - `minReactions` integer, nullable — Only alert for posts with at least this many reactions. Omit for any.
    - CompanyPostedWithKeyword
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'company_posted_with_keyword', required
      - `entityType` 'company', required
      - `keywords` string[], nullable — Alert for posts matching these keywords.
      - `minReactions` integer, nullable — Only alert for posts with at least this many reactions. Omit for any.
    - FollowerCountGrowth
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'follower_count_growth', required
      - `entityType` 'company', required
      - `minAbsoluteGrowth` integer, nullable — Minimum absolute follower increase to trigger. Omit or set to 0 for any increase.
      - `minPercentGrowth` number, nullable — Minimum percent follower increase to trigger. Omit for any increase.
      - `minStartingFollowerCount` integer, nullable — Only alert if the company had at least this many followers before the growth. Omit for any starting count.
    - CompanyNameChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'company_name_changed', required
      - `entityType` 'company', required
    - CompanyDescriptionChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'company_description_changed', required
      - `entityType` 'company', required
      - `keywords` string[], nullable — Only alert if new description contains one of these keywords. Omit for any change.
    - CompanyWentInactive — Fires when a company becomes inactive.
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'company_went_inactive', required
      - `entityType` 'company', required
    - EmployeeCountMilestone — Fires when the employee count crosses the specified value. Supports any positive integer, not just round milestones. Functionally equivalent to headcount_crossed_threshold.
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'employee_count_milestone', required
      - `entityType` 'company', required
      - `milestone` integer, required — The employee count threshold to watch for crossing. Any positive integer is accepted. Equivalent to 'threshold' in headcount_crossed_threshold.
      - `direction` 'above' | 'below', required — Whether to alert when crossing above or below the milestone
    - NewOfficeLocation
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'new_office_location', required
      - `entityType` 'company', required
      - `countries` string[], nullable — ISO 3166-1 alpha-3 country codes (e.g. 'USA', 'GBR', 'DEU'). Only alert for offices in these countries. Omit for any new office.
      - `cities` string[], nullable — City names (e.g. 'San Francisco', 'London', 'Berlin'). Only alert for offices in these cities. Omit for any new office.
      - `regions` string[], nullable — Region codes (e.g. 'X-EMEA', 'X-APAC', 'X-EUROPE'). Expands to constituent country codes. Omit for any.
      - `states` string[], nullable — State or province names (e.g. 'California', 'Ontario'). Omit for any.
    - CompanyLogoChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'company_logo_changed', required
      - `entityType` 'company', required
    - AcquiredCompany
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'acquired_company', required
      - `entityType` 'company', required
      - `minPriceUsd` number, nullable — Only alert for acquisitions above this price. Omit for any acquisition.
    - NewInvestor
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'new_investor', required
      - `entityType` 'company', required
      - `investorNames` string[], nullable — Only alert when a new investor's name matches one of these (exact, case-insensitive). Omit for any new investor.
    - RecentlyHiredWithTitle
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'recently_hired_with_title', required
      - `entityType` 'company', required
      - `titleKeywords` string[], required — Title keywords to search for. Fires when the company hires someone whose title matches any keyword.
      - `minNewHires` integer, nullable — Minimum number of NEW hires detected in a single check cycle to trigger the alert. Only counts employees who appeared since the last check. Omit for 1.
    - DepartmentSizeThreshold
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'department_size_threshold', required
      - `entityType` 'company', required
      - `department` 'Accounting' | 'Administrative' | 'Advertising' | 'Analyst' | 'Art / Creative' | 'Business Development' | 'Community & Social Services' | 'Consulting' | 'Customer Service' | 'Design' | 'Distribution' | 'Education' | 'Engineering' | 'Entrepreneurship' | 'Finance' | 'General Business' | 'Health Care Provider' | 'Human Resources' | 'Information Technology' | 'Legal' | 'Management' | 'Manufacturing' | 'Marketing' | 'Military & Protective Services' | 'Other' | 'Product Management' | 'Production' | 'Program & Product Management' | 'Project Management' | 'Public Relations' | 'Purchasing' | 'Quality Assurance' | 'Real Estate' | 'Research' | 'Sales' | 'Science' | 'Strategy / Planning' | 'Supply Chain' | 'Training' | 'Writing / Editing', required — Department to track. Matched against the company's organizational structure.
      - `threshold` integer, required — The employee count threshold to watch for crossing
      - `direction` 'above' | 'below', required — Whether to alert when department size crosses above or below the threshold
    - RecentLayoffs
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'recent_layoffs', required
      - `entityType` 'company', required
      - `minPeopleAffected` integer, nullable — Only alert if at least this many people were laid off. Omit for any layoff.
      - `minPercentAffected` number, nullable — Only alert if at least this percentage of the workforce was laid off. Omit for any layoff.
    - PersonChangedCompany
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_changed_company', required
      - `entityType` 'person', required
      - `toCompanies` string[], nullable — Only alert if they moved TO one of these companies (domains or slugs). Omit for any.
      - `fromCompanies` string[], nullable — Only alert if they moved FROM one of these companies. Omit for any.
      - `toTitleKeywords` string[], nullable — Only alert if their title at the new company contains one of these keywords.
      - `toSeniorityLevels` string[], nullable — Only alert if their seniority at the new company is one of these levels.
      - `toEmploymentTypes` string[], nullable — Only alert for these employment types at the new company. Omit for any.
    - PersonTitleChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_title_changed', required
      - `entityType` 'person', required
      - `titleKeywords` string[], nullable — Only alert if new title contains one of these keywords. Omit for any title change.
      - `toSeniority` string[], nullable — Only alert if the new position's seniority level matches one of these. Omit for any seniority.
    - PersonStealthChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_stealth_changed', required
      - `entityType` 'person', required
      - `direction` 'entered' | 'exited' | 'either', required — Whether to alert on entering stealth, exiting, or either
    - PersonOpenToWork
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_open_to_work', required
      - `entityType` 'person', required
      - `direction` 'started' | 'stopped' | 'either', required — Whether to alert when they start or stop signaling open-to-work
    - PersonIsHiring
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_is_hiring', required
      - `entityType` 'person', required
      - `direction` 'started' | 'stopped' | 'either', required — Whether to alert when they start or stop signaling is-hiring
    - PersonHeadlineChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_headline_changed', required
      - `entityType` 'person', required
      - `keywords` string[], nullable — Only alert if new headline contains one of these keywords. Omit for any change.
    - PersonLocationChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_location_changed', required
      - `entityType` 'person', required
      - `toCountries` string[], nullable — ISO 3166-1 alpha-3 country codes (e.g. 'USA', 'GBR', 'DEU'). Only alert if moved to one of these countries. Omit for any relocation.
      - `fromCountries` string[], nullable — Only alert if they moved FROM one of these countries. Omit for any.
      - `regions` string[], nullable — Region codes (e.g. 'X-EMEA', 'X-APAC'). Only alert if destination country is in one of these regions. Omit for any.
    - PersonTagGained
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_tag_gained', required
      - `entityType` 'person', required
      - `tags` string[], required — Alert when the person gains any of these system-assigned tags.
    - PersonPosted
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_posted', required
      - `entityType` 'person', required
      - `minReactions` integer, nullable — Only alert for posts with at least this many reactions. Omit for any.
    - PersonPostedWithKeyword
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_posted_with_keyword', required
      - `entityType` 'person', required
      - `keywords` string[], nullable — Alert for posts matching these keywords.
      - `minReactions` integer, nullable — Only alert for posts with at least this many reactions. Omit for any.
    - PersonSkillsAdded
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_skills_added', required
      - `entityType` 'person', required
      - `skills` string[], nullable — Only alert for these specific skills being added. Omit for any new skill.
    - PersonGotPromoted
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_got_promoted', required
      - `entityType` 'person', required
      - `seniorityKeywords` string[], nullable — Only alert if new title contains these seniority keywords (e.g. 'VP', 'Director'). Omit for any promotion.
    - PersonStartedCompany
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_started_company', required
      - `entityType` 'person', required
    - PersonEmploymentTypeChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_employment_type_changed', required
      - `entityType` 'person', required
      - `toTypes` string[], nullable — Only alert if new employment type is one of these. Omit for any change.
    - PersonConnectionsMilestone
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_connections_milestone', required
      - `entityType` 'person', required
      - `threshold` integer, required — Connection count to watch for crossing
      - `direction` 'above' | 'below', required — Whether to alert when crossing above or below the threshold
    - PersonFollowerMilestone
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_follower_milestone', required
      - `entityType` 'person', required
      - `threshold` integer, required — Follower count to watch for crossing
      - `direction` 'above' | 'below', required — Whether to alert when crossing above or below the threshold
    - PersonSummaryChanged
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_summary_changed', required
      - `entityType` 'person', required
      - `keywords` string[], nullable — Only alert if new summary contains one of these keywords. Omit for any change.
    - PersonNewCertification
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_new_certification', required
      - `entityType` 'person', required
      - `certificationKeywords` string[], nullable — Only alert for certifications matching these keywords. Omit for any new cert.
    - PersonBecameVerified
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_became_verified', required
      - `entityType` 'person', required
    - PersonBecamePremium
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_became_premium', required
      - `entityType` 'person', required
      - `direction` 'started' | 'stopped' | 'either', required — Whether to alert when they start or stop having premium status
    - PersonBecameInfluencer
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_became_influencer', required
      - `entityType` 'person', required
      - `direction` 'started' | 'stopped' | 'either', required — Whether to alert when they join or leave the influencer program
    - PersonBecameTopVoice
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_became_top_voice', required
      - `entityType` 'person', required
      - `direction` 'started' | 'stopped' | 'either', required — Whether to alert when they earn or lose the top voice badge
    - PersonGotDemoted
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_got_demoted', required
      - `entityType` 'person', required
      - `seniorityKeywords` string[], nullable — Only alert if the previous title contained these seniority keywords (e.g. 'VP', 'Director'). Omit for any demotion.
    - PersonStuckInRole
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_stuck_in_role', required
      - `entityType` 'person', required
      - `thresholdMonths` integer, required — Alert when the person has been in their current role for at least this many months without a title change.
    - PersonTenureMilestone
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_tenure_milestone', required
      - `entityType` 'person', required
      - `thresholdMonths` integer, required — Alert when the person has been at their current company for at least this many months, regardless of role changes or promotions.
    - PersonReactedToPost
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_reacted_to_post', required
      - `entityType` 'person', required
      - `keywords` string[], nullable — Only alert for reactions on posts whose content or author name matches these keywords. Omit for any reaction.
      - `reactionTypes` string[], nullable — Only alert for these reaction types. Omit for any type.
    - PersonCommentedOnPost
      - `lookbackDays` integer, nullable — Compare against a snapshot from approximately N days ago instead of the most recent prior snapshot. Omit for the default previous-snapshot comparison. Maximum 90 days.
      - `isDummy` boolean — When true, this rule only fires via the fire-dummy endpoint and is skipped during normal pipeline runs.
      - `type` 'person_commented_on_post', required
      - `entityType` 'person', required
      - `keywords` string[], nullable — Only alert for comments where the comment text, post content (when available from provider), or post author name matches these keywords. Omit for any comment.

## Response `200`

Default Response

- object
  - `output` object, required
    - `signal` object, required
      - `type` string, required — Rule type slug (e.g. person_connections_milestone).
      - `summary` string, required — Human-readable description of what changed.
      - `changeData` object[], required — Structured payload describing what changed.
      - `isDummy` true, required
  - `chargeInfo` union, required
    - object — Credits were charged immediately for this operation
      - `method` 'charged-now', required
      - `creditsCharged` number, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits will be charged after the operation completes
      - `method` 'charging-later', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits that were charged for an asynchronous operation
      - `method` 'charged-for-async-process', required
      - `creditsCharged` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — No credits were charged for this operation
      - `method` 'free', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits were refunded for this operation
      - `method` 'credits-refunded', required
      - `creditsRefunded` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
  - `warnings` object[], nullable — Warnings about extraneous fields in request
    - `field` string, required — Full path to extraneous field (e.g., 'searchParams.ExtraField')
    - `message` string, required — Warning message
  - `advice` string[], nullable — Tips, recommendations, and suggestions for using this API effectively.

## Other responses

- `400` — Default Response
- `401` — Default Response
- `402` — Default Response
- `403` — Default Response
- `404` — Default Response
- `422` — Default Response
- `429` — Default Response
- `500` — Default Response
- `503` — Default Response

---

[API](https://skmtc.net/fiber/apis/fiber-ai-api.md) · [All operations](https://skmtc.net/fiber/apis/fiber-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fiber/fiber-ai-api/versions/0c537984b99f/schema)
