Justworks Webhooks API

Manage Justworks Partner API webhooks. Justworks signs every request, delivers events at-least-once with automatic retries, and closes a webhook on sustained failures (resumable via API). Event types cover member.profile.*, member.employment_state.termination_*, and department.* lifecycle changes. A Tour-environment simulate endpoint allows partners to validate their listener without real data.

Justworks Webhooks API is one of 7 APIs that Justworks publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include Webhooks, Events, and HR. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

justworks-webhooks-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Justworks Webhooks API
  description: |
    Manage Justworks Partner API webhooks. Justworks delivers signed events
    over HTTPS to a partner-controlled URL with at-least-once semantics
    and automatic retries on failure. This API allows listing the
    webhooks registered on an installation, resuming delivery on a
    previously closed webhook, and simulating event delivery in the
    Tour environment.

    Webhook event payloads carry a top-level id, event_type,
    event_created_at, event_delivered_at, and a data object that mirrors
    the affected resource. Requests include `X-Justworks-Webhook-Signature`
    and `X-Justworks-Webhook-Signature-Timestamp` headers that must be
    verified before any payload is processed.
  version: '2026-05-25'
  contact:
    name: Justworks Partner Support
    url: https://public-api.justworks.com/v1/docs

servers:
  - url: https://public-api.justworks.com
    description: Production Server

security:
  - OAuth2: []

tags:
  - name: Webhooks
    description: List, resume, and simulate Justworks webhooks

paths:
  /v1/webhooks/get:
    post:
      summary: Justworks List Webhooks
      description: List webhooks registered on the installation, optionally filtered by open or closed status.
      operationId: listWebhooks
      tags:
        - Webhooks
      parameters:
        - name: status
          in: query
          schema:
            type: string
            enum:
              - opened
              - closed
      responses:
        '200':
          description: List of webhooks
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Webhook'

  /v1/webhooks/{webhook_id}/resume:
    post:
      summary: Justworks Resume Webhook
      description: Resume delivery on a webhook that was previously closed due to repeated failures.
      operationId: resumeWebhook
      tags:
        - Webhooks
      parameters:
        - $ref: '#/components/parameters/WebhookId'
      responses:
        '200':
          description: Webhook resumed

  /v1/webhooks/{webhook_id}/simulate:
    post:
      summary: Justworks Simulate Webhook
      description: Simulate webhook delivery in the Tour environment to validate the partner listener.
      operationId: simulateWebhook
      tags:
        - Webhooks
      parameters:
        - $ref: '#/components/parameters/WebhookId'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                payload_override:
                  type: object
                url_override:
                  type: string
                  format: uri
      responses:
        '200':
          description: Simulation accepted

components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://secure.justworks.com/oauth/authorize
          tokenUrl: https://public-api.justworks.com/oauth/token
          refreshUrl: https://public-api.justworks.com/oauth/token
          scopes: {}

  parameters:
    WebhookId:
      name: webhook_id
      in: path
      required: true
      schema:
        type: string

  schemas:
    Webhook:
      type: object
      properties:
        id:
          type: string
        url:
          type: string
          format: uri
        status:
          type: string
          enum:
            - opened
            - closed
        event_types:
          type: array
          items:
            type: string
            enum:
              - member.profile.created
              - member.profile.updated
              - member.employment_state.termination_scheduled
              - member.employment_state.termination_canceled
              - department.created
              - department.updated
              - department.deleted

    WebhookEvent:
      type: object
      description: |
        Envelope for every webhook event Justworks delivers. The `id`
        field is unique per event and can be used for idempotency on the
        partner side. The `data` payload mirrors the affected resource
        and varies by `event_type`.
      properties:
        id:
          type: string
        event_type:
          type: string
          enum:
            - member.profile.created
            - member.profile.updated
            - member.employment_state.termination_scheduled
            - member.employment_state.termination_canceled
            - department.created
            - department.updated
            - department.deleted
        event_created_at:
          type: string
          format: date-time
        event_delivered_at:
          type: string
          format: date-time
        data:
          type: object