# Signals API

In addition to our raw jobs data, we also offer intent signals. Customers use these signals to guide sales teams, AI SDR's, and AI Agents more broadly. Access to our Signals API is limited to our enterprise customers for now.

We recommend first reviewing the Jobs Data API page to learn more about the structure of our API, rate limits, and more.

#### We provide signals in 4 categories today

* Changes
  * Discrete edits or changes to a source, such as the urls or content on the pages
* Competitive
  * Tracking source advertising
* Problems
  * Challenges and opportunities for a source extracted from natural language. These signals indicate sales intent in different problem/opportunity areas
* Trends
  * Contextualized trends, such as hiring velocity
  * Trends are always identified in the context of a segment (ex: global, regional, local)

## API Overview

JobFront's API is hosted at the following root url. Each endpoint is specified below. The most recent Signals API version is currently 'v3'

```
https://api.jobfront.io/v3/<endpoint>
```

### Authentication

JobFront's API uses Bearer tokens to authenticate API calls. When you make API calls to JobFront, you must include this Bearer token in the Authorization header

```
Authorization: Bearer <api_token>
curl https://api.jobfront.io/v3/<endpoint> -H "Authorization: Bearer <api_token>"
```

Connect with us to get an access token.

### Quickstart

Submit a quick GET request to begin accessing this dataset

```
curl https://api.jobfront.io/v3/signals/problems/finance/cash-flow-constraints -H "Authorization: Bearer <api_token>"
```

200 Response

```
{
    "category": "finance",
    "group": "problems",
    "pagination": {
        "count_pages": 36,
        "count_signals": 880,
        "end_index": 25,
        "has_next": true,
        "has_prev": false,
        "page": 1,
        "per_page": 25,
        "start_index": 1
    },
    "signals": [
        {
            "created_at": 1746021751,
            "current_value": "",
            "date": "2025-04-30",
            "evidence_list": [
                "'Prepares and submits clean claims to insurance companies either electronically or by paper in an accurate, timely and compliant manner.'",
                "'Ensures financial success for University of Mississippi Medical Center through diligent approach to work and attention to detail.'",
                "'Works with operational area leaders to implement financial plans and productivity benchmarks, and to monitor progress toward financial goals.'",
                "'Assists with development of financial goals and objectives for assigned operational area.'",
                "'Processes assigned reports, worklists, and patient accounts with high accuracy and attention to detail.'",
                "'Manages the preparation of assigned operational areas' fiscal year budget including capital items.'"
            ],
            "info": {
                "category": "finance",
                "group": "problems",
                "type": "cash-flow-constraints"
            },
            "jobs_list": [
                {
                    "created_at": 1739369521,
                    "job_id": "J07213181b6744cf69dbe80e313a86273",
                    "job_title": "Patient Account Rep - SBO Cash Posting",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Rep---SBO-Cash-Posting_R00040821"
                },
                {
                    "created_at": 1738285907,
                    "job_id": "J424075c16cb540eb8706db158727dab6",
                    "job_title": "Patient Access Data Integrity Specialist I - Adult Registration",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Jackson-MS---Main-Campus/Patient-Access-Data-Integrity-Specialist-I---Adult-Registration_R00038796-1"
                },
                {
                    "created_at": 1737776510,
                    "job_id": "J4606c243f09d4a1196f4b21f8ffcb5ff",
                    "job_title": "Medical Office Assistant-Surgical Clinic-Grenada",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Grenada-MS/Medical-Office-Assistant-Surgical-Clinic-Grenada_R00040808-1"
                },
                {
                    "created_at": 1737069588,
                    "job_id": "J66af883b349a464c9c236759527c9284",
                    "job_title": "Patient Account Representative - Professional Govt FU",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---Professional-Govt-FU_R00040589-1"
                },
                {
                    "created_at": 1736960785,
                    "job_id": "J031cdf02995946a58062cecc2bb9a64c",
                    "job_title": "Patient Account Representative - SBO Cash Posting",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---SBO-Cash-Posting_R00040578-1"
                },
                {
                    "created_at": 1736960783,
                    "job_id": "J40277221abf04ca68b92e2da25155ca4",
                    "job_title": "Patient Account Representative - SBO Credit Balance",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---SBO-Credit-Balance_R00040567-1"
                },
                {
                    "created_at": 1736960782,
                    "job_id": "Jf85a6c0604fd4401addc4eb4607da25a",
                    "job_title": "Patient Account Representative - Professional Non Govt FU",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---Professional-Non-Govt-FU_R00040566-2"
                }
            ],
            "previous_value": "",
            "signal_classification": "direct",
            "signal_id": "S422e6bc858e44bc0afdcd5ad696bddb1",
            "signal_match": 2,
            "signal_recency": "inactive",
            "signal_recent_at": 1739369521,
            "signal_severity": 2,
            "signal_start_at": 1736960782,
            "source_description": "UMMC is Mississippi's only academic medical center dedicated to education, research, and healthcare.",
            "source_id": "Sf9c3f9dde4274e8386e0a54df2fecbb8",
            "source_name": "University of Mississippi Medical Center",
            "url_source": "umc.edu"
        },
        ...
    ]
}
```

### Data Hierarchy

We organize signals into multiple levels of hierarchy as shown below:

Groups -> Categories -> Types -> Individual signals

```
Signals
 - changes (group)
 - competitive (group)
 - problems (group)
    - finance (category)
       - cash-flow-constraints (type)
          - [list of signals/companies with cash flow constraints]
    - it (category)
       - outdated-legacy-systems
          - [list of signals/companies with outdated legacy systems]
 - trends (group)
```

These different levels of hierarchy correspond to the following URL patterns

Group (problems)

```
GET https://api.jobfront.io/v3/signals/problems
```

Category (finance)

```
GET https://api.jobfront.io/v3/signals/problems/finance
```

Type (cash-flow-constraints)

```
GET https://api.jobfront.io/v3/signals/problems/finance/cash-flow-constraints
```

### Filter Signals

Use this endpoint to gather all signals from a particular group

`GET /v3/signals/<group>`

For example, see below response from the 'problems' group:

`GET /v3/signals/problems`

```
{
    "group": "problems",
    "pagination": {
        "count_pages": 129,
        "count_signals": 3215,
        "end_index": 25,
        "has_next": true,
        "has_prev": false,
        "page": 1,
        "per_page": 25,
        "start_index": 1
    },
    "signals": [
        {
            "created_at": 1746021753,
            "current_value": "",
            "date": "2025-04-30",
            "evidence_list": [
                "'Gathers data to identify customer requirements and to analyze and evaluate existing or proposed systems.'",
                "'Analyzes and evaluates business procedures or problems to define data processing needs; monitors production processing to maximize utilization of systems.'",
                "'Researches and recommends hardware and software purchases to enhance system use.'"
            ],
            "info": {
                "category": "it",
                "group": "problems",
                "type": "outdated-legacy-systems"
            },
            "jobs_list": [
                {
                    "created_at": 1739486345,
                    "job_id": "Jf54f89beec974ee9a6b284699c17de1c",
                    "job_title": "Systems Analyst - MIND Center",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Jackson-MS---Main-Campus/Systems-Analyst---MIND-Center_R00041005"
                },
                {
                    "created_at": 1739486344,
                    "job_id": "Jdc5e37f181724acdaed9037194cfb507",
                    "job_title": "Data Quality Analyst - Cancer Research And Registry",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Jackson-MS---Main-Campus/Data-Quality-Analyst---Cancer-Research-And-Registry_R00040852-1"
                }
            ],
            "previous_value": "",
            "signal_classification": "direct",
            "signal_id": "Sf59cde5428a34367b4c95d852e7cf257",
            "signal_match": 1,
            "signal_recency": "inactive",
            "signal_recent_at": 1739486345,
            "signal_severity": 2,
            "signal_start_at": 1739486344,
            "source_description": "UMMC is Mississippi's only academic medical center dedicated to education, research, and healthcare.",
            "source_id": "Sf9c3f9dde4274e8386e0a54df2fecbb8",
            "source_name": "University of Mississippi Medical Center",
            "url_source": "umc.edu"
        },
        ...
    ]
}
   
```

**Definitions**

* `evidence_list` is a list of strings, directly extracted from job posts or another corpus that provides evidence in the signal being detected, classified, and documented
* `signal_match` is a number between \[1, 2, 3] which indicates how closely this intent signal matches the definition. Sometimes a clear intent signal "upgrade legacy it" is an obvious 3 (best) match, and sometimes the problem that a company has is tangential to that intent signal. 1 = lowest, 3 = highest match
* `signal_severity` is similar to above signal\_match. This is a number 1, 2, or 3 where 3 is the highest severity and 1 is the lowest
* `signal_start_at` and signal\_recent\_at is the period where we found evidence that a company had these problems
* `jobs_list` is a list of dictionaries that describe metadata for job posts where we found these signals. If you also subscribe to our jobs data, you can match these job\_id values to the full job post information.
* `signal_recency` is either 'active' or 'inactive' as explained below
* `signal_classification` is either 'direct' or 'inferred' as explained below
* `current_value` and previous\_value fields are not used in problems, but they are used in changes group types.

***

## Signal Categories

Next level down from signal groups is signal categories. See below the different types of categories that we support, within each high-level group (either problems or changes, for now)

### **Changes Categories**

Changes are scoped on a single source.

Most of these change categories are exhaust metadata from our massive scraping engine, although we have a few more arriving soon that are independent systems. Please reach out for us if you'd like to see specific change signals.

<table><thead><tr><th width="220.1966552734375">Category ID</th><th>List of Types</th></tr></thead><tbody><tr><td><code>url</code></td><td><p><code>domain-url-change</code> - Domain updated</p><p> <code>careers-url-change</code> - Careers page url updated</p><p><code>jobboard-url-change</code> - Job board page url updated</p></td></tr><tr><td><code>content</code></td><td><p><code>homepage-content-change</code> - Home page content meaningfully updated</p><p><code>careers-content-change</code>  - Careers page content meaningfully updated</p></td></tr><tr><td><code>tech</code></td><td><p><code>tech-change-planned</code>  - Technographic analysis found new tech mentioned for the first time in this Source's job postings (experimental)</p><p><code>tech-change-completed</code> - Technographic analysis found new tech mentioned for the first time in this Source's job postings (use this for confirmed registered changes)</p></td></tr><tr><td><code>location</code></td><td><p><code>location-change-planned</code>  - Location and team analysis found new location mentioned for the first time in this Source's job postings (experimental)</p><p><code>location-change-completed</code>  - Location and team analysis found new location mentioned for the first time in this Source's job postings (use this for confirmed registered changes)</p></td></tr></tbody></table>

### **Competitive Categories**

The Competitive group is where we publish insights that are competitive in nature, starting with advertising tracking.

<table><thead><tr><th width="220.10546875">Category ID</th><th>List of Types</th></tr></thead><tbody><tr><td>advertising</td><td><p><code>indeed-ads</code> - Source is/has advertised on Indeed</p><p><code>craigslist-ads</code> - Source is/has advertised on Craigslist</p></td></tr></tbody></table>

#### Competitive-specific semantics

We reuse the existing `signal_recency` and `active_only` semantics:

* `signal_recency = "active"`
  * The company has at least **N ads in the recent lookback window** on that channel\
    (e.g. ≥ 1 ad in the last 60–90 days).
* `signal_recency = "inactive"`
  * No ads in the recent window, **but** we have a historical record of ads on that surface\
    (e.g. at least N ads in the last 12–24 months).
* If a company has never been seen advertising on that surface, **no signal** is emitted for that type.

`active_only` in the query string works the same as other groups:

* `active_only=true` → only signals with `signal_recency = "active"`
* `active_only=false` → both active and inactive advertisers

### Problems Categories

Problem intent signals are problems that companies have based on public information that we track. These problems are extracted and structured using AI applied to every job posting for a given source/company.

<table><thead><tr><th width="220.115966796875">Category ID</th><th>List of Types</th></tr></thead><tbody><tr><td><code>finance</code></td><td><code>cash-flow-constraints</code> - The organization faces challenges with financial liquidity, managing working capital, or balancing income and expenses.</td></tr><tr><td><code>it</code></td><td><code>outdated-legacy-systems</code> - The company is operating with technological infrastructure that has become obsolete, difficult to maintain, or incompatible with modern solutions</td></tr><tr><td><code>operations</code></td><td><code>process-inefficiencies</code> - The organization suffers from workflows, procedures, or methodologies that waste resources, time, or effort</td></tr><tr><td><code>strategy-and-leadership</code></td><td><code>unclear-vision-and-mission</code> - The company lacks clear direction, cohesive strategic priorities, or well-communicated organizational purpose.</td></tr><tr><td><code>sales-and-marketing</code></td><td><code>low-conversion-rates</code> - The organization struggles to turn prospects into customers at acceptable rates throughout the sales funnel</td></tr><tr><td><code>product-and-r-and-d</code></td><td><code>poor-product-market-fit</code> - The company's offerings don't adequately address market needs, customer problems, or competitive pressures</td></tr><tr><td><code>customer-service</code></td><td><code>inconsistent-service-quality</code> - The organization delivers varying levels of service quality across customer interactions, channels, or touchpoints</td></tr><tr><td><code>legal-and-compliance</code></td><td><code>data-privacy-requirements</code> - The company faces challenges meeting regulatory or industry standards for data protection, privacy, or information security</td></tr></tbody></table>

### **Trends Categories**

Trends represent **comparative, longitudinal insights** derived from how hiring patterns evolve over time within a **Segment** (a structured slice of the world such as a company, location, function, collection, or any combination of those axes).

A Trend Signal tells you **how a segment behaves relative to:**

* **Its own historical behavior**
* **Similar roles in the broader market** (market-level baselines)
* **Other companies, locations, industries, or functions**
* **Collections** (custom groupings of companies)

Trends can be analyzed at multiple **altitudes**:

* **Per-Location** (city, state, region, country)
* **Per-Function** (e.g., ONET, job families)
* **Per-Company** (source-level)
* **Per-Collection** (enterprise customer–defined groups)
* **Per-Location-Function combination**
* **Global** (overall market)

Historically, Trends powered our internal AI SDR + AI Marketing systems. We now expose these as structured signals via the JobFront Signals API.

If you would like early access to newly validated trend detectors, please reach out to us—this system is expanding very rapidly.

<table><thead><tr><th width="220.1978759765625">Category ID</th><th>List of Types</th></tr></thead><tbody><tr><td><code>hiring</code></td><td><p>- <code>roles-long-open</code></p><p>- <code>roles-fast-fill</code></p><p>- <code>hiring-surge</code></p><p>- <code>hiring-freeze</code></p><p>- <code>hiring-increase</code></p><p>- <code>hiring-decrease</code></p></td></tr><tr><td><code>compensation</code></td><td><p>- <code>compensation-low</code></p><p>- <code>compensation-high</code></p></td></tr><tr><td><code>locations</code></td><td><p>- <code>geo-expansion</code></p><p>- <code>geo-retraction</code></p><p>- <code>geo-expansion-velocity</code></p><p>- <code>geo-retraction-velocity</code></p><p>- <code>remote-shift</code></p><p>- <code>onsite-shift</code></p></td></tr><tr><td><code>org</code></td><td><p>- <code>functions-overindexed</code></p><p>- <code>functions-underindexed</code></p><p>- <code>new-functions</code></p><p>- <code>retired-functions</code></p></td></tr></tbody></table>

#### **Trend-Specific Fields**

While all signals share the same core schema, **Trend signals** may include additional fields inside each job entry of `jobs_list`, depending on the signal type.

#### **Compensation vs Market**

Used in:

* `compensation-low`
* `compensation-high`

Fields:

| Field                  | Description                                        |
| ---------------------- | -------------------------------------------------- |
| `job_comp_annual`      | Annualized compensation for the role               |
| `market_median_comp`   | Median pay benchmark for comparable market segment |
| `segment_median_comp`  | Median pay for the segment itself                  |
| `comp_min`, `comp_max` | Raw comp range values if available                 |
| `width_ratio`          | Ratio of comp range width vs market norms          |

#### **Hiring Speed vs Market (Slow / Fast)**

Used in:

* `roles-long-open` *(slow relative to market)*
* `roles-fast-fill` *(fast relative to market)*

Fields:

| Field                 | Description                                                       |
| --------------------- | ----------------------------------------------------------------- |
| `days_open`           | Days the job has been open                                        |
| `segment_median_days` | Median days-to-fill for the segment                               |
| `market_median_days`  | Market benchmark (location/function tiered baseline)              |
| `days_threshold`      | Absolute threshold (used for slow/fast variants where applicable) |

#### **Hiring Lifecycle (Surge /** **Slow / Bottleneck / Freeze)**

Used in:

* `hiring-freeze` *(near-zero hiring recently)*
* `hiring-surge` *(surge in hiring recently)*

Fields:

| Field                               | Description                              |
| ----------------------------------- | ---------------------------------------- |
| `days_open`                         | Days the job was open                    |
| `days_threshold`                    | Minimum days considered “very long open” |
| `avg_days_open`, `max_days_open`    | Segment-level descriptors                |
| `current_sample`, `historical_mean` | Hiring volume context                    |

#### **Hiring Volume (Level Change Over Time)**

Used in:

* `hiring-increase` *(MoM ≥ factor)*
* `hiring-decrease` *(MoM ≤ factor)*

Fields:

| Field                         | Description                                             |
| ----------------------------- | ------------------------------------------------------- |
| `sample_size`                 | Current month hiring volume                             |
| `history_mean`, `history_std` | Descriptive stats used to determine surge               |
| `ratio`                       | Current vs baseline ratio (MoM or multi-month baseline) |
| `z_score`                     | Volatility-normalized spike indicator                   |

#### **Remote / Onsite Mix**

Used in:

* `remote-shift`
* `onsite-shift`

Fields:

| Field                     | Description                       |
| ------------------------- | --------------------------------- |
| `segment_remote_share`    | Share of remote roles this month  |
| `historical_remote_share` | Multi-month baseline remote share |
| `delta_share`             | Increase or decrease vs baseline  |

#### **Location Detail / Location Trends**

Used in:

* `geo-expansion`
* `geo-retraction`
* `geo-expansion-velocity`
* `geo-retraction-velocity`

Fields:

| Field                                   | Description                                     |
| --------------------------------------- | ----------------------------------------------- |
| `new_locations`                         | Newly active hiring geographies                 |
| `removed_locations`                     | Geographies that went inactive                  |
| `current_roles_in_new_locations`        | # of active roles in new geos                   |
| `historical_roles_in_removed_locations` | Total roles in those geos historically          |
| `active_locations_count`                | Count of currently active geos for this segment |

#### **Comp Disclosure (Benchmarking Transparency)**

Used in:

* `compensation-low`
* `compensation-high`

Fields:

| Field                           | Description                          |
| ------------------------------- | ------------------------------------ |
| `segment_comp_disclosure_share` | % of segment roles that include comp |
| `market_comp_disclosure_share`  | % of market roles that include comp  |

#### **Function Evolution (Org Structure Trends)**

Used in:

* `functions-overindexed`
* `functions-underindexed`
* `new-functions`
* `retired-functions`

Fields:

| Field                 | Description                             |
| --------------------- | --------------------------------------- |
| `function_id`         | Internal JobFront job\_function\_id     |
| `is_new_function`     | Boolean                                 |
| `is_retired_function` | Boolean                                 |
| `current_share`       | Current % of hiring in this function    |
| `historical_share`    | Historical percentage                   |
| `delta_share`         | Increase or decrease vs historical norm |

***

### **Using Job + Segment IDs**

Every trend signal still supports rich joins:

| ID           | Usage                                                    |
| ------------ | -------------------------------------------------------- |
| `source_id`  | Join to your Companies / Accounts                        |
| `job_id`     | Join to the Jobs Data API for full job metadata          |
| `segment_id` | Retrieve segment attributes from `jobfront_segments_dim` |

The Trends API makes it easy to:

* Understand **where** a company is accelerating or slowing down
* Detect **expansion**, **retraction**, **specialization**, or **organizational shifts**
* Benchmark against the **market**, **industry**, **geography**, or **collections**
* Power sales & marketing intelligence, lead scoring, and lifecycle predictions

***

### Filter Signals by Category

You can use the group and category to call an endpoint and return only filtered data:

`GET /v3/signals/<group>/<category>`

For example, see below response from the 'problems' group and 'finance' category

`GET /v3/signals/problems/finance`

Response (200)

```
{
    "category": "finance",
    "group": "problems",
    "pagination": {
        "count_pages": 36,
        "count_signals": 884,
        "end_index": 25,
        "has_next": true,
        "has_prev": false,
        "page": 1,
        "per_page": 25,
        "start_index": 1
    },
    "signals": [
        {
            "created_at": 1746021751,
            "current_value": "",
            "date": "2025-04-30",
            "evidence_list": [
                "'Prepares and submits clean claims to insurance companies either electronically or by paper in an accurate, timely and compliant manner.'",
                "'Ensures financial success for University of Mississippi Medical Center through diligent approach to work and attention to detail.'",
                "'Works with operational area leaders to implement financial plans and productivity benchmarks, and to monitor progress toward financial goals.'",
                "'Assists with development of financial goals and objectives for assigned operational area.'",
                "'Processes assigned reports, worklists, and patient accounts with high accuracy and attention to detail.'",
                "'Manages the preparation of assigned operational areas' fiscal year budget including capital items.'"
            ],
            "info": {
                "category": "finance",
                "group": "problems",
                "type": "cash-flow-constraints"
            },
            "jobs_list": [
                {
                    "created_at": 1739369521,
                    "job_id": "J07213181b6744cf69dbe80e313a86273",
                    "job_title": "Patient Account Rep - SBO Cash Posting",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Rep---SBO-Cash-Posting_R00040821"
                },
                {
                    "created_at": 1738285907,
                    "job_id": "J424075c16cb540eb8706db158727dab6",
                    "job_title": "Patient Access Data Integrity Specialist I - Adult Registration",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Jackson-MS---Main-Campus/Patient-Access-Data-Integrity-Specialist-I---Adult-Registration_R00038796-1"
                },
                {
                    "created_at": 1737776510,
                    "job_id": "J4606c243f09d4a1196f4b21f8ffcb5ff",
                    "job_title": "Medical Office Assistant-Surgical Clinic-Grenada",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Grenada-MS/Medical-Office-Assistant-Surgical-Clinic-Grenada_R00040808-1"
                },
                {
                    "created_at": 1737069588,
                    "job_id": "J66af883b349a464c9c236759527c9284",
                    "job_title": "Patient Account Representative - Professional Govt FU",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---Professional-Govt-FU_R00040589-1"
                },
                {
                    "created_at": 1736960785,
                    "job_id": "J031cdf02995946a58062cecc2bb9a64c",
                    "job_title": "Patient Account Representative - SBO Cash Posting",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---SBO-Cash-Posting_R00040578-1"
                },
                {
                    "created_at": 1736960783,
                    "job_id": "J40277221abf04ca68b92e2da25155ca4",
                    "job_title": "Patient Account Representative - SBO Credit Balance",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---SBO-Credit-Balance_R00040567-1"
                },
                {
                    "created_at": 1736960782,
                    "job_id": "Jf85a6c0604fd4401addc4eb4607da25a",
                    "job_title": "Patient Account Representative - Professional Non Govt FU",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---Professional-Non-Govt-FU_R00040566-2"
                }
            ],
            "previous_value": "",
            "signal_classification": "direct",
            "signal_id": "S422e6bc858e44bc0afdcd5ad696bddb1",
            "signal_match": 2,
            "signal_recency": "inactive",
            "signal_recent_at": 1739369521,
            "signal_severity": 2,
            "signal_start_at": 1736960782,
            "source_description": "UMMC is Mississippi's only academic medical center dedicated to education, research, and healthcare.",
            "source_id": "Sf9c3f9dde4274e8386e0a54df2fecbb8",
            "source_name": "University of Mississippi Medical Center",
            "url_source": "umc.edu"
        },
        ...
    ]
}
```

### Filter Signals by Type

Finally, you can retrieve only signals at the finest level of granularity by signal type (as noted in the tables above, for each category)

`GET /v3/signals/problems/<category>/<type>`

For example, see below signal type 'cash-flow-constraints'

`GET /v3/signals/problems/finance/cash-flow-constraints`

**Response (200)**

```
{
    "category": "finance",
    "group": "problems",
    "type": "cash-flow-constraints",
    "pagination": {
        "count_pages": 36,
        "count_signals": 880,
        "end_index": 25,
        "has_next": true,
        "has_prev": false,
        "page": 1,
        "per_page": 25,
        "start_index": 1
    },
    "signals": [
        {
            "created_at": 1746021751,
            "current_value": "",
            "date": "2025-04-30",
            "evidence_list": [
                "'Prepares and submits clean claims to insurance companies either electronically or by paper in an accurate, timely and compliant manner.'",
                "'Ensures financial success for University of Mississippi Medical Center through diligent approach to work and attention to detail.'",
                "'Works with operational area leaders to implement financial plans and productivity benchmarks, and to monitor progress toward financial goals.'",
                "'Assists with development of financial goals and objectives for assigned operational area.'",
                "'Processes assigned reports, worklists, and patient accounts with high accuracy and attention to detail.'",
                "'Manages the preparation of assigned operational areas' fiscal year budget including capital items.'"
            ],
            "info": {
                "category": "finance",
                "group": "problems",
                "type": "cash-flow-constraints"
            },
            "jobs_list": [
                {
                    "created_at": 1739369521,
                    "job_id": "J07213181b6744cf69dbe80e313a86273",
                    "job_title": "Patient Account Rep - SBO Cash Posting",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Rep---SBO-Cash-Posting_R00040821"
                },
                {
                    "created_at": 1738285907,
                    "job_id": "J424075c16cb540eb8706db158727dab6",
                    "job_title": "Patient Access Data Integrity Specialist I - Adult Registration",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Jackson-MS---Main-Campus/Patient-Access-Data-Integrity-Specialist-I---Adult-Registration_R00038796-1"
                },
                {
                    "created_at": 1737776510,
                    "job_id": "J4606c243f09d4a1196f4b21f8ffcb5ff",
                    "job_title": "Medical Office Assistant-Surgical Clinic-Grenada",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Grenada-MS/Medical-Office-Assistant-Surgical-Clinic-Grenada_R00040808-1"
                },
                {
                    "created_at": 1737069588,
                    "job_id": "J66af883b349a464c9c236759527c9284",
                    "job_title": "Patient Account Representative - Professional Govt FU",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---Professional-Govt-FU_R00040589-1"
                },
                {
                    "created_at": 1736960785,
                    "job_id": "J031cdf02995946a58062cecc2bb9a64c",
                    "job_title": "Patient Account Representative - SBO Cash Posting",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---SBO-Cash-Posting_R00040578-1"
                },
                {
                    "created_at": 1736960783,
                    "job_id": "J40277221abf04ca68b92e2da25155ca4",
                    "job_title": "Patient Account Representative - SBO Credit Balance",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---SBO-Credit-Balance_R00040567-1"
                },
                {
                    "created_at": 1736960782,
                    "job_id": "Jf85a6c0604fd4401addc4eb4607da25a",
                    "job_title": "Patient Account Representative - Professional Non Govt FU",
                    "url_job": "https://ummc.wd5.myworkdayjobs.com/en-US/umccareers/job/Clinton-MS/Patient-Account-Representative---Professional-Non-Govt-FU_R00040566-2"
                }
            ],
            "previous_value": "",
            "signal_classification": "direct",
            "signal_id": "S422e6bc858e44bc0afdcd5ad696bddb1",
            "signal_match": 2,
            "signal_recency": "inactive",
            "signal_recent_at": 1739369521,
            "signal_severity": 2,
            "signal_start_at": 1736960782,
            "source_description": "UMMC is Mississippi's only academic medical center dedicated to education, research, and healthcare.",
            "source_id": "Sf9c3f9dde4274e8386e0a54df2fecbb8",
            "source_name": "University of Mississippi Medical Center",
            "url_source": "umc.edu"
        },
        ...
    ]
}
```

***

### Query Parameters

| Query Param   | Type | Default | Notes               |
| ------------- | ---- | ------- | ------------------- |
| `page`        | int  | 1       | 1-based page index. |
| `per_page`    | int  | 25      | Max 1000.           |
| `direct_only` | bool | `true`  | See below.          |
| `active_only` | bool | `true`  | See below.          |

### Direct/Inferred & Active/Inactive Signals

Direct signals have direct and immediate evidence of a particular intent. Indirect/Inferred signals represent likely issues, problems, or realities but are inferred and we typically have indirect evidence of a signal. Therefore inferred signals carry less strength vs direct signals.

Similarly, active signals are problems or intents that companies currently have. Inactive signals were signals that were previously active but are no longer active.

`GET /v3/signals/problems?direct_only=true`

| Query Param   | Default | Notes                                                                           |
| ------------- | ------- | ------------------------------------------------------------------------------- |
| `direct_only` | `true`  | `true` → only signals classified as **direct**. `false` → include **inferred**. |
| `active_only` | `true`  | `true` → only **active** signals. `false` → include **inactive** ones.          |

***

## Error Codes

| Status  | Meaning                                  |
| ------- | ---------------------------------------- |
| **400** | Missing or invalid API token.            |
| **429** | Rate limit exceeded (60 requests / min). |
| **500** | Server error.                            |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.jobfront.io/signals-data/signals-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
