SKAdNetwork (SKAN) APIs

Apple SKAdNetwork endpoints: the SKAN aggregated performance report API, the SKAN aggregated postbacks-by-arrival-date API, the conversion-value (CV) schema APIs for advertisers and for ad networks, and the SKAN Conversion Studio configuration API used to read and write conversion-value mapping schemas.

Documentation

Specifications

Other Resources

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/skadnetwork-skan-apis"
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 email required.

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

OpenAPI Specification

appsflyer-skan-aggregated-performance-report-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: SKAN aggregated 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: []
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.

        '