# Contact Signals

Retrieve signal events for a list of contacts — job changes and promotions.

Pass up to 100 contact ids. Use signalTypes to specify which events to return (promotion, companyChange, or allSignals). Optionally set a startDate to limit results to recent activity.

> Billing: Charged per matched signal per result via the showSignalsContact action.

Endpoint: POST /v3/contacts/signals
Security: ApiKeyAuth

## Request fields (application/json):

  - `ids` (array, required)
    Example: ["4389064624","4389064654"]

  - `signalTypes` (array, required)
    Enum: "allSignals", "promotion", "companyChange"

  - `startDate` (string)
    Example: "2025-01-01"

  - `maxResultsPerSignal` (integer)
    Example: 10

## Response 200 fields (application/json):

  - `results` (array)

  - `results.id` (string)
    Example: "4389064624"

  - `results.companyChange` (array)

  - `results.promotion` (array)

  - `startDate` (string)

  - `endDate` (string)

  - `billing` (object)
    Credit usage summary for a V3 API request

  - `billing.creditsCharged` (integer)
    Total credits charged for this request
    Example: 3

  - `billing.resultsReturned` (integer)
    Number of successful results returned
    Example: 1

## Response 400 fields (application/json):

  - `statusCode` (integer, required)
    HTTP status code
    Example: 400

  - `message` (string, required)
    Error message
    Example: "Validation failed"

  - `errors` (array)
    Detailed error messages (optional, only for validation errors)
    Example: ["entityType must be one of: contact, company"]


