Sekilas: Gunakan URI untuk mendapatkan laporan gabungan AppsFlyer Anda dalam file CSV.
Apakah Anda mencari data lengkap Pull API?
Karakteristik data agregat Pull API
- Laporan kembali sebagai file CSV.
- Tingkat kesegaran data sama dengan laporan yang setara di halaman Data Ekspor dan halaman dasbor Ikhtisar. Pertimbangkan bahwa biaya dapat diperbarui dengan jeda beberapa jam dan ini tergantung pada mitra yang menyediakan data biaya.
- Filter menurut opsi yang tersedia: Sumber media dan rentang tanggal.
- Keunggulan tambahan dalam Pull API adalah:
- Kemampuan memfilter berdasarkan attributed touch type
- Zona waktu yang dapat dipilih
- Pull API cocok digunakan oleh pengguna akun dan pengembang BI;
- Pengguna akun mendapatkan laporan dengan merekatkan URI di browser mereka. Templat URI tersedia di Dasbor. Buka Integration(Integrasi) > API access(Akses API)
- Pengembang BI mendapatkan laporan dengan menyematkan URI dalam skrip.
Contoh templat URI
Laporan kinerja agregat tersedia melalui Pull API
ketegori | UA | Penargetan Ulang* | Protect360 |
---|---|---|---|
Partners (media source) | ✓ | ✓ | ✓ |
Partners by date |
✓ | ✓ | ✓ |
Harian |
✓ | ✓ | ✓ |
Geo |
✓ | ✓ | ✓ |
Lokasi Berdasarkan Laporan Tanggal |
✓ | ✓ | ✓ |
* Untuk laporan penargetan ulang, tambahkan |
Bacaan terkait:
Terminologi
Istilah | Deskripsi |
---|---|
Pull API |
Solusi untuk mengunduh laporan CSV menggunakan URI. |
Panggilan API atau panggilan |
Mengirimkan URI ke AppsFlyer dengan melekatkannya di bilah alamat browser atau dengan menggunakan skrip. |
URI |
|
Panduan untuk pengguna akun
Tentang templat URI
- Templat URI yang tersedia di pusat pengembang diisi dengan ID aplikasi dan jenis laporan.
- Templat URI memiliki place holder untuk tanggal dari dan sampai yang harus Anda edit.
- Bagian URI di sebelah kanan tanda pertanyaan (?) berisi parameter. Setiap parameter dimulai dengan tanda & (&). Parameter digunakan untuk mengatur filter, menentukan bidang tambahan untuk dimasukkan, mata uang, dan zona waktu. Misalnya, di laporan agregat untuk membatas (menyaring berdasarkan) sumber media tertentu, gunakan parameter sumber media:
&media_source=facebook
- Untuk mendapatkan pemahaman yang lebih baik tentang Pull API, lengkapi tutorial berikut.
Mendapatkan tutorial laporan Pull API pertama Anda
Sebelum Anda mulai:- Minta pengguna admin untuk memberikan Anda token Pull API.
Untuk mengunduh laporan dari pusat pengembang (dev hub):
-
Buka referensi API dev hub AppsFlyer.
-
Pilih jenis laporan dari menu sebelah kiri.
Misalnya, Laporan data lengkap (non-organik) > Penginstalan.
Lihat tabel di bawah untuk daftar semua jenis laporan. - Isi semua bidang yang diperlukan
- Templat URI ditampilkan di sebelah kanan.
- Salin URI dengan mengklik ikon salin.
- Buka tab baru di browser Anda dan rekatkan URI.
- Klik <Enter> untuk mengirimkan panggilan API.
Pengunduhan laporan.
Laporan | Deskripsi | Tingkat penyegaran |
---|---|---|
Laporan data lengkap (non-organik) | ||
Install | Mencatat penginstalan non-organik. Catatan dibuat saat pengguna membuka aplikasi untuk pertama kalinya. |
Waktu sebenarnya |
In-App Event | Mencatat event yang dilakukan pengguna. |
Waktu sebenarnya |
mencopot pemasangan | Mencatat saat pengguna meng-uninstall aplikasi. |
Harian |
Penginstalan ulang |
Mencatat pengguna yang setelah meng-uninstall aplikasi, berinteraksi dengan sumber media UA, dan menginstal ulang aplikasi selama jendela atribusi ulang. | Waktu sebenarnya |
Laporan data lengkap (organik) |
||
Penginstalan Organik |
Mencatat saat aplikasi dibuka oleh pengguna untuk pertama kalinya. |
Berkelanjutan |
In-app event organik |
Mencatat detail tentang event yang dilakukan pengguna. |
Berkelanjutan |
Uninstall organik |
Mencatat pengguna yang meng-uninstall aplikasi. |
Harian |
Penginstalan organik |
Mencatat pendapatan iklan untuk pengguna yang diatribusikan ke sumber media penargetan ulang selama jendela interaksi ulang. |
Harian |
Data lengkap pendapatan iklan |
||
Pendapatan iklan yang diatribusikan |
Mencatat pendapatan iklan untuk pengguna yang diatribusikan ke sumber media. | Harian |
Pendapatan iklan organik | Mencatat pendapatan iklan untuk pengguna yang tidak diatribusikan ke sumber media. | Harian |
Penipuan Protect360 | ||
Install | Catatan penginstalan diidentifikasi sebagai penipuan dan oleh karena itu tidak diatribusikan ke sumber media apa pun. | Waktu sebenarnya |
Instalasi pasca atribusi | Mencatat in-app event dari penginstalan palsu dan oleh karena itu tidak diatribusikan sama sekali. | Waktu sebenarnya |
In-App Event | Mencatat in-app event yang diidentifikasi sebagai penipuan oleh Protect360. | Harian |
In-app event pasca atribusi | Mencatat in-app event untuk penginstalan yang diidentifikasi sebagai penipuan setelah diatribusikan ke sumber media atau dinilai curang tanpa memperhatikan penginstalan itu sendiri. | Harian |
Klik | Mencatat klik yang dilakukan pengguna yang diblokir oleh Protect360. | Harian |
Postback instalasi yang diblokir | Mencatat salinan postback yang dikirim ke sumber media yang mengakibatkan penginstalan yang diblokir. | Waktu sebenarnya |
Postback (postingan balik) | ||
Postback penginstalan | Mencatat event penginstalan yang dihasilkan saat pengguna membuka aplikasi untuk pertama kalinya. | Harian |
Postback in-app event | Mencatat postback in-app event yang dikirim ke sumber media. | Harian |
Penargetan ulang postback in-app event | Mencatat in-app event yang dilakukan pengguna selama jendela interaksi ulang. | Waktu sebenarnya |
Postback konversi penargetan ulang | Mencatat in-app event yang dilakukan pengguna selama jendela interaksi ulang. | Waktu sebenarnya |
Parameter Pull API data agregat
URI laporan agregat dan parameter
Parameter wajib URI agregat
Parameter | Deskripsi |
---|---|
api_token | token otorisasi API bearer. |
from |
|
ke |
Tanggal selesai. Seperti untuk dari
|
Penyaringan opsional data agregat dan parameter tampilan tidak termasuk laporan Protect360
Parameter | Deskripsi |
---|---|
media_source |
Gunakan untuk membatasi (filter) ke sumber media tertentu.
|
attribution_touch_type |
Atur parameter ini seperti yang ditunjukkan pada contoh untuk mendapatkan atribusi lihat-tayang (VTA) KPI. Contoh: |
currency |
Mata uang pendapatan dan biaya Laporan Pull API agregat selalu menggunakan mata uang khusus aplikasi. |
atribusi ulang |
Dapatkan data konversi penargetan ulang.
|
zona waktu |
[Default] Data kembali menggunakan UTC.
Catatan tentang pemilihan zona waktu
|
Laporan Google Ads yang difilter
https://hq.appsflyer.com/export/com.greatapp/partners_report/v5?
from=2018-04-09&to=2018-05-09&media_source=googleadwords_int
Laporan Facebook yang difilter
https://hq.appsflyer.com/export/com.greatapp/partners_report/v5?
from=2018-04-09&to=2018-05-09&media_source=facebook
Parameter | Deskripsi |
---|---|
URI |
|
PID |
Untuk menyaring laporan berdasarkan sumber media tertentu gunakan parameter |
zona waktu |
Pilih zona waktu yang dipilih untuk mengembalikan data. Jika zona waktu tidak dikirim, data dikembalikan menggunakan UTC. Templat termasuk parameter zona waktu. Contohnya: |
KPI |
Parameter Protect360 adalah sama antara Pull API dan Master API.
|
Atribusi view-through (VTA) KPI
- Untuk mendapatkan VTA KPI, tambah parameter attribution_touch_type=impression ke URI laporan agregat Pull API seperti yang diperinci pada contoh.
- Anda dapat menggunakan parameter dengan laporan agregat apa pun yang tersedia. Cukup salin URI dari antarmuka pengguna, dan tambahkan parameter.
- Anda juga dapat menambahkan parameter &media_source untuk membatasi laporan ke sumber media tertentu seperti yang digambarkan pada contoh berikut.
- Beberapa VTA KPI, seperti klik, tayangan iklan, dan API biaya, tidak memiliki nilai terkait dengannya dan menampilkan nilai N/A.
Contoh | Contoh URI |
---|---|
Khusus VTA | https://hq.appsflyer.com/export/{app_id}/partners_report/v5?from=yyyy-mm-dd&to=yyyy-mm-dd&attribution_touch_type=impression |
VTA dan sumber media |
https://hq.appsflyer.com/export/{app_id}/partners_report/v5?from=yyyy-mm-dd&to=yyyy-mm-dd&attribution_touch_type=impression&media_source=example_ad_network |
Pull API untuk pengembang
Prinsip implementasinya
Prasyarat:
Biasakan diri Anda dengan Panduan Pull API untuk pengguna akun.
Pertimbangkan:
- Untuk setiap jenis laporan yang tersedia, ada templat URI di pusat pengembang . Pilih jenis laporan dari menu sebelah kiri.
- Anda memodifikasi templat untuk mendapatkan data yang Anda butuhkan, misalnya, dengan menetapkan rentang tanggal dan memfilter menurut parameter.
- Parameter untuk data lengkap dan laporan data agregat berbeda dan diperinci di sesi laporan.
Jalur |
|
Parameter jalur |
|
Metode HTTP |
|
Parameter | Deskripsi |
---|---|
Contoh URI |
|
api_token |
|
Parameter lainnya |
Parameter berbeda-beda tergantung |
Contoh
Contoh panggilan URI termasuk parameter tambahan:
https://hq.appsflyer.com/export/example.app.com/installs_report/v5?
from=yyyy-mm-dd
&to=yyyy-mm-dd&additional_fields=keyword_id,store_reinstall,
deeplink_url,oaid,install_app_store,contributor1_match_type,
contributor2_match_type,contributor3_match_type,match_type
Contoh skrip
Integrasikan Pull API ke dalam skrip untuk mengambil data.
- Sesuai kebutuhan, edit skrip dalam hal jenis laporan, rentang data, dan filter.
- Contoh ini menggunakan laporan instalasi.
import okhttp3.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.concurrent.TimeUnit;
public class PullApi {
public static void main(String[] args){
String appID = "<APP_ID>";
String reportType = "<REPORT_TYPE>";
String from = "<FROM_DATE>";
String to = "<TO_DATE>";
String requestUrl = "https://hq.appsflyer.com/export/" + appID + "/" + reportType + "/v5?api_token=" + apiToken + "&from=" + from + "&to=" + to;
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.url(requestUrl)
.addHeader("Accept", "text/csv")
.build();
try {
Response response = client.newCall(request).execute();
if(response.code() != 200) {
if(response.code() == 404) {
System.out.println("There is a problem with the request URL. Please make sure it is correct");
}
else {
assert response.body() != null;
System.out.println("There was a problem retrieving the data: " + response.body().string());
}
} else {
assert response.body() != null;
String data = response.body().string();
BufferedWriter writer;
writer = new BufferedWriter(new FileWriter(appID + "-" + reportType + "-" + from + "-to-" + to + ".csv"));
writer.write("");
writer.write(data);
writer.close();
}
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
request = require('request');
const fs = require('fs');
const appID = '<APP_ID>';
const reportType = '<REPORT_TYPE>';
const from = '<FROM_DATA>';
const to = '<T0_DATE>';
const requestUrl = `https://hq.appsflyer.com/export/${appID}/${reportType}/v5?api_token=${apiToken}&from=${from}&to=${to}`;
request(requestUrl, (error, response, body) => {
if (error) {
console.log('There was a problem retrieving data:', error);
}
else if (response.statusCode != 200) {
if (response.statusCode === 404) {
console.log('There is a problem with the request URL. Make sure that it is correct');
} else {
console.log('There was a problem retrieving data:', response.body);
}
} else {
fs.writeFile(`${appID}-${reportType}-${from}-to-${to}.csv`, response.body, (err) => {
if (err) {
console.log('There was a problem writing to file: ', err);
} else {
console.log('File was saved');
}
});
}
});
import requests
app_id = '<APP_ID>'
report_type = '<REPORT_TYPE>'
params = {
'from': 'FROM_DATE',
'to': 'TO_DATE'
}
request_url = 'https://hq.appsflyer.com/export/{}/{}/v5'.format(app_id, report_type)
res = requests.request('GET', request_url, params=params)
if res.status_code != 200:
if res.status_code == 404:
print('There is a problem with the request URL. Make sure that it is correct')
else:
print('There was a problem retrieving data: ', res.text)
else:
f = open('{}-{}-{}-to-{}.csv'.format(app_id, report_type, params['from'], params['to']), 'w', newline='', encoding="utf-8")
f.write(res.text)
f.close()
using System;
using RestSharp;
using System.Text;
using System.Net;
using System.IO;
namespace Pull_API
{
class PullAPi
{
static void Main(string[] args)
{
var appID = "<APP_ID>";
var reportType = "<REPORT_TYPE>";
var from = "<FROM_DATE>";
var to = "<TO_DATE>";
var requestUrl = "https://hq.appsflyer.com/export/" + appID + "/" + reportType + "/v5?api_token=" + apiToken + "&from=" + from + "&to=" + to;
var client = new RestClient(requestUrl);
var request = new RestRequest(Method.GET);
request.AddHeader("Accept", "text/csv; charset=UTF-8");
IRestResponse response = client.Execute(request);
HttpStatusCode statusCode = response.StatusCode;
int numericStatusCode = (int)statusCode;
if(numericStatusCode != 200){
if(numericStatusCode == 404){
Console.WriteLine("There is a problem with the request URL. Make sure that it is correct.");
} else {
Console.WriteLine("There was a problem retrieving data: " + response.Content);
}
} else {
System.IO.File.WriteAllText(@"" + appID + "-" + reportType + "-" + from + "-to-" + to + ".csv", response.Content);
Console.WriteLine("Data retrieved succesfully");
}
}
}
}
<?
$appID = '<APP_ID>';
$reportType = '<REPORT_TYPE>';
$from = '<FROM_DATE>';
$to = '<TO_DATE>';
$query = http_build_query([
'from' => $from,
'to' => $to
]);
$requestUrl = 'https://hq.appsflyer.com/export/' . $appID . '/' . $reportType . '/v5?'.$query;
$report = $appID . '-' . $report . '-' . $from . '-to-' . $to;
$curl = curl_init($requestUrl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_ENCODING, "");
curl_setopt($curl, CURLOPT_NOSIGNAL, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 100);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"cache-control: no-cache",
"Accept: text/csv; charset=UTF-8"
));
$response = curl_exec($curl);
$info = curl_getinfo($curl);
$err = curl_error($curl);
curl_close($curl);
var_dump($response);
if ($err) {
echo $info['http_code'];
echo "cURL Error #: " . $err . '. ';
if ($info['http_code'] == 404) {
echo 'There is a problem with the request URL. Make sure that it is correct';
}
if ($info['http_code'] == 401) {
echo 'There was a problem retrieving data: authentication failed.';
}
echo PHP_EOL;
} else {
$fp = fopen($report, 'w+');
fwrite($fp, $response);
fclose($fp);
echo $response;
}
?>
Informasi Tambahan
Karakteristik dan batasan
Sifat | Komentar |
---|---|
Jenis token API diperlukan |
![]() |
Akses jaringan iklan | N |
Akses agensi | Y |
Transparansi agensi | Y |
Mata uang khusus aplikasi | Y |
Zona waktu khusus aplikasi | Y |
Biaya | Data biaya hanya untuk kampanye UA; bukan untuk penargetan ulang atau kampanye tidak aktif (kampanye tanpa penginstalan apa pun). |
Kesegaran data | Berkelanjutan |
Data historis | Y |
Data non-organik | Y |
Data organik | Y |
Batasan tingkat | |
Keterbatasan ukuran |
Perhatikan! Pull API untuk data lengkap mendukung 1 juta baris. Laporan data gabungan dibatasi hingga 200 ribu baris. |
Perubahan nama kampanye | Laporan Pull API tidak mendukung perubahan nama kampanye |
Kode kesalahan dan penyelesaian masalah API
Status | Kode | Petunjuk/pesan | Solusi |
---|---|---|---|
OK | 200 | File CSV kosong |
|
OK |
200 |
|
Tidak ada token API yang ditemukan di URI |
Bad request (permintaan bermasalah). |
400 |
Lookback historis Raw Reports (Laporan Lengkap) dibatasi sampai 90 hari. |
Gunakan |
Bad request (permintaan bermasalah). |
400 |
Batas panggilan API Anda telah tercapai untuk jenis laporan yang diberikan |
- |
Tidak berwenang |
401 |
Token API yang disediakan tidak valid |
Mintalah token saat ini kepada admin. |
Tidak berwenang |
401 |
Akun dapat ditangguhkan |
Masuk ke dashboard dan periksa status akun. |
Tidak ditemukan |
404 |
Halaman pesan kesalahan AppsFlyer 404 ditampilkan |
|