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
ketegori | UA | Penargetan Ulang* | Protect360 |
---|---|---|---|
Partners (media source) | ✓ | ✓ | ✓ |
Partners by date |
✓ | ✓ | ✓ |
Harian |
✓ | ✓ | ✓ |
Geo |
✓ | ✓ | ✓ |
Geo berdasarkan 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 dashboard diisi dengan ID aplikasi dan tipe laporan.
- Ini memiliki place holder untuk token API V1.0 dan dari/hingga tanggal yang perlu 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 admin untuk memberi Anda token V1.0.
Untuk mengunduh laporan dari dashboard:
-
Buka Integrasi > Akses API.
Halaman akses API dibuka. - Pilih jenis laporan. Misalnya, Laporan kinerja > Laporan harian mitra.
Templat URI ditampilkan. - Salin URI dengan mengkliknya.
- Buka tab baru di browser Anda, lekatkan URI.
- Edit URI:
- Ganti placeholder token dengan token Pull API yang disediakan oleh admin.
Contoh: Ganti placeholder token sehingga&api_token=12345678-1234-1234-1234-123456789012
Perhatian! Tidak ada spasi atau tanda baca lainnya. - Ganti dari/to placeholder dengan tanggal.
Contohnya:&dari=20-01-2020&hingga=31-01-2020
Catatan! Tidak ada spasi. Jangan hapus &.
- Ganti placeholder token dengan token Pull API yang disediakan oleh admin.
- Klik <Enter> untuk mengirimkan panggilan API.
Pengunduhan laporan.
Parameter tambahan dapat diatur untuk menyesuaikan laporan, misalnya, memilih sumber media tertentu, untuk menghasilkan data penargetan ulang, dll. Bagian berikutnya berisi daftar parameter yang tersedia.
Parameter Pull API data agregat
URI laporan agregat dan parameter
Parameter | Deskripsi |
---|---|
api_token | Token API V1.0. Pada contoh panggilan, ini ditampilkan sebagai: <TOKEN API DI SINI>. |
from |
|
ke |
Tanggal selesai. Seperti untuk dari
|
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?api_token=xxxx
&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?api_token=xxxx
&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?api_token={API token}&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?api_token={API token}&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 dashboard. Buka Integrasi > Akses API.
- 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?
api_token={Account owner API key should be used}&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 apiToken = "<API_TOKEN>";
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 apiToken = '<API_TOKEN>';
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 = {
'api_token': '<API_TOKEN>',
'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 apiToken = "<API_TOKEN>";
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>';
$apiToken = '<API_TOKEN>';
$from = '<FROM_DATE>';
$to = '<TO_DATE>';
$query = http_build_query([
'api_token' => $apiToken,
'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 |
|