# एसिंक्रोनस संदेश सांख्यिकी एक्सपोर्ट

`exportMessagesStatistics` संदेश इतिहास और सांख्यिकी को सर्वर पर एक CSV फ़ाइल में एक्सपोर्ट करता है। इसका उपयोग बड़े या पूरे-अकाउंट पुल के लिए करें जिन्हें [`messages:list`](/hi/developer/api-reference/statistics-api/message-statistics-api/#messageslist) हैंडल नहीं कर सकता है।

## messages:list के बजाय एक्सपोर्ट का उपयोग कब करें

एक सीमित अवधि के लाइव, पेजिनेटेड लुकअप के लिए `messages:list` का उपयोग करें। `exportMessagesStatistics` का उपयोग तब करें जब परिणाम `messages:list` की डीप-पेजिनेशन सीमा (`page × per_page > 100000`) से अधिक हो, या जब लक्ष्य पेजिनेटेड JSON के बजाय एक एकल डाउनलोड करने योग्य फ़ाइल हो। एक्सपोर्ट में `date_range` या पंक्ति गणना पर कोई सीमा नहीं है, क्योंकि यह परिणाम को एक प्रतिक्रिया में रखने के बजाय डिस्क पर एक फ़ाइल में स्ट्रीम करता है।

## एक्सपोर्ट फ्लो कैसे काम करता है

1. `messages:list` के समान फ़िल्टर के साथ [`export`](#export) को कॉल करें। प्रतिक्रिया फ़ाइल बनने से पहले तुरंत एक `uid` टास्क आइडेंटिफ़ायर लौटाती है।
2. उस `uid` के साथ [`status`](#status) को पोल करें जब तक कि यह `STATUS_SUCCESS` (या `STATUS_FAILED`) रिपोर्ट न करे।
3. जेनरेट की गई फ़ाइल का नाम प्राप्त करने के लिए उसी `uid` के साथ [`result`](#result) को कॉल करें।
4. नाम से फ़ाइल [डाउनलोड](#download) करें।

किसी एप्लिकेशन के लिए हाल के एक्सपोर्ट कार्यों को देखने के लिए [`lastTasks`](#lasttasks) का उपयोग करें, और किसी कार्य को रद्द करने या उसकी फ़ाइल को जल्दी हटाने के लिए [`delete`](#delete) का उपयोग करें।

## विधियाँ (Methods)

एक्सपोर्ट जीवनचक्र में पाँच विधियाँ हैं, साथ ही एक सादा डाउनलोड एंडपॉइंट भी है:

| विधि (Method) | विवरण (Description) |
|--------|--------------|
| [`exportMessagesStatistics/export`](#export) | एक एक्सपोर्ट को क्यू में लगाता है और एक टास्क `uid` लौटाता है। |
| [`exportMessagesStatistics/status`](#status) | टास्क की प्रगति की जाँच करता है। |
| [`exportMessagesStatistics/result`](#result) | टास्क पूरा हो जाने पर जेनरेट की गई फ़ाइल का नाम लौटाता है। |
| [`exportMessagesStatistics/lastTasks`](#lasttasks) | एक एप्लिकेशन के लिए हाल के एक्सपोर्ट कार्यों को सूचीबद्ध करता है। |
| [`exportMessagesStatistics/delete`](#delete) | रिटेंशन विंडो समाप्त होने से पहले किसी टास्क को रद्द करता है या उसकी फ़ाइल को हटाता है। |
| [डाउनलोड](#download) | नाम से जेनरेट की गई CSV फ़ाइल डाउनलोड करता है। |

### export

एक संदेश इतिहास एक्सपोर्ट को क्यू में लगाता है और तुरंत एक टास्क आइडेंटिफ़ायर लौटाता है।

`POST` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/export`

##### हेडर्स

अनुरोध के लिए एक सर्वर API टोकन की आवश्यकता है:

| नाम             | आवश्यक | विवरण                                                                                          |
|------------------|----------|---------------------------------------------------------------------------------------------------------|
| `Authorization`  | हाँ      | [सर्वर API टोकन](/hi/developer/api-reference/api-access-token/#server-api-token)। निम्नलिखित प्रारूप में प्रदान किया जाना चाहिए: `Authorization: Api <Server Key>`।     |

##### अनुरोध बॉडी पैरामीटर

अनुरोध बॉडी निम्नलिखित फ़ील्ड स्वीकार करती है:

| नाम                                  | आवश्यक | प्रकार    | विवरण                                                                                                                     |
|----------------------------------------|----------|---------|--------------------------------------------------------------------------------------------------------------------------------|
| `type`                                | हाँ      | स्ट्रिंग  | <code>"TASK_TYPE_EXPORT<wbr/>_MESSAGES_V2"</code> होना चाहिए।                                                                                     |
| <code>export_messages<wbr/>_v2</code>                  | हाँ      | ऑब्जेक्ट  | एक्सपोर्ट पैरामीटर, नीचे वर्णित हैं।                                                                                            |
| <code>export_messages<wbr/>_v2.application<wbr/>_code</code> | नोट देखें | स्ट्रिंग  | [Pushwoosh एप्लिकेशन कोड](/hi/developer/api-reference/api-identifiers/#application-code)। यदि `app_group_code` सेट नहीं है तो आवश्यक है। |
| <code>export_messages<wbr/>_v2.app<wbr/>_group_code</code>   | नोट देखें | स्ट्रिंग  | एप्लिकेशन समूह कोड, समूह में प्रत्येक ऐप में एक्सपोर्ट करता है। यदि `application_code` सेट नहीं है तो आवश्यक है।                     |
| <code>export_messages<wbr/>_v2.search</code>           | नहीं       | स्ट्रिंग  | संदेश शीर्षक और सामग्री पर फ्री-टेक्स्ट खोज।                                                                               |
| <code>export_messages<wbr/>_v2.filters</code>          | नहीं       | ऑब्जेक्ट  | संदेश फ़िल्टर, नीचे वर्णित हैं। पूरे अकाउंट इतिहास को एक्सपोर्ट करने के लिए छोड़ दें।                                                    |
| <code>export_messages<wbr/>_v2.properties</code>       | नहीं       | ऐरे   | CSV में शामिल करने के लिए कॉलम, नीचे वर्णित हैं।                                                                                 |

`export_messages_v2.filters` स्वीकार करता है:

| नाम <div style="width:150px"></div> | प्रकार    | विवरण                                                                                                                             |
|---------------------------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------|
| `statuses`                            | ऐरे   | शामिल करने के लिए संदेश स्थितियाँ। <details><summary>संभावित मान</summary><ul><li><code>"MESSAGE_STATUS_CANCELED"</code></li><li><code>"MESSAGE_STATUS_CREATING"</code></li><li><code>"MESSAGE_STATUS_DONE"</code></li><li><code>"MESSAGE_STATUS_FAIL"</code></li><li><code>"MESSAGE_STATUS_PENDING"</code></li><li><code>"MESSAGE_STATUS_PROCESSING"</code></li><li><code>"MESSAGE_STATUS_WAITING"</code></li></ul></details> |
| `platforms`                           | ऐरे   | [प्लेटफ़ॉर्म कोड](/hi/developer/api-reference/messages-api/api-prerequisites/#platforms) (संख्यात्मक, जैसे iOS के लिए `1`), `messages:list` द्वारा उपयोग किए जाने वाले प्लेटफ़ॉर्म नाम स्ट्रिंग्स नहीं। |
| `sent_date`                           | ऑब्जेक्ट  | भेजने की तारीख पर फ़िल्टर की गई रिपोर्टिंग अवधि: `{"date_from": "YYYY-MM-DD", "date_to": "YYYY-MM-DD"}`।                                          |
| `created_date`                        | ऑब्जेक्ट  | संदेश बनाने की तारीख पर फ़िल्टर की गई रिपोर्टिंग अवधि, `sent_date` के समान प्रारूप।                                                          |
| `created_via`                         | ऐरे   | संदेश स्रोत। <details><summary>संभावित मान</summary><ul><li><code>"AB_TEST"</code></li><li><code>"API"</code></li><li><code>"AUTO_PUSH"</code></li><li><code>"CP"</code></li><li><code>"CSV"</code></li><li><code>"CUSTOMER_JOURNEY"</code></li><li><code>"EMAIL_API"</code></li><li><code>"EMAIL_CP"</code></li><li><code>"GEO_ZONE"</code></li><li><code>"PUSH_ON_EVENT"</code></li><li><code>"RSS"</code></li><li><code>"SYSTEM"</code></li></ul></details> |
| `segments`                            | ऐरे   | [फ़िल्टर कोड](/hi/developer/api-reference/api-identifiers/#segment--filter-code) जिन पर संदेश भेजा गया था।                                 |
| `campaigns`                           | ऐरे   | [अभियान कोड](/hi/developer/api-reference/api-identifiers/#campaign-code)। `messages:list` के विपरीत, यह एक सूची लेता है, एक एकल कोड नहीं। |
| `message_id`                          | स्ट्रिंग (uint64) | एक एकल संख्यात्मक संदेश आईडी, उद्धृत। `messages:list` के विपरीत, एक्सपोर्ट एक आईडी लेता है, एक ऐरे नहीं।                                |
| `message_code`                        | स्ट्रिंग  | एक एकल [संदेश कोड](/hi/developer/api-reference/api-identifiers/#message-code)।                                                        |

`export_messages_v2.properties` चयन करता है कि CSV में कौन से कॉलम हैं।

<details>
<summary>संभावित मान</summary>

- `"EXPORT_MESSAGE_PROPERTY_ID"`
- `"EXPORT_MESSAGE_PROPERTY_TIMESTAMP"`
- `"EXPORT_MESSAGE_PROPERTY_CONTENT"`
- `"EXPORT_MESSAGE_PROPERTY_TITLE"`
- `"EXPORT_MESSAGE_PROPERTY_APPLICATIONS"`
- `"EXPORT_MESSAGE_PROPERTY_STATUS"`
- `"EXPORT_MESSAGE_PROPERTY_PLATFORMS"`
- `"EXPORT_MESSAGE_PROPERTY_SOURCE"`
- `"EXPORT_MESSAGE_PROPERTY_FILTER"`
- `"EXPORT_MESSAGE_PROPERTY_SUBSCRIPTION_SEGMENTS"`
- `"EXPORT_MESSAGE_PROPERTY_SENT"`
- `"EXPORT_MESSAGE_PROPERTY_OPENED"`
- `"EXPORT_MESSAGE_PROPERTY_ERRORS"`
- `"EXPORT_MESSAGE_PROPERTY_RECIPIENTS"`
- `"EXPORT_MESSAGE_PROPERTY_DELIVERED"`
- `"EXPORT_MESSAGE_PROPERTY_TOTAL_DELIVERED"`
- `"EXPORT_MESSAGE_PROPERTY_TOTAL_OPENED"`
- `"EXPORT_MESSAGE_PROPERTY_TOTAL_CLICKS"`
- `"EXPORT_MESSAGE_PROPERTY_CLICKS"`
- `"EXPORT_MESSAGE_PROPERTY_UNSUBSCRIBED"`

</details>

<Aside type="caution" title="properties सिर्फ एक फ़िल्टर नहीं है">
`properties` में सूचीबद्ध नहीं की गई कोई भी प्रॉपर्टी फ़ाइल में बिल्कुल भी दिखाई नहीं देती है, जिसमें आधार कॉलम (ID, भेजने की तारीख, सामग्री, स्थिति) भी शामिल हैं। `properties` को खाली छोड़ने से बिना कॉलम वाला CSV बनता है। एक्सपोर्ट में शामिल होने वाले प्रत्येक कॉलम को सूचीबद्ध करें, न कि केवल वे मेट्रिक्स जिन्हें आप डिफ़ॉल्ट सेट के ऊपर जोड़ना चाहते हैं।
</Aside>

##### उदाहरण अनुरोध

```json
{
  "type": "TASK_TYPE_EXPORT_MESSAGES_V2",
  "export_messages_v2": {
    "application_code": "XXXXX-XXXXX",
    "filters": {
      "created_date": {
        "date_from": "2026-01-01",
        "date_to": "2026-06-30"
      },
      "statuses": ["MESSAGE_STATUS_DONE"],
      "platforms": [1, 3]
    },
    "properties": [
      "EXPORT_MESSAGE_PROPERTY_ID",
      "EXPORT_MESSAGE_PROPERTY_TIMESTAMP",
      "EXPORT_MESSAGE_PROPERTY_STATUS",
      "EXPORT_MESSAGE_PROPERTY_PLATFORMS",
      "EXPORT_MESSAGE_PROPERTY_SENT",
      "EXPORT_MESSAGE_PROPERTY_OPENED"
    ]
  }
}
```

<Tabs>
<TabItem label="200: ठीक है">
```json
{
  "uid": "177458"
}
```
</TabItem>
<TabItem label="401: गलत API एक्सेस टोकन">
```json
{
  "error": "account not found"
}
```
</TabItem>
</Tabs>

### status

एक एक्सपोर्ट टास्क की प्रगति लौटाता है।

`POST` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/status`

##### अनुरोध बॉडी पैरामीटर

`export` द्वारा लौटाया गया टास्क आइडेंटिफ़ायर पास करें:

| नाम  | आवश्यक | प्रकार    | विवरण                                     |
|-------|----------|---------|--------------------------------------------------|
| `uid` | हाँ      | स्ट्रिंग (int64) | `export` प्रतिक्रिया से टास्क आइडेंटिफ़ायर, जैसे `"177458"`। |

##### उदाहरण अनुरोध

```json
{
  "uid": "177458"
}
```

<Tabs>
<TabItem label="200: ठीक है">
```json
{
  "status": "STATUS_SUCCESS",
  "progress": 1
}
```
</TabItem>
</Tabs>

`status` `"STATUS_PENDING"`, `"STATUS_SUCCESS"`, या `"STATUS_FAILED"` में से एक है। `progress` `0` और `1` के बीच एक भिन्न है; `result` को कॉल करने से पहले `status` को तब तक पोल करें जब तक कि यह `"STATUS_SUCCESS"` तक न पहुंच जाए।

### result

टास्क पूरा हो जाने पर जेनरेट की गई फ़ाइल का नाम लौटाता है।

`POST` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/result`

##### अनुरोध बॉडी पैरामीटर

`export` द्वारा लौटाया गया वही टास्क आइडेंटिफ़ायर पास करें:

| नाम  | आवश्यक | प्रकार    | विवरण                                     |
|-------|----------|---------|--------------------------------------------------|
| `uid` | हाँ      | स्ट्रिंग (int64) | `export` प्रतिक्रिया से टास्क आइडेंटिफ़ायर, जैसे `"177458"`। |

##### उदाहरण अनुरोध

```json
{
  "uid": "177458"
}
```

<Tabs>
<TabItem label="200: ठीक है">
```json
{
  "export_messages_v2_result": {
    "file": "Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv"
  }
}
```
</TabItem>
</Tabs>

`status` के `"STATUS_SUCCESS"` रिपोर्ट करने से पहले `result` को कॉल करने पर एक खाली परिणाम मिलता है। `file` मान को [डाउनलोड एंडपॉइंट](#download) पर वैसे ही पास करें।

### lastTasks

एक एप्लिकेशन के लिए हाल के एक्सपोर्ट कार्यों को सूचीबद्ध करता है, सबसे हाल का पहले।

`POST` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/lastTasks`

##### अनुरोध बॉडी पैरामीटर

प्रत्येक पैरामीटर एक वैकल्पिक फ़िल्टर है; उन सभी कार्यों को सूचीबद्ध करने के लिए सभी को छोड़ दें जिन तक टोकन की पहुंच है:

| नाम             | आवश्यक | प्रकार    | विवरण                                                                         |
|------------------|----------|---------|---------------------------------------------------------------------------------------|
| `application`    | नहीं       | स्ट्रिंग  | [Pushwoosh एप्लिकेशन कोड](/hi/developer/api-reference/api-identifiers/#application-code)। उन सभी एप्लिकेशनों के कार्यों को सूचीबद्ध करने के लिए छोड़ दें जिन तक टोकन की पहुंच है। |
| `types`          | नहीं       | ऐरे   | विशिष्ट कार्य प्रकारों तक सीमित करें। केवल संदेश एक्सपोर्ट देखने के लिए <code>["TASK_TYPE_EXPORT<wbr/>_MESSAGES_V2"]</code> का उपयोग करें। |
| `campaign`       | नहीं       | स्ट्रिंग  | [अभियान कोड](/hi/developer/api-reference/api-identifiers/#campaign-code) द्वारा फ़िल्टर करें।  |
| `message_id`     | नहीं       | स्ट्रिंग (uint64) | एक एकल संख्यात्मक संदेश आईडी, उद्धृत, द्वारा फ़िल्टर करें।                                  |
| `message_code`   | नहीं       | स्ट्रिंग  | एक एकल [संदेश कोड](/hi/developer/api-reference/api-identifiers/#message-code) द्वारा फ़िल्टर करें। |
| `limit`          | नहीं       | इंटीजर | लौटाए जाने वाले कार्यों की अधिकतम संख्या।                                                    |
| `timestamp_from` | नहीं       | स्ट्रिंग  | केवल इस टाइमस्टैम्प (RFC 3339) के बाद बनाए गए कार्यों को लौटाएं।                          |

<Aside type="note">
कार्यों को 30 दिनों के लिए रखा जाता है, भले ही 7-दिन की फ़ाइल रिटेंशन विंडो के बाद उनकी फ़ाइल पहले ही हटा दी गई हो। `lastTasks` अभी भी एक ऐसा कार्य दिखा सकता है जिसका `result` अब डाउनलोड करने योग्य फ़ाइल में हल नहीं होता है।
</Aside>

##### उदाहरण अनुरोध

```json
{
  "application": "XXXXX-XXXXX",
  "types": ["TASK_TYPE_EXPORT_MESSAGES_V2"],
  "limit": 10
}
```

<Tabs>
<TabItem label="200: ठीक है">
```json
{
  "tasks": [
    {
      "id": "177458",
      "timestamp": "2026-08-13T12:00:00Z",
      "status": "STATUS_SUCCESS",
      "requested_by_user": "user@example.com",
      "export_messages_v2": {
        "application_code": "XXXXX-XXXXX"
      },
      "export_messages_v2_result": {
        "file": "Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv"
      }
    }
  ]
}
```
</TabItem>
</Tabs>

### delete

7-दिन की रिटेंशन विंडो समाप्त होने से पहले एक टास्क और उसकी फ़ाइल को हटाता है।

`POST` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/delete`

##### अनुरोध बॉडी पैरामीटर

`export` द्वारा लौटाया गया टास्क आइडेंटिफ़ायर पास करें:

| नाम  | आवश्यक | प्रकार    | विवरण                                     |
|-------|----------|---------|--------------------------------------------------|
| `uid` | हाँ      | स्ट्रिंग (int64) | `export` प्रतिक्रिया से टास्क आइडेंटिफ़ायर, जैसे `"177458"`। |

##### उदाहरण अनुरोध

```json
{
  "uid": "177458"
}
```

<Tabs>
<TabItem label="200: ठीक है">
```json
{}
```
</TabItem>
</Tabs>

### डाउनलोड

`result` द्वारा जेनरेट की गई CSV फ़ाइल को नाम से डाउनलोड करता है।

`GET` `https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/<file>`

##### हेडर्स

अन्य विधियों की तरह ही प्रमाणित करें, या एक सक्रिय कंट्रोल पैनल सत्र पर निर्भर रहें:

| नाम             | आवश्यक | विवरण                                                                                          |
|------------------|----------|-----------------------------------------------------------------------------------------------------|
| `Authorization`| हाँ      | [सर्वर API टोकन](/hi/developer/api-reference/api-access-token/#server-api-token), अन्य `exportMessagesStatistics` विधियों के समान प्रारूप में: `Authorization: Api <Server Key>` (`Api` स्कीम केस-असंवेदनशील है)। बिना `Authorization` हेडर और बिना लॉग-इन कंट्रोल पैनल सत्र वाले अनुरोध को `401 Unauthorized` मिलता है।     |

`<file>` को `result` प्रतिक्रिया से सटीक `file` मान से बदलें, उदाहरण के लिए:

```
https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv
```

फ़ाइल एक CSV है जिसमें `properties` में चुने गए कॉलम होते हैं। यह एक्सपोर्ट समाप्त होने के 7 दिनों तक उपलब्ध रहती है, फिर क्लीनअप जॉब इसे हटा देती है और URL हल होना बंद हो जाता है।