> ## Documentation Index
> Fetch the complete documentation index at: https://help.airbridge.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Report

###### Request status

The status of an asynchronous request can be checked with `task.status` in the API request result.

<div style={{ overflowX: 'auto' }}>
  <table style={{ display: 'table' }}>
    <tbody>
      <tr>
        <td style={{"minWidth":"130px"}}>
          `PENDING`
        </td>

        <td>
          Data aggregation is in preparation
        </td>
      </tr>

      <tr>
        <td>
          `RUNNING`
        </td>

        <td>
          Data is being aggregated.
        </td>
      </tr>

      <tr>
        <td>
          `SUCCESS`
        </td>

        <td>
          The aggregation is completed and returns the result.
        </td>
      </tr>

      <tr>
        <td>
          `FAILURE`
        </td>

        <td>
          The request has failed.
        </td>
      </tr>

      <tr>
        <td>
          `CANCELED`
        </td>

        <td>
          The request has been canceled.
        </td>
      </tr>
    </tbody>
  </table>
</div>

<Card title="Try API Request" icon="rectangle-api" horizontal href="https://www.postman.com/airbridge-engineering/workspace/airbridge-api/request/22395869-ac40ec3a-2641-446a-adff-8f3c36452b83" />

```text GET theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
https://api.airbridge.io/reports/api/v5/apps/{app_name}/retention/query/{task_id}
```

<h2 id="get-report-request">
  Request
</h2>

***

<h3 id="get-report-headers">
  Headers
</h3>

<ParamField header="Accept-Language" type="string">
  You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.
</ParamField>

<ParamField header="Content-Type" type="string">
  Represents the media type of the resource. Defaults to `application/json`.
</ParamField>

<ParamField header="Authorization" type="string">
  The key value to use for API requests. Instructions for getting API keys are in "[how to generate API Keys](/en/references/introduction#authorization)".
</ParamField>

<h3 id="get-report-path-params">
  Path Params
</h3>

<ParamField path="app_name" type="string" required>
  Airbridge App Name. (Unique ID)
</ParamField>

<ParamField path="task_id" type="string" required>
  The task\_id returned by the result of the 'Request Report' API.
</ParamField>

<h3 id="get-report-query-params">
  Query Params
</h3>

<ParamField query="skip" type="number">
  The number of rows to be skipped.

  Get results except the first N number of rows.

  The default is 0.
</ParamField>

<ParamField query="size" type="number">
  A limit on the number of rows to be returned.

  Get results of the next N rows after those skipped by the `skip` option.

  The default is 10000.

  e.g.) `?skip=200&size=100`

  In this case, it returns the rows 201 to 300. (skips first 200 rows, gets next 100 rows)
</ParamField>

<RequestExample>
  ```shellscript Request theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
  curl -X GET 'https://api.airbridge.io/reports/api/v5/apps/{app_name}/retention/query/{task_id}?skip=0&size=10000' \
    -H 'Accept-Language: ko' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'
  ```
</RequestExample>

<h2 id="get-report-response">
  Response
</h2>

***

### 200

### 200

### 404

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
  {
    "task": {
      "status": "RUNNING",
      "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d",
      "endedAt": "2022-01-17T19:10:00.286939+09:00"
    }
  }
  ```

  ```json 200 theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
  {
    "task": {
      "status": "SUCCESS",
      "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d",
      "endedAt": "2022-01-17T19:10:00.286939+09:00"
    },
    "retention": {
      "data": {
        "rows": [
          {
            "rows": [
              {
                "date": "2022-01-10T00:00:00+09:00/2022-01-11T00:00:00+09:00",
                "values": [
                  {
                    "value": 0,
                    "isMasked": true
                  }
                ],
                "totalValue": {
                  "value": 0,
                  "isMasked": true
                }
              }
            ],
            "total": {
              "values": [
                {
                  "value": 0,
                  "isMasked": true
                }
              ],
              "totalValue": {
                "value": 0,
                "isMasked": true
              }
            },
            "metadata": [
              "string"
            ]
          }
        ]
      },
      "metadata": {
        "totalCount": 0
      }
    },
    "pagination": {
      "hasNext": false
    },
    "notification": [
      {
        "code": "AGG_DATA_MASKING_BY_FACEBOOK",
        "type": "info",
        "message": "some data is masked by facebook privacy policy."
      }
    ]
  }
  ```

  ```json 404 theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
  {
    "type": "about:blank",
    "title": "Not Found",
    "status": 404,
    "traceId": "1-000000-000000000000000"
  }
  ```
</ResponseExample>
