Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/launchdarkly:launchdarkly-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Launchdarkly Webhooks API
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
version: '1.0'
description: 'Operations tagged Webhooks across 2 of this provider''s published API definitions: launchdarkly-openapi.json, launchdarkly-rest-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://app.launchdarkly.com
description: ' Default'
- url: https://app.launchdarkly.us
description: ' Federal'
- url: https://app.launchdarkly.com/api/v2
description: LaunchDarkly Production API
tags:
- name: Webhooks
description: 'The webhooks API lets you build your own integrations that subscribe to activities in LaunchDarkly. When you generate an activity in LaunchDarkly, such as when you change a flag or you create a project, LaunchDarkly sends an HTTP POST payload to the webhook''s URL. Use webhooks to update external issue trackers, update support tickets, notify customers of new feature rollouts, and more.
Several of the endpoints in the webhooks API require a webhook ID. The webhook ID is returned as part of the Creates a webhook and List webhooks responses. It is the `_id` field, or the `_id` field of each element in the `items` array.
## Designating the payload
The webhook payload is identical to an audit log entry. To learn more, read Get audit log entry.
Here''s a sample payload:
> ### Webhook delivery order
>
> Webhooks may not be delivered in chronological order. We recommend using the payload''s "date" field as a timestamp to reorder webhooks as they are received.
```json
{
"_links": {
"canonical": {
"href": "/api/v2/projects/alexis/environments/test",
"type": "application/json"
},
"parent": {
"href": "/api/v2/auditlog",
"type": "application/json"
},
"self": {
"href": "/api/v2/auditlog/57c0a8e29969090743529965",
"type": "application/json"
},
"site": {
"href": "/settings#/projects",
"type": "text/html"
}
},
"_id": "57c0a8e29969090743529965",
"date": 1472243938774,
"accesses": [
{
"action": "updateName",
"resource": "proj/alexis:env/test"
}
],
"kind": "environment",
"name": "Testing",
"description": "- Changed the name from ~~Test~~ to *Testing*",
"member": {
"_links": {
"parent": {
"href": "/internal/account/members",
"type": "application/json"
},
"self": {
"href": "/internal/account/members/548f6741c1efad40031b18ae",
"type": "application/json"
}
},
"_id": "548f6741c1efad40031b18ae",
"email": "ariel@acme.com",
"firstName": "Ariel",
"lastName": "Flores"
},
"titleVerb": "changed the name of",
"title": "Ariel Flores changed the name of Testing",
"target": {
"_links": {
"canonical": {
"href": "/api/v2/projects/alexis/environments/test",
"type": "application/json"
},
"site": {
"href": "/settings#/projects",
"type": "text/html"
}
},
"name": "Testing",
"resources": ["proj/alexis:env/test"]
}
}
```
## Signing the webhook
Optionally, you can define a `secret` when you create a webhook. If you define the secret, the webhook `POST` request will include an `X-LD-Signature header`, whose value will contain an HMAC SHA256 hex digest of the webhook payload, using the `secret` as the key.
Compute the signature of the payload using the same shared secret in your code to verify that the webhook was triggered by LaunchDarkly.
## Understanding connection retries
If LaunchDarkly receives a non-`2xx` response to a webhook `POST`, it will retry the delivery one time. Webhook delivery is not guaranteed. If you build an integration on webhooks, make sure it is tolerant of delivery failures.'
paths:
/api/v2/webhooks:
get:
responses:
'200':
description: Webhooks response
content:
application/json:
schema:
$ref: '#/components/schemas/Webhooks'
'401':
description: Invalid access token
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedErrorRep'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenErrorRep'
'429':
description: Rate limited
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitedErrorRep'
tags:
- Webhooks
summary: List webhooks
description: Fetch a list of all webhooks.
operationId: getAllWebhooks
security:
- ApiKey:
- read
- write
post:
responses:
'200':
description: Webhook response
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/InvalidRequestErrorRep'
'401':
description: Invalid access token
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedErrorRep'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenErrorRep'
'429':
description: Rate limited
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitedErrorRep'
tags:
- Webhooks
summary: Creates a webhook
description: Create a new webhook.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/webhookPost'
example:
name: apidocs test webhook
'on': true
sign: false
statements:
- actions:
- '*'
effect: allow
resources:
- proj/test
tags:
- example-tag
url: https://example.com
required: true
operationId: postWebhook
security:
- ApiKey:
- read
- write
servers:
- url: https://app.launchdarkly.com
description: ' Default'
- url: https://app.launchdarkly.us
description: ' Federal'
/api/v2/webhooks/{id}:
get:
responses:
'200':
description: Webhook response
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
'401':
description: Invalid access token
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedErrorRep'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenErrorRep'
'404':
description: Invalid resource identifier
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorRep'
'429':
description: Rate limited
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitedErrorRep'
tags:
- Webhooks
summary: Get webhook
description: Get a single webhook by ID.
parameters:
- name: id
in: path
description: The ID of the webhook
required: true
schema:
type: string
format: string
description: The ID of the webhook
operationId: getWebhook
security:
- ApiKey:
- read
- write
patch:
responses:
'200':
description: Webhook response
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/InvalidRequestErrorRep'
'401':
description: Invalid access token
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedErrorRep'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenErrorRep'
'404':
description: Invalid resource identifier
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorRep'
'429':
description: Rate limited
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitedErrorRep'
tags:
- Webhooks
summary: Update webhook
description: Update a webhook's settings. Updating webhook settings uses a JSON patch representation of the desired changes. To learn more, read Updates.
parameters:
- name: id
in: path
description: The ID of the webhook to update
required: true
schema:
type: string
format: string
description: The ID of the webhook to update
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/JSONPatch'
example:
- op: replace
path: /on
value: false
required: true
operationId: patchWebhook
security:
- ApiKey:
- read
- write
delete:
responses:
'204':
description: Action succeeded
'401':
description: Invalid access token
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedErrorRep'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenErrorRep'
'404':
description: Invalid resource identifier
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundErrorRep'
'429':
description: Rate limited
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitedErrorRep'
tags:
- Webhooks
summary: Delete webhook
description: Delete a webhook by ID.
parameters:
- name: id
in: path
description: The ID of the webhook to delete
required: true
schema:
type: string
format: string
description: The ID of the webhook to delete
operationId: deleteWebhook
security:
- ApiKey:
- read
- write
servers:
- url: https://app.launchdarkly.com
description: ' Default'
- url: https://app.launchdarkly.us
description: ' Federal'
/webhooks:
get:
operationId: listWebhooks
summary: List webhooks
description: Returns a list of all webhooks configured in the LaunchDarkly account.
tags:
- Webhooks
responses:
'200':
description: Successful response containing a list of webhooks.
content:
application/json:
schema:
$ref: '#/components/schemas/Webhooks_2'
'401':
description: Unauthorized. Invalid or missing access token.
security:
- bearerAuth: []
post:
operationId: createWebhook
summary: Create a webhook
description: Creates a new webhook subscription that will receive HTTP POST notifications when changes occur in LaunchDarkly.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookBody'
responses:
'201':
description: Webhook created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook_2'
'400':
description: Invalid request body.
'401':
description: Unauthorized. Invalid or missing access token.
security:
- bearerAuth: []
servers:
- url: https://app.launchdarkly.com/api/v2
description: LaunchDarkly Production API
/webhooks/{webhookId}:
get:
operationId: getWebhooksByWebhookId
summary: Get a webhook
description: Returns a single webhook by its identifier.
tags:
- Webhooks
parameters:
- $ref: '#/components/parameters/WebhookId'
responses:
'200':
description: Successful response containing the webhook.
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook_2'
'401':
description: Unauthorized. Invalid or missing access token.
'404':
description: Webhook not found.
security:
- bearerAuth: []
x-operation-id-source: normalized
x-operation-id-original: getWebhook
patch:
operationId: patchWebhooksByWebhookId
summary: Update a webhook
description: Updates a webhook using a JSON Patch representation.
tags:
- Webhooks
parameters:
- $ref: '#/components/parameters/WebhookId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchOperation_2'
responses:
'200':
description: Webhook updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook_2'
'400':
description: Invalid patch request.
'401':
description: Unauthorized. Invalid or missing access token.
'404':
description: Webhook not found.
security:
- bearerAuth: []
x-operation-id-source: normalized
x-operation-id-original: patchWebhook
delete:
operationId: deleteWebhooksByWebhookId
summary: Delete a webhook
description: Permanently deletes a webhook subscription.
tags:
- Webhooks
parameters:
- $ref: '#/components/parameters/WebhookId'
responses:
'204':
description: Webhook deleted successfully.
'401':
description: Unauthorized. Invalid or missing access token.
'404':
description: Webhook not found.
security:
- bearerAuth: []
x-operation-id-source: normalized
x-operation-id-original: deleteWebhook
servers:
- url: https://app.launchdarkly.com/api/v2
description: LaunchDarkly Production API
components:
schemas:
JSONPatch:
type: array
items:
$ref: '#/components/schemas/PatchOperation'
AccessDenied:
type: object
required:
- action
- reason
properties:
action:
$ref: '#/components/schemas/ActionIdentifier'
reason:
$ref: '#/components/schemas/AccessDeniedReason'
webhookPost:
type: object
required:
- url
- sign
- 'on'
properties:
name:
type: string
description: A human-readable name for your webhook
example: Example hook
url:
type: string
description: The URL of the remote webhook
example: http://www.example.com
secret:
type: string
description: If sign is true, and the secret attribute is omitted, LaunchDarkly automatically generates a secret for you.
example: frobozz
statements:
description: Represents a Custom role policy, defining a resource kinds filter the webhook should respond to.
$ref: '#/components/schemas/StatementPostList'
sign:
type: boolean
description: If sign is false, the webhook does not include a signature header, and the secret can be omitted.
example: true
'on':
type: boolean
description: Whether or not this webhook is enabled.
example: true
tags:
type: array
description: List of tags for this webhook
items:
type: string
example: []
StatementPost:
type: object
required:
- effect
properties:
resources:
type: array
description: Resource specifier strings
items:
type: string
example:
- proj/*:env/*:flag/*;testing-tag
notResources:
type: array
description: Targeted resources are the resources NOT in this list. The <code>resources</code> field must be empty to use this field.
items:
type: string
actions:
type: array
description: Actions to perform on a resource
items:
$ref: '#/components/schemas/ActionSpecifier'
example:
- '*'
notActions:
type: array
description: Targeted actions are the actions NOT in this list. The <code>actions</code> field must be empty to use this field.
items:
$ref: '#/components/schemas/ActionSpecifier'
effect:
type: string
description: Whether this statement should allow or deny actions on the resources.
example: allow
enum:
- allow
- deny
InvalidRequestErrorRep:
type: object
required:
- code
- message
properties:
code:
type: string
description: Specific error code encountered
example: invalid_request
message:
type: string
description: Description of the error
example: Invalid request body
RateLimitedErrorRep:
type: object
required:
- code
- message
properties:
code:
type: string
description: Specific error code encountered
example: rate_limited
message:
type: string
description: Description of the error
example: You've exceeded the API rate limit. Try again later.
AccessDeniedReason:
type: object
required:
- effect
properties:
resources:
type: array
description: Resource specifier strings
items:
type: string
example:
- proj/*:env/*;qa_*:/flag/*
notResources:
type: array
description: Targeted resources are the resources NOT in this list. The <code>resources</code> and <code>notActions</code> fields must be empty to use this field.
items:
type: string
actions:
type: array
description: Actions to perform on a resource
items:
$ref: '#/components/schemas/ActionSpecifier'
example:
- '*'
notActions:
type: array
description: Targeted actions are the actions NOT in this list. The <code>actions</code> and <code>notResources</code> fields must be empty to use this field.
items:
$ref: '#/components/schemas/ActionSpecifier'
effect:
type: string
description: Whether this statement should allow or deny actions on the resources.
example: allow
enum:
- allow
- deny
role_name:
type: string
UnauthorizedErrorRep:
type: object
required:
- code
- message
properties:
code:
type: string
description: Specific error code encountered
example: unauthorized
message:
type: string
description: Description of the error
example: Invalid access token
ForbiddenErrorRep:
type: object
required:
- code
- message
properties:
code:
type: string
description: Specific error code encountered
example: forbidden
message:
type: string
description: Description of the error
example: Forbidden. Access to the requested resource was denied.
ActionSpecifier:
type: string
Webhooks:
type: object
required:
- _links
- items
properties:
_links:
type: object
additionalProperties:
$ref: '#/components/schemas/Link'
description: The location and content type of related resources
items:
type: array
description: An array of webhooks
items:
$ref: '#/components/schemas/Webhook'
Link:
type: object
properties:
href:
type: string
type:
type: string
ActionIdentifier:
type: string
PatchOperation:
type: object
required:
- op
- path
properties:
op:
type: string
description: The type of operation to perform
example: replace
path:
type: string
description: A JSON Pointer string specifying the part of the document to operate on
example: /exampleField
value:
description: A JSON value used in "add", "replace", and "test" operations
example: new example value
Statement:
type: object
required:
- effect
properties:
resources:
type: array
description: Resource specifier strings
items:
type: string
example:
- proj/*:env/*;qa_*:/flag/*
notResources:
type: array
description: Targeted resources are the resources NOT in this list. The <code>resources</code> and <code>notActions</code> fields must be empty to use this field.
items:
type: string
actions:
type: array
description: Actions to perform on a resource
items:
$ref: '#/components/schemas/ActionSpecifier'
example:
- '*'
notActions:
type: array
description: Targeted actions are the actions NOT in this list. The <code>actions</code> and <code>notResources</code> fields must be empty to use this field.
items:
$ref: '#/components/schemas/ActionSpecifier'
effect:
type: string
description: Whether this statement should allow or deny actions on the resources.
example: allow
enum:
- allow
- deny
StatementPostList:
type: array
items:
$ref: '#/components/schemas/StatementPost'
Access:
type: object
required:
- denied
- allowed
properties:
denied:
type: array
items:
$ref: '#/components/schemas/AccessDenied'
allowed:
type: array
items:
$ref: '#/components/schemas/AccessAllowedRep'
NotFoundErrorRep:
type: object
required:
- code
- message
properties:
code:
type: string
description: Specific error code encountered
example: not_found
message:
type: string
description: Description of the error
example: Invalid resource identifier
AccessAllowedReason:
type: object
required:
- effect
properties:
resources:
type: array
description: Resource specifier strings
items:
type: string
example:
- proj/*:env/*;qa_*:/flag/*
notResources:
type: array
description: Targeted resources are the resources NOT in this list. The <code>resources</code> and <code>notActions</code> fields must be empty to use this field.
items:
type: string
actions:
type: array
description: Actions to perform on a resource
items:
$ref: '#/components/schemas/ActionSpecifier'
example:
- '*'
notActions:
type: array
description: Targeted actions are the actions NOT in this list. The <code>actions</code> and <code>notResources</code> fields must be empty to use this field.
items:
$ref: '#/components/schemas/ActionSpecifier'
effect:
type: string
description: Whether this statement should allow or deny actions on the resources.
example: allow
enum:
- allow
- deny
role_name:
type: string
AccessAllowedRep:
type: object
required:
- action
- reason
properties:
action:
$ref: '#/components/schemas/ActionIdentifier'
reason:
$ref: '#/components/schemas/AccessAllowedReason'
Webhook:
type: object
required:
- _links
- _id
- url
- 'on'
- tags
properties:
_links:
type: object
additionalProperties:
$ref: '#/components/schemas/Link'
description: The location and content type of related resources
_id:
type: string
description: The ID of this webhook
example: 57be1db38b75bf0772d11384
name:
type: string
description: A human-readable name for this webhook
example: Example hook
url:
type: string
description: The URL to which LaunchDarkly sends an HTTP POST payload for this webhook
example: http://www.example.com
secret:
type: string
description: The secret for this webhook
example: frobozz
statements:
type: array
description: Represents a Custom role policy, defining a resource kinds filter the webhook responds to.
items:
$ref: '#/components/schemas/Statement'
'on':
type: boolean
description: Whether or not this webhook is enabled
example: true
tags:
type: array
description: List of tags for this webhook
items:
type: string
example:
- examples
_access:
description: Details on the allowed and denied actions for this webhook
$ref: '#/components/schemas/Access'
Webhooks_2:
type: object
description: A collection of webhooks.
properties:
items:
type: array
description: The list of webhooks.
items:
$ref: '#/components/schemas/Webhook_2'
_links:
$ref: '#/components/schemas/Links'
WebhookBody:
type: object
description: The request body for creating a new webhook.
required:
- url
- 'on'
properties:
url:
type: string
format: uri
description: The URL to receive webhook POST requests.
secret:
type: string
description: A shared secret for signing webhook payloads.
'on':
type: boolean
description: Whether the webhook should be enabled.
name:
type: string
description: A human-readable name for the webhook.
tags:
type: array
description: Tags to apply to the webhook.
items:
type: string
statements:
type: array
description: Policy statements filtering which events trigger this webhook.
items:
$ref: '#/components/schemas/Statement_2'
Links:
type: object
description: HATEOAS links for navigating related resources.
properties:
self:
type: object
description: A link to this resource.
properties:
href:
type: string
description: The URL of this resource.
type:
type: string
description: The media type.
additionalProperties:
type: object
properties:
href:
type: string
description: The URL of the linked resource.
type:
type: string
description: The media type.
Webhook_2:
type: object
description: A webhook configuration for receiving change notifications.
properties:
_id:
type: string
description: The unique identifier of this webhook.
url:
type: string
format: uri
description: The URL to receive webhook POST requests.
secret:
type: string
description: The shared secret used to sign webhook payloads.
'on':
type: boolean
description: Whether this webhook is currently enabled.
name:
type: string
description: The human-readable name of this webhook.
tags:
type: array
description: Tags applied to this webhook.
items:
type: string
statements:
type: array
description: Policy statements filtering which events trigger this webhook.
items:
$ref: '#/components/schemas/Statement_2'
_links:
$ref: '#/components/schemas/Links'
PatchOperation_2:
type: object
description: A JSON Patch or semantic patch request.
properties:
patch:
type: array
description: An array of JSON Patch operations.
items:
type: object
required:
- op
- path
properties:
op:
type: string
description: The patch operation type.
enum:
- add
- remove
- replace
- move
- copy
- test
path:
type: string
description: The JSON Pointer path to the target field.
value:
description: The value to apply for add or replace operations.
comment:
type: string
description: An optional comment describing the change.
Statement_2:
type: object
description: A policy statement controlling resource access or event filtering.
properties:
effect:
type: string
description: Whether this statement allows or denies the action.
enum:
- allow
- deny
resources:
type: array
description: Resource specifiers this statement applies to.
items:
type: string
notResources:
type: array
description: Resource specifiers this statement does not apply to.
items:
type: string
actions:
type: array
description: The actions this statement applies to.
items:
type: string
notActions:
type: array
description: The actions this statement does not apply to.
items:
type: string
parameters:
WebhookId:
name: webhookId
in: path
required: true
description: The unique identifier of a webhook.
schema:
type: string
securitySchemes:
ApiKey:
type: apiKey
in: header
name: Authorization
bearerAuth:
type: http
scheme: bearer
description: LaunchDarkly API access token. Create personal or service tokens in the LaunchDarkly dashboard under Account Settings.
externalDocs:
description: LaunchDarkly API Documentation
url: https://apidocs.launchdarkly.com/
x-refined-from:
- launchdarkly-openapi.json
- launchdarkly-rest-api-openapi.yml