Khái quát: Sử dụng URI để nhận báo cáo hợp nhất AppsFlyer của bạn dưới dạng tệp tin CSV.
Bạn đang tìm kiếm dữ liệu thô API Pull?
Đặc điểm của dữ liệu hợp nhất API Pull
- Báo cáo trả về dưới dạng tệp tin CSV.
- Tốc độ cập nhật dữ liệu giống như báo cáo tương đương trên trang Xuất Dữ liệu và trang bảng điều khiển Tổng quan. Xin lưu ý rằng chi phí có thể cập nhật với độ trễ vài giờ và điều này phụ thuộc vào đối tác cung cấp dữ liệu chi phí.
- Lọc theo các tùy chọn có sẵn: Nguồn truyền thông và phạm vi ngày.
- Các khả năng khác trong API Pull là:
- Có khả năng lọc theo kiểu tiếp xúc phân bổ
- Có thể lựa chọn múi giờ
- API Pull phù hợp cho người dùng tài khoản và nhà phát triển BI sử dụng;
- Người dùng tài khoản nhận báo cáo bằng cách dán URI vào trình duyệt của họ. Các mẫu URI có sẵn trong Bảng điều khiển. Đi đến Integration > API access.
- Nhà phát triển BI lấy báo cáo bằng cách nhúng các URI vào tập lệnh.
danh mục | UA | Nhắm mục tiêu lại* | Protect360 |
---|---|---|---|
Đối tác (nguồn truyền thông) | ✓ | ✓ | ✓ |
Đối tác theo ngày |
✓ | ✓ | ✓ |
Hằng ngày |
✓ | ✓ | ✓ |
Địa lý |
✓ | ✓ | ✓ |
Địa lý theo ngày |
✓ | ✓ | ✓ |
* Đối với các báo cáo nhắm mục tiêu lại, hãy thêm |
Bài viết liên quan:
Bảng thuật ngữ
Thuật ngữ | Mô tả |
---|---|
API Pull |
Giải pháp tải xuống báo cáo CSV bằng URI. |
Lệnh gọi API hoặc lệnh gọi |
Gửi URI tới AppsFlyer bằng cách dán URI vào thanh địa chỉ của trình duyệt hoặc sử dụng tập lệnh. |
URI |
|
Hướng dẫn cho người dùng tài khoản
Giới thiệu về mẫu URI
- Các mẫu URI có sẵn trong bảng điều khiển được điền bằng ID ứng dụng và loại báo cáo.
- Các mẫu này có phần giữ chỗ cho mã thông báo API V1.0 và ngày bắt đầu/kết thúc mà bạn cần chỉnh sửa.
- Phần của URI ở bên phải dấu chấm hỏi (?) chứa thông số. Mỗi thông số bắt đầu bằng ký hiệu (&). Các thông số được sử dụng để đặt bộ lọc, chỉ định các trường sẽ được thêm vào, tiền tệ và múi giờ. Ví dụ: trong các báo cáo hợp nhất để giới hạn (lọc theo) một nguồn truyền thông cụ thể, hãy sử dụng thông số media_source:
&media_source=facebook
- Để hiểu rõ hơn về API Pull, hãy hoàn thành hướng dẫn sau.
Nhận hướng dẫn báo cáo API Pull lần đầu của bạn
Trước khi bạn bắt đầu:- Yêu cầu quản trị viên cung cấp cho bạn mã thông báo V1.0.
Để tải xuống báo cáo từ bảng điều khiển:
-
Đi đến Tích hợp > Truy cập API.
Trang truy cập API sẽ mở ra. - Chọn một loại báo cáo. Ví dụ: Báo cáo hiệu suất > Báo cáo đối tác hàng ngày.
Mẫu URI sẽ hiển thị. - Sao chép URI bằng cách nhấp vào URI đó.
- Mở một tab mới trong trình duyệt của bạn rồi dán URI.
- Chỉnh sửa URI:
- Thay phần giữ chỗ mã thông báo bằng mã thông báo API Pull do quản trị viên cung cấp.
Ví dụ: Thay phần giữ chỗ mã thông báo sao cho&api_token=12345678-1234-1234-1234-123456789012
Lưu ý! Không có dấu cách hoặc dấu câu khác. - Thay phần giữ chỗ from/to bằng ngày tháng.
Ví dụ:&from=2020-01-20&to=2020-01-31
Lưu ý! Không có dấu cách. Không được xóa &.
- Thay phần giữ chỗ mã thông báo bằng mã thông báo API Pull do quản trị viên cung cấp.
- Nhấp vào <Enter> để gửi lệnh gọi API.
Báo cáo được tải xuống.
Các thông số bổ sung có thể được đặt để tùy chỉnh báo cáo, ví dụ: chọn một nguồn truyền thông cụ thể, để trả về dữ liệu nhắm mục tiêu lại, v.v. Phần tiếp theo gồm danh sách các thông số khả dụng.
Thông số dữ liệu hợp nhất API Pull
URI báo cáo hợp nhất và thông số
Tham số | Mô tả |
---|---|
api_token | Mã thông báo API V1.0. Trong ví dụ, các lệnh gọi này được hiển thị là: <API TOKEN HERE>. |
từ |
|
tới |
Ngày kết thúc. Đối với from
|
Tham số | Mô tả |
---|---|
media_source |
Sử dụng để giới hạn (lọc) cho một nguồn truyền thông cụ thể.
|
attribution_touch_type |
Đặt thông số này như trong ví dụ minh họa để lấy KPI phân bổ lượt xem hết (VTA). Ví dụ: |
tiền tệ |
Đơn vị tiền tệ của doanh thu và chi phí. Báo cáo API Pull hợp nhất luôn sử dụng đơn vị tiền tệ dành riêng cho ứng dụng. |
reattr |
Nhận dữ liệu lượt chuyển đổi nhắm mục tiêu lại.
|
Múi giờ |
[Mặc định] Dữ liệu trả về bằng cách sử dụng UTC.
Lưu ý về việc chọn múi giờ
|
Báo cáo đã lọc của Google Ads
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
Báo cáo đã lọc của Facebook
https://hq.appsflyer.com/export/com.greatapp/partners_report/v5?api_token=xxxx
&from=2018-04-09&to=2018-05-09&media_source=facebook
Tham số | Mô tả |
---|---|
URI |
|
PID |
Để lọc báo cáo theo một nguồn truyền thông cụ thể, hãy sử dụng thông số |
Múi giờ |
Chọn múi giờ được sử dụng để trả về dữ liệu. Nếu múi giờ không được gửi, dữ liệu được trả về sử dụng UTC. Mẫu bao gồm thông số múi giờ. Ví dụ: |
KPI |
Tham số Protect360 ở API kéo và API chính là giống nhau.
|
KPI phân bổ lượt xem hết (VTA)
- Để lấy KPI VTA, hãy thêm thông số attribution_touch_type=impression vào URI báo cáo hợp nhất API Pull được nêu chi tiết trong ví dụ.
- Bạn có thể sử dụng thông số cùng bất kỳ báo cáo hợp nhất nào có sẵn. Chỉ cần sao chép URI từ giao diện người dùng và nối thêm thông số.
- Bạn cũng có thể thêm thông số &media_source để giới hạn báo cáo chỉ một nguồn phương tiện cụ thể như được mô tả trong ví dụ sau.
- Một số KPI VTA, như lượt nhấp, lượt hiển thị và API chi phí, không có giá trị được liên kết với chúng và thay vào đó sẽ hiển thị giá trị N/A.
Ví dụ: | URI ví dụ |
---|---|
Chỉ 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 và nguồn truyền thông |
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 |
API Pull dành cho nhà phát triển
Nguyên tắc thực hiện
Điều kiện tiên quyết:
Tự tìm hiểu hướng dẫn API Pull dành cho người dùng tài khoản.
Cân nhắc:
- Đối với mỗi loại báo cáo có sẵn, sẽ có một URI mẫu trong bảng điều khiển. Đi đến Tích hợp > Truy cập API.
- Bạn sửa đổi mẫu để có được dữ liệu bạn cần, ví dụ như bằng cách đặt phạm vi ngày và bộ lọc theo thông số.
- Các thông số cho dữ liệu thô và báo cáo dữ liệu hợp nhất sẽ khác nhau và được trình bày chi tiết trong các phần báo cáo.
Đường dẫn |
|
Thông số đường dẫn |
|
Phương thức HTTP |
|
Tham số | Mô tả |
---|---|
URI ví dụ |
|
api_token |
|
Các thông số khác |
Các thông số khác nhau tùy thuộc vào |
Ví dụ
Ví dụ về lệnh gọi URI bao gồm các thông số bổ sung:
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
Các tập lệnh ví dụ
Tích hợp API Pull vào các tập lệnh để truy xuất dữ liệu.
- Khi cần, hãy chỉnh sửa tập lệnh về loại báo cáo, phạm vi ngày và bộ lọc.
- Các ví dụ này sử dụng báo cáo lượt cài đặt.
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;
}
?>
Thông tin Bổ sung
Đặc điểm và hạn chế
Đặc điểm | Nhận xét |
---|---|
Loại mã thông báo API bắt buộc |
![]() |
Truy cập mạng quảng cáo | N |
Truy cập đại lý | Y |
Tính minh bạch của agency | Y |
Tiền tệ dành riêng cho ứng dụng | Y |
Múi giờ riêng cho ứng dụng | Y |
Chi phí | Dữ liệu chi phí chỉ dành cho các chiến dịch UA; không dành cho các chiến dịch nhắm mục tiêu lại hoặc không hoạt động (chiến dịch không có bất kỳ lượt cài đặt nào). |
Độ mới của dữ liệu | Liên tục |
Dữ liệu lịch sử | Y |
Dữ liệu không tự nhiên | Y |
Dữ liệu tự nhiên | Y |
Giới hạn lưu lượng | |
Hạn chế về kích thước |
Lưu ý! API Pull lấy dữ liệu thô chỉ hỗ trợ 1 triệu hàng. Báo cáo dữ liệu hợp nhất có giới hạn chỉ 200 nghìn hàng. |
Thay đổi tên chiến dịch | Báo cáo API Pull không hỗ trợ thay đổi tên chiến dịch |
Mã lỗi API và khắc phục sự cố
Trạng thái | Mã | Dấu hiệu/thông báo | Giải pháp |
---|---|---|---|
OK | 200 | Tệp tin CSV trống |
|
OK |
200 |
|
Không tìm thấy mã thông báo API nào trong URI |
Yêu cầu không đạt |
400 |
Thời gian xem lại lịch sử báo cáo thô được giới hạn trong 90 ngày |
Sử dụng thông số |
Yêu cầu không đạt |
400 |
Đã đạt đến giới hạn lệnh gọi API của bạn cho loại báo cáo nhất định |
- |
Không được phép |
401 |
Mã thông báo API được cấp không hợp lệ |
Yêu cầu quản trị viên cấp mã thông báo hiện tại. |
Không được phép |
401 |
Tài khoản có thể bị tạm ngừng hoạt động |
Đăng nhập vào bảng điều khiển và kiểm tra trạng thái của tài khoản. |
Không tìm thấy |
404 |
Xuất hiện trang thông báo lỗi 404 của AppsFlyer |
|