canonical: https://jentic.com/apis/api.appsflyer.com/appsflyer

# AppsFlyer API

The AppsFlyer API exposes the company's mobile attribution and marketing analytics platform, covering install, in-app event, uninstall, and aggregate reports along with server-to-server event ingestion and basic user management. Endpoints are split between Bearer-token-authenticated paths (raw data exports, aggregate reports) and API-key-authenticated paths (server-to-server events and user management). Useful for mobile growth teams that want attribution data inside their own warehouse, ETL pipelines, or marketing-mix model rather than the AppsFlyer UI.

## For AI agents

Pull AppsFlyer mobile attribution data - installs, in-app events, uninstalls, and aggregate marketing reports - and ingest server-to-server events.

## Scope

Does not handle ad creative management, mobile-SDK install tracking on-device, or audience activation in ad networks - use for AppsFlyer attribution data export and S2S event ingestion only.

## Capabilities

- List the apps registered in an AppsFlyer account via /apps/v1.0/list
- Export raw install records via /raw-data/export/app/{app_id}/installs/v5
- Export raw in-app event records via /raw-data/export/app/{app_id}/in-app-events/v5
- Export raw uninstall records via /raw-data/export/app/{app_id}/uninstalls/v5
- Pull partner-by-date and geo-by-date aggregate marketing reports via /aggregate/v2.0/partners_by_date and /aggregate/v2.0/geo_by_date
- Send server-to-server in-app events via POST /inappevent/{app_id}
- Manage AppsFlyer account users via /v1.0/users

## Use cases

### Attribution data into the warehouse

Schedule an ETL job that calls the raw-data export endpoints (installs, in-app events, uninstalls) on a regular cadence, drops the resulting CSVs into S3, and loads them into Snowflake or BigQuery. From there, marketing analysts join attribution against revenue, cohort, and CRM data without paying per query in the AppsFlyer UI. This is the standard pattern for any growth team that has its own warehouse.

Example prompt: Call /raw-data/export/app/{app_id}/installs/v5 with from and to date params for the last 24 hours and write the response CSV to s3://attribution-raw/installs/.

### Server-to-server event ingestion

Send post-install events from the backend to AppsFlyer through POST /inappevent/{app_id} so attribution and remarketing signals stay accurate even when conversion happens server-side (subscription renewal, customer service refund, B2B activation). This avoids relying on the mobile SDK alone and ensures revenue events are credited to the originating campaign.

Example prompt: POST /inappevent/{app_id} with eventName=af_purchase, eventValue, customerUserId, and the original installation's appsflyer_id.

### Aggregate reporting in dashboards

Pull AppsFlyer aggregate reports (partner_by_date, geo_by_date) and render them in a BI dashboard without buying additional AppsFlyer reporting seats. The aggregate endpoints return the same numbers as the AppsFlyer UI tables and are well suited to a Looker or Metabase dashboard refreshed on a daily cadence. Reduces seat cost and gives analysts the data alongside other sources.

Example prompt: Call /aggregate/v2.0/partners_by_date/app/{app_id} with from=last_30d, to=today and store the rows in a Snowflake table for the dashboard.

### Agent integration via Jentic

Give a growth-marketing agent a small set of attribution-data tools through Jentic. The agent can answer 'how many installs did Facebook drive last week?' by loading /aggregate/v2.0/partners_by_date and 'send a renewal event to AppsFlyer' by loading /inappevent/{app_id}, with both Bearer and API-key credentials kept in your Jentic One instance.

Example prompt: Search Jentic for 'AppsFlyer installs by partner', load /aggregate/v2.0/partners_by_date/app/{app_id}, and execute it with the requested app and date range.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /apps/v1.0/list | List apps registered in the AppsFlyer account |
| GET | /raw-data/export/app/{app_id}/installs/v5 | Export raw install records for an app |
| GET | /raw-data/export/app/{app_id}/in-app-events/v5 | Export raw in-app event records |
| GET | /raw-data/export/app/{app_id}/uninstalls/v5 | Export raw uninstall records |
| POST | /inappevent/{app_id} | Ingest a server-to-server in-app event |
| GET | /aggregate/v2.0/partners_by_date/app/{app_id} | Partner-by-date aggregate report |
| GET | /aggregate/v2.0/geo_by_date/app/{app_id} | Geo-by-date aggregate report |
| GET | /v1.0/users | Manage AppsFlyer users |

## Key resources

- **Apps** — List apps registered in the AppsFlyer account
- **Raw Data Exports** — Install, in-app event, and uninstall raw record exports per app
- **Aggregate Reports** — Partner-by-date and geo-by-date aggregated marketing reports
- **Server-to-Server Events** — Ingest post-install events from a backend
- **User Management** — Manage users with access to the AppsFlyer account

## Why Jentic

- **Setup:** Wiring the AppsFlyer API by hand means choosing between its bearer and API key auth, targeting the hq1 host, and mapping the raw-data, aggregate, and S2S event routes yourself. Through Jentic you install once, import AppsFlyer from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** AppsFlyer puts the app id in the URL path (/raw-data/export/app/{app_id}/installs/v5), so a rule can pin your agent to one app: it can export that app's attribution data and nothing else. You choose the operations it may call, so S2S event ingestion is only included if you add it.
- **Credential handling:** Your AppsFlyer bearer token or API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'export installs raw data', and Jentic returns the matching AppsFlyer operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Adjust API** — Comparable mobile attribution platform with raw data and aggregate reporting
- **Kochava API** — Cross-channel measurement and attribution platform alternative
- **Amplitude API** — Product analytics platform that pairs with AppsFlyer attribution for funnel analysis

## FAQ

### What authentication does the AppsFlyer API use?

Authentication is split between two schemes. Raw data and aggregate report endpoints use a Bearer token issued from the AppsFlyer dashboard, while server-to-server event ingestion (/inappevent/{app_id}) and user management use an API key in the Authorization header. Through Jentic both credentials sit in your Jentic One instance and the right one is injected per operation.

### Can I export raw install and in-app event data with the AppsFlyer API?

Yes. /raw-data/export/app/{app_id}/installs/v5 returns a CSV of install records, /raw-data/export/app/{app_id}/in-app-events/v5 returns events, and /raw-data/export/app/{app_id}/uninstalls/v5 returns uninstalls. All accept from and to date parameters and respect the data-rate plan attached to the AppsFlyer account.

### How do I send a server-to-server event to AppsFlyer?

POST /inappevent/{app_id} with the appsflyer_id (or customerUserId), eventName (e.g. af_purchase), eventValue, and eventCurrency. Use the API-key Authorization header. This is how backend-side conversions (subscription renewal, server-confirmed purchase) are credited to the original install.

### What are the rate limits for the AppsFlyer API?

Raw data export endpoints are rate-limited to a small number of requests per minute per app (typically tens), while aggregate and S2S endpoints allow higher throughput. Bulk warehouse syncs should chunk by date and back off on 429 responses; do not try to export months of data in a single call.

### How do I pull AppsFlyer attribution data through Jentic?

Search Jentic for 'AppsFlyer installs raw export', load /raw-data/export/app/{app_id}/installs/v5, and execute it with from=YYYY-MM-DD, to=YYYY-MM-DD, and additional_fields if needed. The response is a CSV that the agent can stream into the warehouse without holding the full file in memory.

### Can I list every app in my AppsFlyer account?

Yes. GET /apps/v1.0/list returns the apps visible to the calling token along with their app_id, platform, and ownership metadata. Use this to power a dashboard selector or to iterate raw-data exports across every app in the account.

### Can I limit what my agent is allowed to do with the AppsFlyer API?

Yes. Jentic One is self-hosted, so your own rules decide which AppsFlyer operations and credentials the agent may use. Because AppsFlyer carries the app id in the URL path, such as /raw-data/export/app/{app_id}/installs/v5, you can pin the agent to a single app so it exports only that app's attribution data. You also choose the exact operations it may call, so write actions like server-to-server event ingestion via POST /inappevent/{app_id} or user management on /v1.0/users are available only if you add them.
