Create webhook
POST/v2/webhooks
Creates a new webhook with settings provided by the webhook object passed as JSON in the payload. The response is the created webhook object.
To avoid duplicating a webhook, use the idempotencyKey parameter in the
request body.
Multiple calls to create a webhook with the same idempotencyKey will only
create the webhook with the first call and return the existing webhook on
subsequent calls.
Idempotency keys must be unique, so use a UUID or another random string with
enough entropy.
To assign the new webhook to an Actor or task, the request body must contain
requestUrl, eventTypes, and condition properties.
requestUrlis the webhook's target URL, to which data is sent as a POST request with a JSON payload.eventTypesis a list of events that will trigger the webhook, e.g. when the Actor run succeeds.conditionshould be an object containing the ID of the Actor or task to which the webhook will be assigned.payloadTemplateis a JSON-like string, whose syntax is extended with the use of variables.headersTemplateis a JSON-like string, whose syntax is extended with the use of variables. Following values will be re-written to defaults: "host", "Content-Type", "X-Apify-Webhook", "X-Apify-Webhook-Dispatch-Id", "X-Apify-Request-Origin"descriptionis an optional string.shouldInterpolateStringsis a boolean indicating whether to interpolate variables contained inside strings in thepayloadTemplate
"isAdHoc" : false,
"requestUrl" : "https://example.com",
"eventTypes" : [
"ACTOR.RUN.SUCCEEDED",
"ACTOR.RUN.ABORTED"
],
"condition" : {
"actorId": "5sTMwDQywwsLzKRRh",
"actorTaskId" : "W9bs9JE9v7wprjAnJ"
},
"payloadTemplate": "",
"headersTemplate": "",
"description": "my awesome webhook",
"shouldInterpolateStrings": false,
Important: The request must specify the Content-Type: application/json
HTTP header.
Request
Query Parameters
Bodyrequired
- isAdHoc boolean | null nullableExample:
false - eventTypes WebhookEventType (string)[] required
Possible values: [
Example:ACTOR.BUILD.ABORTED,ACTOR.BUILD.CREATED,ACTOR.BUILD.FAILED,ACTOR.BUILD.SUCCEEDED,ACTOR.BUILD.TIMED_OUT,ACTOR.RUN.ABORTED,ACTOR.RUN.CREATED,ACTOR.RUN.FAILED,ACTOR.RUN.RESURRECTED,ACTOR.RUN.SUCCEEDED,ACTOR.RUN.TIMED_OUT,TEST]["ACTOR.RUN.SUCCEEDED"] condition object required
- actorId string | null nullableExample:
hksJZtadYvn4mBuin - actorTaskId string | null nullableExample:
asdLZtadYvn4mBZmm - actorRunId string | null nullableExample:
hgdKZtadYvn4mBpoi
- actorId string | null nullableExample:
- idempotencyKey string | null nullableExample:
fdSJmdP3nfs7sfk3y - ignoreSslErrors boolean | null nullableExample:
false - doNotRetry boolean | null nullableExample:
false - requestUrl string<uri> requiredExample:
http://example.com/ - payloadTemplate string | null nullableExample:
{\n "userId": {{userId}}... - headersTemplate string | null nullableExample:
{\n "Authorization": "Bearer ..."} - title string | null nullableExample:
Actor run succeeded webhook - description string | null nullableExample:
this is webhook description - shouldInterpolateStrings boolean | null nullableExample:
false
Status 201
Response Headers
- Location
{
"data": {
"id": "YiKoxjkaS9gjGTqhF",
"createdAt": "2019-12-12T07:34:14.202Z",
"modifiedAt": "2019-12-13T08:36:13.202Z",
"userId": "wRsJZtadYvn4mBZmm",
"isAdHoc": false,
"shouldInterpolateStrings": false,
"eventTypes": [
"ACTOR.RUN.SUCCEEDED"
],
"condition": {
"actorId": "hksJZtadYvn4mBuin",
"actorTaskId": "asdLZtadYvn4mBZmm",
"actorRunId": "hgdKZtadYvn4mBpoi"
},
"ignoreSslErrors": false,
"doNotRetry": false,
"requestUrl": "http://example.com/",
"payloadTemplate": "{\\n \"userId\": {{userId}}...",
"headersTemplate": "{\\n \"Authorization\": \"Bearer ...\"}",
"title": "Actor run succeeded webhook",
"description": "this is webhook description",
"lastDispatch": {
"status": "ACTIVE",
"finishedAt": "2019-12-13T08:36:13.202Z"
},
"stats": {
"totalDispatches": 1
}
}
}
Schema
data object required
- id string requiredExample:
YiKoxjkaS9gjGTqhF - createdAt string<date-time> requiredExample:
2019-12-12T07:34:14.202Z - modifiedAt string<date-time> requiredExample:
2019-12-13T08:36:13.202Z - userId string requiredExample:
wRsJZtadYvn4mBZmm - isAdHoc boolean | null nullableExample:
false - shouldInterpolateStrings boolean | null nullableExample:
false - eventTypes WebhookEventType (string)[] required
Possible values: [
Example:ACTOR.BUILD.ABORTED,ACTOR.BUILD.CREATED,ACTOR.BUILD.FAILED,ACTOR.BUILD.SUCCEEDED,ACTOR.BUILD.TIMED_OUT,ACTOR.RUN.ABORTED,ACTOR.RUN.CREATED,ACTOR.RUN.FAILED,ACTOR.RUN.RESURRECTED,ACTOR.RUN.SUCCEEDED,ACTOR.RUN.TIMED_OUT,TEST]["ACTOR.RUN.SUCCEEDED"] condition object required
- actorId string | null nullableExample:
hksJZtadYvn4mBuin - actorTaskId string | null nullableExample:
asdLZtadYvn4mBZmm - actorRunId string | null nullableExample:
hgdKZtadYvn4mBpoi
- actorId string | null nullableExample:
- ignoreSslErrors boolean requiredExample:
false - doNotRetry boolean | null nullableExample:
false - requestUrl string<uri> requiredExample:
http://example.com/ - payloadTemplate string | null nullableExample:
{\n "userId": {{userId}}... - headersTemplate string | null nullableExample:
{\n "Authorization": "Bearer ..."} - title string | null nullableExample:
Actor run succeeded webhook - description string | null nullableExample:
this is webhook description lastDispatch object
- anyOf
- ExampleWebhookDispatch
- null
- status WebhookDispatchStatus (string) required
Status of the webhook dispatch indicating whether the HTTP request was successful.
Possible values: [
ACTIVE,SUCCEEDED,FAILED] - finishedAt string<date-time> requiredExample:
2019-12-13T08:36:13.202Z
stats object
- anyOf
- WebhookStats
- null
- totalDispatches integer requiredExample:
1
- id string requiredExample:
Status 400
Bad request - invalid input parameters or request body.
{
"error": {
"type": "invalid-input",
"message": "Invalid input: The request body contains invalid data."
}
}
Schema
error object required
- type string requiredExample:
run-failed - message string requiredExample:
Actor run did not succeed (run ID: 55uatRrZib4xbZs, status: FAILED)
- type string requiredExample: