> ## Documentation Index
> Fetch the complete documentation index at: https://docs.airscale.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List new hire events

> Read cursor-paginated new hires, filtered by hire type and date, with their webhook delivery receipts. Rate limit: 120 requests per fixed minute per API key, shared by all new hire monitor endpoints.

> [!NOTE]
>
> New hire monitoring requires a **V2 workspace API key**. Legacy V1 API keys are not supported by these endpoints. Monitors and their credits belong to the V2 workspace associated with the key.

List the new hires delivered to the results table for one monitor, newest first. Set `limit` from 1 to 100 (default 50), filter with `type` (`all`, `external`, `internal`), and `from` and `to` (`YYYY-MM-DD`, UTC, inclusive). When `next_cursor` is not `null`, send it unchanged as `cursor` **with the same filters**; a cursor used with different filters returns `422 invalid_event_cursor`. Unknown query parameters return `422 invalid_event_page`.

Each event has `hire_type`, `person` (`name`, `linkedin_url`, `location`), `title`, `start_date` (the reported start month `YYYY-MM`, or `null`), `company` (`name`, `linkedin_company_id`, `linkedin_url`), `previous_title`, `previous_company_name`, `detected_at`, and `read_at`. Unknown fields are `null`. This endpoint is also the durable fallback when webhook delivery is delayed or unavailable.

## Webhook delivery receipts

Each event carries a `webhook` object, or `null` when no delivery exists. `status` is `pending`, `sending`, `retryable`, `sent`, `failed`, `uncertain`, or `cancelled`, with `attempt_count`, `last_attempt_at`, `sent_at`, and `error_code` (for example `webhook_http_410` or `webhook_configuration_changed`). `uncertain` means a timeout or dropped connection: the request may have been received. Use [Redeliver a webhook](https://docs.airscale.io/api-reference/new-hire-monitors/events/redeliver.md) to send an event again.

## Next step

Use [Mark an event as read](https://docs.airscale.io/api-reference/new-hire-monitors/events/read.md) after your application has processed an event.


## OpenAPI

````yaml openapi.json GET /v1/new-hire-monitors/{monitor_id}/events
openapi: 3.1.0
info:
  title: Airscale Public API
  version: '2026-09-11'
  description: >-
    Search, enrich, resolve public business data, and monitor job changes with
    Airscale.
  x-airscale-source-repository: ViceScale/airscale-code
  x-airscale-source-sha: 1de19e1b70a052a4b8d9c2075021a7e5e7a94d51
servers:
  - url: https://api.airscale.io
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Search and discovery
    description: Search people, companies, and the web.
  - name: Contact data
    description: Find professional and personal contact data.
  - name: Profiles and reverse lookup
    description: Extract profiles or resolve a person from known contact data.
  - name: Post engagement
    description: Retrieve and enrich people who liked or commented on LinkedIn posts.
  - name: LinkedIn content
    description: >-
      Search LinkedIn posts, read profile and company feeds, and retrieve
      profile comments and comment reactions.
  - name: Job change monitoring
    description: Track LinkedIn profiles and receive job-change events.
  - name: New hire monitoring
    description: Watch companies or the market for people who start a matching role.
  - name: Post engagement monitoring
    description: >-
      Follow LinkedIn company pages and profiles and receive the people who
      engage with their posts.
  - name: Account
    description: Inspect workspace account state.
  - name: Miscellaneous
    description: >-
      Find website technologies and check WhatsApp availability, Meta ads, and
      email deliverability.
paths:
  /v1/new-hire-monitors/{monitor_id}/events:
    get:
      tags:
        - New hire monitoring
      summary: List new hire events
      description: >-
        Returns cursor-paginated new hire events, newest first, each with its
        webhook delivery receipt. Filter by hire type and detection date. Send
        next_cursor unchanged, with the same filters, on the next request.
        Requires a V2 workspace API key. Legacy V1 API keys are not supported.
        Monitors and their credits belong to the V2 workspace.
      operationId: listNewHireMonitorEvents
      parameters:
        - name: monitor_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          example: 61111111-1111-4111-8111-111111111111
        - name: limit
          in: query
          required: false
          description: Number of events to return, from 1 to 100. Defaults to 50.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
          example: 50
        - name: type
          in: query
          required: false
          description: Only external hires, only internal moves, or both.
          schema:
            type: string
            enum:
              - all
              - external
              - internal
            default: all
          example: all
        - name: from
          in: query
          required: false
          description: First detection date to include, YYYY-MM-DD in UTC (inclusive).
          schema:
            type: string
            format: date
          example: '2026-11-01'
        - name: to
          in: query
          required: false
          description: >-
            Last detection date to include, YYYY-MM-DD in UTC (inclusive). Must
            not precede from.
          schema:
            type: string
            format: date
          example: '2026-11-30'
        - name: cursor
          in: query
          required: false
          description: >-
            Opaque cursor from the preceding response. It is only valid with the
            same type, from and to.
          schema:
            type: string
            minLength: 1
            maxLength: 1024
          example: eyJzY29wZSI6IltdIn0
      responses:
        '200':
          description: The requested event page.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                  - events
                  - next_cursor
                properties:
                  events:
                    type: array
                    items:
                      $ref: '#/components/schemas/NewHireEventWithWebhook'
                  next_cursor:
                    type:
                      - string
                      - 'null'
              examples:
                success:
                  summary: Successful response
                  value:
                    events:
                      - id: 63333333-3333-4333-8333-333333333333
                        monitor_id: 61111111-1111-4111-8111-111111111111
                        detected_at: '2026-11-09T10:05:00.000Z'
                        hire_type: external
                        person:
                          name: Example Person
                          linkedin_url: https://www.linkedin.com/in/example-person
                          location: Paris, France
                        title: VP Sales
                        start_date: 2026-10
                        company:
                          name: Example Company
                          linkedin_company_id: null
                          linkedin_url: null
                        previous_title: Director of Sales
                        previous_company_name: Example Previous Company
                        read_at: null
                        webhook:
                          status: sent
                          attempt_count: 1
                          last_attempt_at: '2026-11-09T10:06:00.000Z'
                          sent_at: '2026-11-09T10:06:01.000Z'
                          error_code: null
                    next_cursor: null
        '401':
          $ref: '#/components/responses/MonitorUnauthorized'
        '404':
          description: monitor_not_found in this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorApiError'
              examples:
                error:
                  summary: Error response
                  value:
                    error:
                      code: monitor_not_found
                      message: Monitor not found
        '422':
          description: >-
            invalid_event_page (limit outside 1–100, an invalid date, from after
            to, or an unknown query parameter) or invalid_event_cursor
            (malformed, or used with different filters).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorApiError'
              examples:
                error:
                  summary: Error response
                  value:
                    error:
                      code: invalid_event_page
                      message: Number must be less than or equal to 100
        '429':
          description: >-
            The API key has exceeded 120 requests in the current minute across
            new hire monitor endpoints. Wait for the Retry-After seconds before
            retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                error:
                  summary: Error response
                  value:
                    error: Too Many Requests
                    message: 'Rate limit exceeded: 120 requests per minute'
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: string
              example: '60'
        '503':
          description: 'service_unavailable: new hire monitoring is temporarily unavailable.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorApiError'
components:
  schemas:
    NewHireEventWithWebhook:
      type: object
      additionalProperties: false
      required:
        - id
        - monitor_id
        - detected_at
        - hire_type
        - person
        - title
        - start_date
        - company
        - previous_title
        - previous_company_name
        - read_at
        - webhook
      properties:
        id:
          type: string
          format: uuid
        monitor_id:
          type: string
          format: uuid
        detected_at:
          type: string
          format: date-time
        hire_type:
          type:
            - string
            - 'null'
          enum:
            - external
            - internal
            - null
        person:
          $ref: '#/components/schemas/NewHirePerson'
        title:
          type:
            - string
            - 'null'
        start_date:
          type:
            - string
            - 'null'
          pattern: ^\d{4}-\d{2}$
          description: The reported start month (YYYY-MM), or null.
        company:
          $ref: '#/components/schemas/NewHireEventCompany'
        previous_title:
          type:
            - string
            - 'null'
        previous_company_name:
          type:
            - string
            - 'null'
        read_at:
          type:
            - string
            - 'null'
          format: date-time
        webhook:
          description: >-
            The webhook delivery receipt for this event, or null when no
            delivery exists.
          oneOf:
            - $ref: '#/components/schemas/MonitorWebhookDelivery'
            - type: 'null'
    MonitorApiError:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: object
          additionalProperties: false
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
    Error:
      type: object
      additionalProperties: true
      properties:
        error:
          type: string
        message:
          type: string
    NewHirePerson:
      type: object
      additionalProperties: false
      required:
        - name
        - linkedin_url
        - location
      properties:
        name:
          type:
            - string
            - 'null'
        linkedin_url:
          type:
            - string
            - 'null'
        location:
          type:
            - string
            - 'null'
    NewHireEventCompany:
      type: object
      additionalProperties: false
      required:
        - name
        - linkedin_company_id
        - linkedin_url
      properties:
        name:
          type:
            - string
            - 'null'
        linkedin_company_id:
          type:
            - string
            - 'null'
        linkedin_url:
          type:
            - string
            - 'null'
          description: >-
            https://www.linkedin.com/company/{linkedin_company_id}, or null when
            the ID is unknown.
    MonitorWebhookDelivery:
      type: object
      additionalProperties: false
      required:
        - status
        - attempt_count
        - last_attempt_at
        - sent_at
        - error_code
      properties:
        status:
          type: string
          enum:
            - pending
            - sending
            - retryable
            - sent
            - failed
            - uncertain
            - cancelled
          description: >-
            uncertain means a timeout or dropped connection: the request may
            have been received. It is never resent automatically.
        attempt_count:
          type: integer
          minimum: 0
        last_attempt_at:
          type:
            - string
            - 'null'
          format: date-time
        sent_at:
          type:
            - string
            - 'null'
          format: date-time
        error_code:
          type:
            - string
            - 'null'
          description: >-
            For example webhook_http_410, webhook_url_rejected or
            webhook_configuration_changed.
  responses:
    MonitorUnauthorized:
      description: >-
        A missing Bearer token returns
        {"error":"Unauthorized","message":"Missing or invalid bearer token"}. An
        unknown API key returns invalid_api_key.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/MonitorApiError'
              - $ref: '#/components/schemas/Error'
          examples:
            invalidKey:
              summary: Unknown API key
              value:
                error:
                  code: invalid_api_key
                  message: The API key is not valid
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Use an Airscale workspace API key. Never expose the key in client-side
        code.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.