---
title: "Create a job change monitor"
method: POST
path: "/job-change-monitors"
tags: ["Monitoring"]
---

# Create a job change monitor

`POST /job-change-monitors`

## Request

- Base URL: `https://app.1lookup.io/api/v1`
- URL: `https://app.1lookup.io/api/v1/job-change-monitors`
- Auth: HTTP bearer

Job Change Monitoring (beta): rechecks a list of public professional profiles weekly and records an event when someone changes company or title. Creating and managing monitors is free; each weekly recheck costs 5 credits per contact, and nothing for a profile that cannot be reached. Up to 3 active monitors per account.

## Request body

- object
  - `name` string, required: Monitor name.
  - `alert_email` boolean: Email the account when a contact changes.
  - `webhook_url` string: https URL to call on each change. The response carries a `webhook_secret` to verify the `X-1Lookup-Signature` header.

## Response `201`

Monitor created.

- object
  - `success` true, required
  - `data` object, required
    - `monitor` JobChangeMonitor, required
      - `id` string, required
      - `name` string, required
      - `frequency` 'weekly', required
      - `alert_email` boolean, required
      - `webhook_url` string, nullable, required
      - `active` boolean, required
      - `contact_count` integer: Only in the list response.
      - `last_run_at` string, nullable: Only in the list response.
      - `created_at` string, date-time, required
    - `webhook_secret` string, nullable, required: Returned once, at creation, when a webhook was set.

## Other responses

- `400`: `INVALID_REQUEST`: The body is not valid JSON; `INVALID_INPUT`: The input does not match the expected format; `INVALID_WEBHOOK_URL`: `webhook_url` is not an https URL that can receive webhooks
- `401`: `UNAUTHORIZED`: Invalid or missing API key
- `403`: `UPGRADE_REQUIRED`: The account has no paid plan, and API access needs one. Upgrade at https://app.1lookup.io/billing?tab=plan; `INSUFFICIENT_SCOPE`: The call was signed with an AI connector (MCP) sign-in, which can only reach /phone, /email, /ip and /account. Use an API key
- `409`: `LIMIT_REACHED`: An account or monitor limit was reached (active monitors, or numbers or contacts per monitor); `NO_MONITOR_OWNER`: The organization has no active owner or admin to own the monitor
- `429`: `RATE_LIMIT_EXCEEDED`: Too many requests
- `500`: `INTERNAL_ERROR`: Internal server error
- `503`: `SERVICE_UNAVAILABLE`: The lookup service, or the API key check, is temporarily unavailable. Nothing was charged; retry after `Retry-After` seconds

---

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