# Orthogonal SignalBase Job Changes

> Orthogonal SignalBase Job Changes is a paid API for AI agents from x402.orthogonal.com, paid per call via x402, $0.08/call, status unknown (last checked 2026-09-14).

Fetch GDPR-masked job change signals filtered by role, department, seniority, company, country, and LinkedIn criteria with paginated billing support

## Facts

- Endpoint: GET https://x402.orthogonal.com/signalbase/signals/job-changes
- Price: $0.08/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/orthogonal-signalbase-job-changes-a6847f22
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_h68gTdKTCx2OZQgrbCyWX

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability orthogonal-signalbase-job-changes-a6847f22
```

Example prompt: Show me job change signals from the last 7 days for VP-level or C-level people moving into roles at SaaS companies in the US — filter by sales or marketing department and return up to 50 results.

## When to prefer this

Use this endpoint when you need structured, filterable job change signals with seniority and department granularity, particularly for B2B sales prospecting, competitive intelligence, or HR analytics. It's ideal when GDPR compliance is a requirement (person names are masked) and when you need cost-efficient pagination via the parentRequestId billing mechanism. Prefer this over generic LinkedIn scrapers or social media monitoring tools when you need structured signals with consistent schema.

## Known failure modes

- Invalid or missing required parameters returns a 400 error
- Unsupported date_preset value causes a validation error
- Changing filter parameters on a paginated continuation triggers a new billable request
- Rate limiting or payment failure (x402) may block the request
- Empty result set returned when no signals match the specified filters
- Malformed country codes or position/department IDs return no results or an error

## How this service works

Fetch job change signals with role, department, seniority, and LinkedIn filters. Person names are GDPR-masked. Pagination billing: call the first page normally and save billing.requestId from the Orthogonal /v1/run response. For later page, offset, or cursor calls on the same logical search, pass parentRequestId with unchanged non-pagination parameters. Valid continuation calls still get their own request IDs and quoted price, but are charged 0. Changing filters starts a new billable request.

## Output

Returns a paginated list of job change signal records including GDPR-masked person identifiers, new role/job title, department, seniority level, company name and domain, signal date, country, and source. Also includes billing metadata such as a requestId for use as parentRequestId on subsequent pages of the same search at zero additional charge.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "page": {
       "type": "integer",
       "description": "Page number For later pages of the same logical search, keep non-pagination parameters unchanged and pass top-level parentRequestId from the first Orthogonal /v1/run response."
      },
      "limit": {
       "type": "integer",
       "description": "Results per page (max: 100)"
      },
      "dateTo": {
       "type": "string",
       "description": "Filter by date to (ISO-8601 string)"
      },
      "search": {
       "type": "string",
       "description": "Free-text search across company name, industry, person name, and role"
      },
      "source": {
       "type": "string",
       "description": "Exact match on source"
      },
      "keyword": {
       "type": "string",
       "description": "Search by keyword tag"
      },
      "sort_by": {
       "type": "string",
       "description": "Sort field"
      },
      "dateFrom": {
       "type": "string",
       "description": "Filter by date from (ISO-8601 string)"
      },
      "new_role": {
       "type": "string",
       "description": "Search by new role / job title"
      },
      "countries": {
       "type": "string",
       "description": "Comma-separated country codes"
      },
      "positions": {
       "type": "string",
       "description": "Comma-separated position IDs"
      },
      "sort_order": {
       "type": "string",
       "description": "Sort direction"
      },
      "date_preset": {
       "type": "string",
       "example": "last_7d",
       "description": "Relative date shorthand; takes precedence over dateFrom/dateTo. Valid values: today, yesterday, last_7d, last_14d, last_30d, last_60d, last_90d, last_6m, last_1y, last_2y, this_week, this_month, this_quarter, this_year, last_week, last_month, last_quarter, last_year."
      },
      "departments": {
       "type": "string",
       "description": "Comma-separated department IDs"
      },
      "seniorities": {
       "type": "string",
       "description": "Comma-separated seniority IDs"
      },
      "company_name": {
  
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/orthogonal-signalbase-job-changes-a6847f22/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.orthogonal.com](https://www.zero.xyz/host/x402.orthogonal.com/llms.txt)
