> ## 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 complete 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>

###### Response Notification

If certain data was removed or masked during aggregation (masking), refer to the the reason in `notification[0].code`.

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

        <td>
          The media partner requesting the data has not been granted the permission to view them.
        </td>
      </tr>

      <tr>
        <td>
          `AGG_DATA_MASKING_BY_FACEBOOK`
        </td>

        <td>
          The data has been removed according to Meta's privacy compliance policies.
        </td>
      </tr>

      <tr>
        <td>
          `EXCEEDED_LIMIT_ON_MAX_ROW_COUNT`
        </td>

        <td>
          The result has exceeded the maximum data value (10,000 rows per report). It is recommended that data is extracted using Raw Data Export.
        </td>
      </tr>

      <tr>
        <td>
          `SAN_PERIOD_LIMIT`
        </td>

        <td>
          The data has been removed according to Self-Attribution Networks' compliance policies. For example, removed data from 175 days ago that was attributed to Meta.
        </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-eb9b62ad-0eb2-4e7c-8ac7-5eb8221e53fe" />

```text GET theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
https://api.airbridge.io/reports/api/v7/apps/{app_name}/actuals/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 100.

  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>

<ParamField query="keyword" type="string">
  The keywords to filter on GroupBy in the results.
</ParamField>

<ParamField query="viewFormat" type="boolean">
  Determines whether to include format information used by the dashboard to represent values for the Actuals Report.

  If it set true, the format information (such as Meta ads masking) is included in the `viewFormat` field in the form of "\{value}", "\{value} +α", "Privacy Block", etc.

  The default is false.
</ParamField>

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

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

***

### 200

The asynchronous request is being processed.

The API can be polled periodically to see the results, and the status of the request can be checked with `task.status`.

### 200

Returns the result when data aggregation is complete. If status is `SUCCESS`, sends it to actuals with data, metadata, messages, etc.

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
  {
    "task": {
      "status": "RUNNING",
      "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d"
    }
  }
  ```

  ```json 200 theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
  {
    "task": {
      "status": "SUCCESS",
      "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d",
      "endedAt": "2022-10-01T00:00:00+00:00"
    },
    "actuals": {
      "data": {
        "rows": [
          {
            "values": {
              "app_installs": {
                "value": 100,
                "isMasked": false,
                "viewFormat": "{value}"
              }
            },
            "groupBys": [
              "<groupBy>"
            ]
          },
          {
            "values": {
              "app_installs": {
                "value": 13,
                "isMasked": true,
                "viewFormat": "{value} +α"
              }
            },
            "groupBys": [
              "<groupBy>"
            ]
          }
        ]
      },
      "metadata": {
        "rowCount": 2
      }
    },
    "pagination": {
      "hasNext": true,
      "totalCount": 200
    },
    "notifications": []
  }
  ```
</ResponseExample>
