Establish a webhook
POST
/webhooks
Webhooks
request initiates the creation similar to creating any other resource.
When a webhook is created, we will send a test POST to the target with an
X-Hook-Secret
header. The target must respond with a 200 OK
or 204
No Content
and a matching X-Hook-Secret
header to confirm that thiswebhook subscription is indeed expected. We strongly recommend storing
this secret to be used to verify future webhook event signatures.
of the request. If you do not acknowledge the webhook’s confirmation
handshake it will fail to setup, and you will receive an error in
response to your attempt to create it. This means you need to be able to
receive and complete the webhook while the POST request is in-flight
(in other words, have a server that can handle requests asynchronously).
# Request
curl -H "Authorization: Bearer <personal_access_token>" \
-X POST https://app.asana.com/api/1.0/webhooks \
-d "resource=8675309" \
-d "target=https://example.com/receive-webhook/7654"
# Handshake sent to https://example.com/
POST /receive-webhook/7654
X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81
# Handshake response sent by example.com
HTTP/1.1 200
X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81
# Response
HTTP/1.1 201
{
"data": {
"gid": "43214",
"resource": {
"gid": "8675309",
"name": "Bugs"
},
"target": "https://example.com/receive-webhook/7654",
"active": false,
"last_success_at": null,
"last_failure_at": null,
"last_failure_content": null
}
}
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://app.asana.com/api/1.0/webhooks' \
--header 'Content-Type: application/json' \
--data-raw ''
Response Response Example
201 - Example 1
{
"data": {
"gid": "12345",
"resource_type": "task",
"active": false,
"resource": {
"gid": "12345",
"resource_type": "task",
"name": "Bug Task"
},
"target": "https://example.com/receive-webhook/7654",
"created_at": "2012-02-22T02:06:58.147Z",
"filters": [
{
"action": "changed",
"fields": [
"due_at",
"due_on",
"dependencies"
],
"resource_subtype": "milestone",
"resource_type": "task"
}
],
"last_failure_at": "2012-02-22T02:06:58.147Z",
"last_failure_content": "500 Server Error\\n\\nCould not complete the request",
"last_success_at": "2012-02-22T02:06:58.147Z"
}
}
Request
Body Params application/json
Responses
Modified at 2022-09-13 02:00:32