AppsFlyer is a mobile measurement and marketing analytics platform that provides attribution, deep linking, fraud protection, and cross-channel campaign performance measurement for mobile apps. The AppsFlyer REST APIs expose aggregated and cohort campaign performance data (Master API, Cohort API, Aggregate Pull API), Push API streaming configuration, OneLink short-link management, and Server-to-Server (S2S) in-app event ingestion — enabling integrations to pull marketing KPIs into a warehouse, generate deep links programmatically, and forward server-side events to AppsFlyer for attribution.
Power end-to-end data operations for your AppsFlyer API with Nexla. Our bi-directional AppsFlyer connector is purpose-built for AppsFlyer, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to AppsFlyer or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your AppsFlyer workflows fast, secure, and fully governed.
Features
Type: API
SourceDestination
Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
Request optimization with intelligent batching, retry, and caching to minimize API calls and costs
The AppsFlyer connector authenticates to the AppsFlyer REST APIs using an API V2 token (a JWT) issued from the AppsFlyer Security Center. The token is sent on every request as an Authorization: Bearer <token> header. Generate the token in AppsFlyer before creating the credential in Nexla.
Open the account menu by clicking your email address in the top-right corner of the dashboard, and select Security Center from the dropdown.
In the Security Center, locate the AppsFlyer API tokens section and click Manage your AppsFlyer API tokens. The list of currently active tokens is displayed.
Click Create Token to open the token creation dialog.
Select API as the token type, and click Create. AppsFlyer immediately issues a new API V2 token (JWT) and displays it once on screen.
Copy the token and store it in a secure secret manager. AppsFlyer does not display the token again after the dialog is closed, and the token cannot be retrieved later.
By default, every new AppsFlyer account is provisioned with one API V2 token. Admins can create a maximum of two API tokens per token type. API V2 tokens are active immediately after creation and do not require an additional activation step.
For complete information about creating, rotating, and revoking AppsFlyer API tokens, see the Managing AppsFlyer tokens help center article.
Important
The API V2 token grants full read and write access to your AppsFlyer account data. Treat it like a password — store it in a secret manager, never commit it to source control, and rotate it immediately if you suspect it has been exposed. AppsFlyer recommends rotating API tokens at least every 180 days.
After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.
Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.
Enter the AppsFlyer API V2 token generated above in the API V2 Token field. Nexla will use this value to send Authorization: Bearer <token> on every API call to AppsFlyer.
The API V2 Token field is masked and stored encrypted by Nexla. To rotate the token in the future, generate a new token in AppsFlyer's Security Center and update this field on the credential — no other configuration changes are required.
Click the Save button at the bottom of the overlay to save the configured credential. Nexla validates the token by issuing a GET https://hq1.appsflyer.com/api/mng/apps call before storing the credential. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.
To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the AppsFlyer connector tile from the list of available connectors, then select the credential that will be used to connect to the AppsFlyer instance, and click Next; or, create a new AppsFlyer credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common AppsFlyer endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.
Create Cohort Report
This endpoint creates a cohort report that returns campaign performance data grouped by install cohort — including users, eCPI, revenue, ROI, retention, and other cohort-based KPIs. Use it to track how each acquired cohort performs over time and to compare LTV across media sources, campaigns, or geos.
Enter the AppsFlyer app identifier in the App Id field. This is required. For iOS apps this is the App Store ID prefixed with id (for example, id123456789); for Android apps it is the package name (for example, com.example.app). The app ID is shown on the app's overview page in the AppsFlyer dashboard.
The cohort report POST body is shaped by the upstream Nexset record (or a static body configured on the source) — set cohort_type, from/to dates, groupings, and the additional kpis (beyond the always-returned users, ecpi, and cost) according to your reporting needs.
The Cohort API always returns users, ecpi, and cost, plus one additional KPI per call. For the full list of supported groupings and KPIs, see the AppsFlyer Cohort API reference.
Get Event Types by Attributing Entity
This endpoint returns the list of in-app event types available for a specified Push API attributing entity. Use it to discover which event types can be streamed by the Push API before configuring downstream consumers.
Optionally enter the attributing entity in the Entity Type field. AppsFlyer's Push API supports multiple entity types — most commonly installs and events — which group the event types that can be streamed. Leave blank to use the AppsFlyer default.
Event types returned by this endpoint can be used to filter the Push API subscription configuration. For complete background on the Push API entities, see the AppsFlyer Push API documentation.
Get Master Data Freshness
This endpoint returns the timestamp of the last update to AppsFlyer's Master API datasets. Use it to verify that the underlying Master API data is current before running a Master Report — for example, to skip downstream processing if the freshness timestamp has not advanced since the previous run.
No additional configuration is required for this endpoint. It returns a single object containing the last-update timestamp.
AppsFlyer typically refreshes Master API data within 24–48 hours of activity, depending on the app's configured timezone. Use this endpoint to drive incremental scheduling decisions.
Get Master Report
This endpoint returns AppsFlyer's multi-app aggregate KPI report — LTV, retention, cohort, activity, and Protect360 fraud metrics rolled up by groupings such as media source, campaign, and geo. The Master API is the primary endpoint for syncing daily marketing performance KPIs into a warehouse or BI tool.
Enter the AppsFlyer app identifier in the App ID field. For iOS apps this is the App Store ID prefixed with id (for example, id123456789); for Android apps it is the package name.
Enter the report's date window in the Start Date and End Date fields using YYYY-MM-DD format. Nexla date/time macros (for example {'{now-1}'} for the previous day) can be used here to drive incremental runs.
Enter a comma-separated list of fields to group results by in the Groupings field (for example media_source,campaign,geo). Groupings determine the dimensions of each row in the report.
Enter a comma-separated list of KPIs to include in the KPIs field (for example installs,revenue,roi). Available KPIs depend on the selected groupings and the app's package.
Optionally, enter the source data currency code in the Currency field, and the desired display currency in the Preferred Currency field. Setting both lets AppsFlyer convert revenue values for reporting.
Optionally, enter the source timezone in the Timezone field and the display timezone in the Preferred Timezone field. Setting both lets AppsFlyer align the report to your reporting timezone.
Pagination is handled automatically by Nexla — the source uses incrementing offset pagination with a default page size of 10000 rows. The Offset and Maximum Rows fields can be left at their defaults unless a custom page size is required.
The Master API supports a fixed list of groupings and KPIs that depends on your AppsFlyer package and the selected dimensions. For the complete matrix, see the AppsFlyer Master API documentation.
Get OneLink Short Link Data
This endpoint retrieves the details and configuration of a specific OneLink short link, including its target URL, deep-link parameters, TTL, and brand domain. Use it to audit existing short links, verify configuration, or sync OneLink metadata into a downstream system.
Enter the OneLink campaign identifier in the OneLink ID field. This is required. The OneLink ID is the template-level identifier configured in the AppsFlyer OneLink Management dashboard.
Enter the short-link identifier (the unique portion of the short URL) in the Short Link ID field. This is required.
Both the OneLink ID and Short Link ID can be found in the OneLink Management section of the AppsFlyer dashboard or in the response of the Create OneLink Short Link destination. For complete details, see the OneLink API reference.
Get Push API Configuration
This endpoint returns the current Push API streaming configuration for an app — the registered endpoints, event filters, and active subscriptions. Use it to audit or replicate the streaming setup for a given app.
Enter the AppsFlyer app identifier in the App Id field. This is required.
List All Apps
This endpoint returns the full list of apps in your AppsFlyer account, including each app's identifier, platform, and metadata. Use it as a starting point to discover app IDs that drive downstream Master Report, Cohort Report, or Push API configuration calls.
No additional configuration is required. Nexla automatically paginates the response by following the links.next URL returned by AppsFlyer until all apps have been retrieved.
Nexla also uses this endpoint to validate the API V2 token when the credential is saved, so a successful credential save confirms that the token has permission to call this endpoint.
List Page Revisions
This endpoint retrieves the list of revisions for a specific OneLink landing page, including each revision's identifier and metadata. Use it to audit or roll back OneLink landing page changes.
Enter the OneLink landing page ID in the Page ID field. This is required. The page ID is shown in the AppsFlyer OneLink Management dashboard.
Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.
AppsFlyer data sources can also be manually configured to ingest data from any valid AppsFlyer API endpoint, including endpoints not covered by the pre-built templates (for example, the Aggregate Pull API, the Raw Data Reports API, or custom Push API subscriptions), chained API calls, or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.
AppsFlyer uses different base hosts depending on the API family: the Master, Cohort, Aggregate Pull, OneLink Management, and Push API endpoints use https://hq1.appsflyer.com/..., while OneLink short-link data uses https://onelink.appsflyer.com/shortlink-sdk/v2/.... Read endpoints use GET; the Cohort API uses POST with a JSON request body. When setting the path to data, use $.data[*] for Master Report, Cohort Report, and List All Apps responses; $.event_types[*] for the Push API event types response; and $ for single-object responses (Master Data Freshness, Get Push API Configuration, and OneLink Short Link Data). You do not need to add the Authorization header — Nexla automatically attaches Authorization: Bearer <token> from the selected credential, though some Push API and OneLink endpoints may require Accept: application/json or Content-Type: application/json.
Most AppsFlyer reporting endpoints accept a from/to date window in yyyy-MM-dd format. Use Nexla date/time macros in the API URL to advance the window automatically on each run, driving incremental Master Report or Cohort Report ingestion without manual intervention.
Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new AppsFlyer data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.
Click the + icon on the Nexset that will be sent to the AppsFlyer destination, and select the Send to Destination option from the menu. Select the AppsFlyer connector from the list of available destination connectors, then select the credential that will be used to connect to the AppsFlyer account, and click Next; or, create a new AppsFlyer credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common AppsFlyer endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.
Send Server-to-Server In-App Event
This endpoint sends a mobile in-app event from your servers to AppsFlyer using the Server-to-Server (S2S) events API. Use it to report events that happen outside the app — for example, a subscription renewal on your web checkout, a back-office purchase, or a server-driven achievement — so AppsFlyer can attribute and aggregate them alongside SDK-reported events.
Optionally enter the AppsFlyer app identifier in the App Id field to override the upstream record's app ID. The default behavior is to read the value from each upstream record so that one destination can fan out events for multiple apps.
Each record in the upstream Nexset must include the standard S2S event fields. At a minimum: appsflyer_id (the device's AppsFlyer ID, captured by the SDK on first install), eventName (the event identifier, for example af_purchase), eventValue (the event payload, typically a JSON-encoded string), eventTime (event timestamp in yyyy-MM-dd HH:mm:ss.SSS format), and eventCurrency (ISO-4217 currency code) for revenue events.
This endpoint records a first-app-open event with device, user, and session information so AppsFlyer can attribute the install to the correct media source. Use it to measure installs for app environments where the AppsFlyer SDK cannot run (for example, server-driven or kiosk apps).
Enter the app platform in the Platform field. This is required. Allowed values are ios and android.
Enter the AppsFlyer app identifier in the App ID field. This is required. Use the App Store ID prefixed with id for iOS, or the package name for Android.
Each record in the upstream Nexset must include the standard S2S first-open fields — device identifiers (idfa/idfv for iOS, advertising_id/android_id for Android), ip, user_agent, installed_at, and any additional attribution fields required by your AppsFlyer setup.
First-open events represent installs and must be sent before any subsequent in-app events for the same device. Sending in-app events first will cause AppsFlyer to drop them as unattributed.
Measure Sessions (S2S)
This endpoint records a session event so AppsFlyer can measure retention, daily active users, and session-based KPIs. Use it for app environments without the AppsFlyer SDK, where sessions are detected server-side.
Enter the app platform in the Platform field. This is required. Allowed values are ios and android.
Enter the AppsFlyer app identifier in the App ID field. This is required.
Each record in the upstream Nexset must include the device identifier (appsflyer_id, plus idfa/idfv or advertising_id/android_id), ip, user_agent, and the session timestamp (eventTime).
Session events must be sent after the corresponding first-open event for the same device. AppsFlyer rate-limits session events per device, so do not send sessions more often than the app's natural session frequency.
Create OneLink Short Link
This endpoint creates a new OneLink short link for a OneLink campaign, optionally with a custom TTL and brand domain. Use it to generate deep links at scale — for example, one short link per user, per ad creative, or per QR code printed on physical collateral.
Enter the OneLink campaign identifier in the OneLink ID field. This is required. The OneLink ID is the template-level identifier configured in the AppsFlyer OneLink Management dashboard.
Optionally, enter a custom short-link identifier in the Short Link ID field. When omitted, AppsFlyer generates a random short link ID.
Optionally, enter an expiration time (in seconds) for the short link in the TTL (seconds) field. When omitted, AppsFlyer uses the default TTL for the OneLink template.
Optionally, enter a custom branded domain in the Brand Domain field. The branded domain must be configured in AppsFlyer beforehand.
The full request body — including data (the deep-link parameters) and any optional fields like ad or af_channel — is sent as the JSON body of the call. Use the Nexla transform layer to shape upstream record attributes into the OneLink request schema.
AppsFlyer recommends enabling the Response Webhook option in Configure Manually for this endpoint to capture the newly created short link URL into a Nexla webhook source for downstream use. For complete details on creating OneLink short links, see the AppsFlyer OneLink API reference.
Create iOS Deep Linking Request
This endpoint sends iOS Universal Link (deep linking) attribution requests with device identifiers, user tracking, and attribution information. Use it to forward iOS deep-link clicks captured by your own backend to AppsFlyer for attribution.
Enter the AppsFlyer app identifier in the App ID field. This is required. Use the App Store ID prefixed with id (for example, id123456789).
Each record in the upstream Nexset must include the iOS deep-link attribution payload — at minimum the device identifier (idfa or idfv), the click identifier or universal-link URL, and the click timestamp. Refer to the AppsFlyer Deep Linking API documentation for the complete schema.
This endpoint targets the legacy iOS Universal Links attribution flow. For most modern integrations, prefer the SDK-based deep-link handling or the OneLink API.
AppsFlyer destinations can also be manually configured to send data to any valid AppsFlyer API endpoint not covered by the pre-built templates — including the OneLink Update/Delete endpoints, Push API subscription updates, or custom S2S event variants. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.
All AppsFlyer write endpoints expect application/json and use POST to create resources, PUT to update them, and DELETE to remove them. AppsFlyer uses different base hosts depending on the API family:
S2S first opens and sessions: https://api2.appsflyer.com/inappevent/{'{platform}'}/{'{app_id}'}
iOS Universal Link attribution: https://api.appsflyer.com/api/v1/uls/ios/{'{app_id}'}
OneLink short-link creation, retrieval, and update: https://onelink.appsflyer.com/shortlink-sdk/v2/{'{onelink_id}'}
For update/upsert operations, include the ID of the object to be updated at the end of the URL — Nexla macros can substitute the ID from each upstream record. You do not need to add the Authorization header; Nexla automatically attaches Authorization: Bearer <token> from the selected credential, and Content-Type: application/json is added based on the selected Content Format.
The AppsFlyer S2S events API and OneLink API process each request as a single resource and do not support batched calls, so record batching is best left disabled to ensure each event maps to a single API call. Enable the response webhook to capture the API response — for example, the new short link URL and short link ID returned by Create OneLink Short Link, or per-event success/failure from the S2S events API — into a Nexla webhook source for downstream use.
Important
Test payloads sent to write endpoints (such as S2S in-app events, S2S first opens, S2S sessions, or Create OneLink Short Link) make real, billable changes in your AppsFlyer account — they affect attribution counts and may consume OneLink short-link quota. Use a sandbox or test app before sending test data against a production AppsFlyer account.
Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To begin sending data to AppsFlyer, open the destination resource menu, and select Activate.
The Nexset data will not be sent to AppsFlyer until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.