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
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 ..."} - 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 ...\"}",
"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 ..."} - 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,null<date-time> nullableExample:
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:
Status 401
Unauthorized - authentication required or invalid token.
{
"error": {
"type": "token-not-valid",
"message": "Authentication token is not valid."
}
}
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:
Status 403
Forbidden - insufficient permissions to perform this action.
{
"error": {
"type": "permission-denied",
"message": "You do not have permission to perform this action."
}
}
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:
Status 405
Method not allowed.
{
"error": {
"type": "method-not-allowed",
"message": "This API end-point can only be accessed using the following HTTP methods: OPTIONS,GET"
}
}
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:
Status 413
Payload too large - the request body exceeds the size limit.
{
"error": {
"type": "request-too-large",
"message": "The POST payload is too large (limit: 9437184 bytes, actual length: 10485760 bytes)."
}
}
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:
Status 415
Unsupported media type - the Content-Encoding of the request is not supported.
{
"error": {
"type": "unsupported-content-encoding",
"message": "Content-Encoding \"bla\" is not supported."
}
}
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:
Status 429
Too many requests - rate limit exceeded.
{
"error": {
"type": "rate-limit-exceeded",
"message": "You have exceeded the rate limit. Please try again later."
}
}
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: