--- title: Webhooks FAQ description: 'How Skyvern notifies you when its done' --- # FAQ ## Webhooks vs HTTP requests? We use Webhooks for executing tasks as the expected runtime of these jobs can exceed default HTTP timeouts (1 minute) ## How do we handle webhook authentication? (ie how can we handle callbacks?) - a python example for how to generate the signature: ```python def validate_skyvern_request_headers(request: Request) -> bool: header_skyvern_signature = request.headers["x-skyvern-signature"] payload = request.body() # this is a bytes hash_obj = hmac.new(SKYVERN_API_KEY.encode("utf-8"), msg=payload, digestmod=hashlib.sha256) client_generated_signature = hash_obj.hexdigest() return header_skyvern_signature == client_generated_signature ``` SKYVERN_API_KEY: this is the [api key](/running-tasks/introduction) specific to your organization # Webhook common parameters | Parameter | Type | Required? | Sample Value | Description | | --- | --- | --- | --- | --- | | webhook_callback_url | String | yes | … | |