---
title: Working with Events and presignedUrl
slug: analysis/working-with-events-and-presignedurl
docTags: 
createdAt: 2025-02-25T09:40:22.685Z
---

**Events and presignedUrl&#x20;**&#x72;equires partners to provide webhook for Klavi event reception, and proactively obtain analysis result files based on the `presignedUrl` in the event.

## 1.Configure the webhook for event reception

Partners need to configure the following information in the [Console](https://console.klavi.ai):

- **Events receiving method(Push/Pull)**
  - **Webhook for event reception(If push events method)**
- **Encryption Options(Yes/No)**

The above information can also be provided to Klavi [business personnel](mailto\:crie@klavi.ai) for Klavi to fill in.

## 2.Passive reception or active polling and parse events through webhook

After Klavi completes the data analysis, it will send notifications to the configured webhooks.

```json
{
    "partnerAppId":"12345678",
    "eventId":"1495468585434-0e73d1719173766fe4dfe1a8",
    "eventType":"analysis",
    "eventName":"analysis_finished",
    "eventTime":"2025-02-26T20:08:17.848Z",
    "payload":{
        "batchId":"25872252137",
        "presignedUrl":"https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/key?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAEXAMPLE123456789%2F20210621%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20210621T041609Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=EXAMBLE1234494d5fba3fed607f98018e1dfc62e2529ae96d844123456"
    }
}
```

Parse the above event and obtain the `presignedUrl` of the sharing file.

```html
https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/key?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAEXAMPLE123456789%2F20210621%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20210621T041609Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=EXAMBLE1234494d5fba3fed607f98018e1dfc62e2529ae96d844123456
```

## 3.Retrieve sharing result data through presignedUrl

:::CodeblockTabs
```bash
wget -O <output-file-name> https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/key?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAEXAMPLE123456789%2F20210621%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20210621T041609Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=EXAMBLE1234494d5fba3fed607f98018e1dfc62e2529ae96d844123456
# or
curl -o <output-file-name> https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/key?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAEXAMPLE123456789%2F20210621%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20210621T041609Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=EXAMBLE1234494d5fba3fed607f98018e1dfc62e2529ae96d844123456
```

```python
import requests

presigned_url = "https://<bucket-name>.s3.<region>.amazonaws.com/<object-key>?AWSAccessKeyId=...&Expires=...&Signature=..."

response = requests.get(presigned_url)

if response.status_code == 200:
    with open("downloaded_file", "wb") as file:
        file.write(response.content)
    print("download successful")
else:
    print(f"download failed，statue_code: {response.status_code}")
```
:::

:::hint{type="info"}
The default lifecycle of `presignedUrl` is 1 day (24 hours), starting from `eventTime`. Partners need to complete file retrieval before the end of the lifecycle, otherwise the URL will become invalid.
:::

