AppsFlyer SKAN performance report API

The SKAN performance report API from AppsFlyer — 1 operation(s) for skan performance report.

Operations 1

GET /data/app/{app_id} Get performance report #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/appsflyer-skan-performance-report-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

appsflyer-skan-performance-report-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SKAN aggregated performance report SKAN performance report API
  version: 1.0.0
servers:
- url: https://hq1.appsflyer.com/api/skadnetworks/v3
  description: SKAN v4.0
- url: https://hq1.appsflyer.com/api/skadnetworks/v2
  description: SKAN v3.0
security:
- bearerAuth: []
tags:
- name: SKAN performance report
paths:
  /data/app/{app_id}:
    get:
      tags:
      - SKAN performance report
      summary: Get performance report
      description: "> ⚠️ Important\n>\n> All API V2 tokens generated before March 10, 2026, 19:00 UTC have been revoked. If your token was generated before this date, please regenerate it. [Learn how](https://support.appsflyer.com/hc/en-us/articles/360004562377-Managing-AppsFlyer-tokens).\n\n> ℹ️ For the base URL (on the right), select either /v2/ for SKAN V3 or /v3/ for SKAN V4.\n> If you select SKAN V4, but results are for SKAN V3 postbacks, the SKAN V4 fields return `null`. \n"
      operationId: skan-agg-performance-report-api-get
      parameters:
      - name: app_id
        in: path
        description: The ID of the app
        required: true
        schema:
          type: string
      - in: query
        name: date_type
        description: "The date type used in the date range bounded by `start_date` and `end_date`\nOptions: \n- [Default] `install`: The install date derived by AppsFlyer using the postback arrival time and after considering the measurement period.\n- `arrival`: The postback arrival time. Note: Organic install metrics have the value N/A. \nGoogle Ads data: The install and arrival dates are the same due to the Google Ads reporting methodology.\n"
        schema:
          type: string
          enum:
          - ''
          - install
          - arrival
      - in: query
        name: start_date
        description: "The install date range is bounded by `start_date` and `end_date`. \nNote! The install date differs from the postback arrival date.\n- Earliest install date having format YYYY-MM-DD \n- Earliest date permitted: 2020-11-01\n"
        examples:
          DateOnly:
            summary: Date only
            value: '2020-11-12'
        required: true
        schema:
          type: string
          format: date
      - in: query
        name: end_date
        description: "- Most recent install date having format YYYY-MM-DD \n- Maximum number of days per report call: 90 days\n"
        examples:
          DateOnly:
            summary: Date only
            value: '2020-12-12'
        required: true
        schema:
          type: string
          format: date
      - in: query
        name: view_type
        description: "Filter the installs by type as follows: \n\n- `acquisition`: Installs \n- `retargeting`: Redownloads\n- `unified`: Acquisition and redownloads combined.\n- [Default] `unified`\n- Cost, click, and impression metrics return when `view_type=unified`\n"
        schema:
          type: string
          enum:
          - ''
          - acquisition
          - retargeting
          - unified
      - in: query
        name: modeled_conversion_values
        schema:
          type: boolean
        description: '- Only supported from V2

          - If `true`, the postback includes the modeled data when populating the decoded metric columns.  [See available field](https://support.appsflyer.com/hc/en-us/articles/360014104157-SKAN-aggregated-performance-report-API#report-structure-and-example)

          - If `false`, the postback presents decoded data as received by raw SKAN postbacks, without modeled data.

          - Default value is `false`.

          '
      responses:
        '200':
          description: "Valid data returned. Contents of CSV file described [here](https://support.appsflyer.com/hc/en-us/articles/360014104157-SKAN-aggregated-performance-report-API#report-structure-and-example)\n*Empty report* - no data found for the specified date range (CSV, only column names are returned).\n  - In the SKAdNetwork dashboard, verify that data is available for the specified date range.\n  - Verify that `start_date` is a date earlier than yesterday. The earliest recommended date is the current date UTC time, less 3 days. For example: If the current date UTC timezone is March 31, the earliest date you should use is March 28. \n"
          content:
            text/plain:
              schema:
                type: string
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                BadRequest:
                  summary: Bad request
                  value: Bad request
                TooManyRequests:
                  summary: Exceeded rate limitation
                  value: Too many requests
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                NotFound:
                  summary: Authorization token is missing or invalid
                  value: Unauthorized
        '403':
          description: "You don't have permission to access this report. If you are an analytics partner ask the advertiser to give you permission. \n"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                NoPermission:
                  summary: No permission
                  value: No permission
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                NotFound:
                  summary: Not Found
                  value: Not found
components:
  schemas:
    Error:
      type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: '**Important: API V2 Token Revocation**

        All API V2 tokens generated before March 10, 2026, 19:00 UTC have been revoked. If your token was generated before this date, please regenerate it. [Learn how](https://support.appsflyer.com/hc/en-us/articles/360004562377-Managing-AppsFlyer-tokens).


        Token required for authorization. Please refer to [this link](https://support.appsflyer.com/hc/en-us/articles/360004562377) for instructions on how to obtain the token.

        '