LaunchDarkly Webhooks API

The LaunchDarkly Webhooks API allows developers to build custom integrations that subscribe to activity events within LaunchDarkly. When actions occur such as flag changes, project creation, or environment modifications, LaunchDarkly sends HTTP POST payloads to configured webhook URLs. This enables use cases like updating external issue trackers, notifying support systems of feature rollouts, and triggering downstream automation workflows based on feature flag lifecycle events.

AsyncAPI Specification

launchdarkly-webhooks-asyncapi.yml Raw ↑
asyncapi: 2.6.0
info:
  title: LaunchDarkly Webhooks Events
  description: >-
    LaunchDarkly sends webhook notifications as HTTP POST requests when
    changes occur within the platform. The webhook payload format is
    identical to audit log entries and includes details about what changed,
    who made the change, and when it occurred. Webhooks may not be
    delivered in chronological order, so consumers should use the payload
    date field as a timestamp to reorder events. Payloads can be verified
    using HMAC-SHA256 signature validation with a shared secret.
  version: '2.0'
  contact:
    name: LaunchDarkly Support
    url: https://support.launchdarkly.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  externalDocs:
    description: LaunchDarkly Webhooks Documentation
    url: https://launchdarkly.com/docs/api/webhooks
servers:
  webhookReceiver:
    url: '{webhookUrl}'
    protocol: https
    description: >-
      The customer-configured webhook endpoint URL that receives
      HTTP POST notifications from LaunchDarkly.
    variables:
      webhookUrl:
        description: >-
          The URL configured in the LaunchDarkly webhook settings.
    security:
      - hmacSignature: []
channels:
  /webhook:
    description: >-
      LaunchDarkly sends audit log events to this channel when changes
      occur in the platform. Events can be filtered using policy
      statements configured on the webhook. By default, all flag
      change events in the production environment are sent.
    publish:
      operationId: receiveWebhookEvent
      summary: Receive a webhook event from LaunchDarkly
      description: >-
        Receives an HTTP POST notification from LaunchDarkly containing
        an audit log event payload. The event describes a change made
        to a resource such as a feature flag, project, environment,
        segment, or other LaunchDarkly resource.
      message:
        oneOf:
          - $ref: '#/components/messages/FlagChangeEvent'
          - $ref: '#/components/messages/ProjectChangeEvent'
          - $ref: '#/components/messages/EnvironmentChangeEvent'
          - $ref: '#/components/messages/SegmentChangeEvent'
          - $ref: '#/components/messages/MemberChangeEvent'
          - $ref: '#/components/messages/GenericChangeEvent'
components:
  securitySchemes:
    hmacSignature:
      type: httpApiKey
      name: X-LD-Signature
      in: header
      description: >-
        HMAC-SHA256 signature of the request body computed using the
        shared secret configured on the webhook. Consumers should
        compute the signature of the payload using the same shared
        secret and compare it to this header value to verify
        authenticity.
  messages:
    FlagChangeEvent:
      name: FlagChangeEvent
      title: Feature Flag Change Event
      summary: >-
        An event triggered when a feature flag is created, updated,
        or deleted.
      contentType: application/json
      headers:
        type: object
        properties:
          X-LD-Signature:
            type: string
            description: >-
              HMAC-SHA256 signature for payload verification.
      payload:
        $ref: '#/components/schemas/AuditLogEvent'
      examples:
        - name: flagToggled
          summary: A feature flag was toggled on
          payload:
            _id: 615a8b3d1234567890abcdef
            date: 1633312573000
            kind: flag
            name: dark-mode
            description: '**dark-mode** turned on in **production**'
            shortDescription: turned on
            accesses:
              - action: updateOn
                resource: proj/default:env/production:flag/dark-mode
            member:
              _id: 507f1f77bcf86cd799439011
              email: [email protected]
              firstName: Jane
              lastName: Developer
    ProjectChangeEvent:
      name: ProjectChangeEvent
      title: Project Change Event
      summary: >-
        An event triggered when a project is created, updated,
        or deleted.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/AuditLogEvent'
    EnvironmentChangeEvent:
      name: EnvironmentChangeEvent
      title: Environment Change Event
      summary: >-
        An event triggered when an environment is created, updated,
        or deleted.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/AuditLogEvent'
    SegmentChangeEvent:
      name: SegmentChangeEvent
      title: Segment Change Event
      summary: >-
        An event triggered when a user segment is created, updated,
        or deleted.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/AuditLogEvent'
    MemberChangeEvent:
      name: MemberChangeEvent
      title: Member Change Event
      summary: >-
        An event triggered when an account member is invited,
        updated, or removed.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/AuditLogEvent'
    GenericChangeEvent:
      name: GenericChangeEvent
      title: Generic Change Event
      summary: >-
        A catch-all event for any change to a LaunchDarkly resource
        that does not have a more specific event type defined.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/AuditLogEvent'
  schemas:
    AuditLogEvent:
      type: object
      description: >-
        An audit log event representing a change made to a resource
        in LaunchDarkly. This is the standard payload format for
        webhook notifications.
      required:
        - _id
        - date
        - kind
        - name
      properties:
        _id:
          type: string
          description: >-
            The unique identifier of this audit log event.
        date:
          type: integer
          format: int64
          description: >-
            Unix epoch timestamp in milliseconds when the change
            occurred. Use this field to reorder webhook events since
            they may not arrive in chronological order.
        kind:
          type: string
          description: >-
            The kind of resource that was changed.
          enum:
            - flag
            - project
            - environment
            - segment
            - metric
            - member
            - role
            - webhook
            - integration
            - token
            - destination
            - relay-proxy-config
            - experiment
            - team
            - release-pipeline
        name:
          type: string
          description: >-
            The name of the resource that was changed.
        description:
          type: string
          description: >-
            A markdown-formatted description of the changes made
            to the resource.
        shortDescription:
          type: string
          description: >-
            A brief plain-text summary of the change.
        comment:
          type: string
          description: >-
            An optional comment provided by the member who made
            the change.
        accesses:
          type: array
          description: >-
            The access details describing what action was taken
            and on which resource.
          items:
            $ref: '#/components/schemas/Access'
        member:
          $ref: '#/components/schemas/MemberRef'
        titleVerb:
          type: string
          description: >-
            The verb describing the action taken, such as "created",
            "updated", or "deleted".
        title:
          type: string
          description: >-
            A human-readable title for the event.
        target:
          type: object
          description: >-
            Details about the target resource of the change.
          properties:
            _links:
              type: object
              description: >-
                Links to the target resource.
              additionalProperties:
                type: object
                properties:
                  href:
                    type: string
                    description: >-
                      The URL of the linked resource.
                  type:
                    type: string
                    description: >-
                      The media type.
            name:
              type: string
              description: >-
                The name of the target resource.
            resources:
              type: array
              description: >-
                The resource specifiers for the target.
              items:
                type: string
        _links:
          type: object
          description: >-
            HATEOAS links to related resources.
          additionalProperties:
            type: object
            properties:
              href:
                type: string
                description: >-
                  The URL of the linked resource.
              type:
                type: string
                description: >-
                  The media type.
    Access:
      type: object
      description: >-
        An access record describing what action was performed
        on which resource.
      properties:
        action:
          type: string
          description: >-
            The action that was performed, such as "createFlag",
            "updateOn", "deleteFlag", or "updateTargets".
        resource:
          type: string
          description: >-
            A resource specifier in the format
            "proj/{projKey}:env/{envKey}:flag/{flagKey}" identifying
            the affected resource.
    MemberRef:
      type: object
      description: >-
        A reference to the account member who made the change.
      properties:
        _id:
          type: string
          description: >-
            The unique identifier of the member.
        email:
          type: string
          format: email
          description: >-
            The email address of the member.
        firstName:
          type: string
          description: >-
            The first name of the member.
        lastName:
          type: string
          description: >-
            The last name of the member.
        _links:
          type: object
          description: >-
            Links related to the member.
          additionalProperties:
            type: object
            properties:
              href:
                type: string
                description: >-
                  The URL.
              type:
                type: string
                description: >-
                  The media type.