De un vistazo: Usa los URI para obtener reportes agregados en archivos CSV.
¿Estás buscando el raw data de Pull API?
Características de los datos agregados de Pull API
- Los reportes regresan como archivos CSV.
- Las tasas de actualización de datos son las mismas que las del reporte equivalente en la página Datos exportados y la página del panel de control general. Ten en cuenta que el costo puede actualizarse con un retraso de varias horas y esto depende de que el partner proporcione los datos de costos.
- Filtrar por opciones disponibles: fuente de medios e intervalo de fechas.
- Las capacidades adicionales en la Pull API son las siguientes:
- Capacidad de filtrar por tipo de toque de atribución
- La zona horaria se puede seleccionar.
- La Pull API es adecuada para que la utilicen los usuarios de la cuenta y desarrolladores de Business Intelligence.
- Los usuarios de la cuenta obtienen reportes pegando los URI en sus navegadores. Las plantillas de URI están disponibles en el Panel de control. Ve a Integración > Acceso a la API.
- Los desarrolladores de Business Intelligence obtienen reportes al incrustar los URI en los scripts.
Categoría | UA | Retargeting* | Protect360 |
---|---|---|---|
Partners (fuente de medios) | ✓ | ✓ | ✓ |
Partners por fecha |
✓ | ✓ | ✓ |
Diario |
✓ | ✓ | ✓ |
Geolocalización |
✓ | ✓ | ✓ |
Reporte de Geolocalización por Fecha |
✓ | ✓ | ✓ |
* Para los reportes de retargeting, agrega |
Lectura relacionada:
- Descripciones y ejemplos de reportes de estadísticas agregadas
- Selecciona la herramienta de entrega de datos adecuada para datos agregados
Terminología
Término | Descripción |
---|---|
API pull |
Solución para descargar reportes CSV utilizando URI. |
Llamada de la API o llamada |
Enviar el URI a AppsFlyer pegándolo en la barra de dirección del navegador o usando scripts. |
URI |
|
Guía para usuarios de la cuenta
Acerca de las plantillas de URI
- Las plantillas URI disponibles en el centro de desarrollo se rellenan con el ID de aplicación y el tipo de reporte.
- Tienen marcadores de posición para el token de la API V1.0 y desde/hasta las fechas que necesitas editar.
- La parte del URI a la derecha del signo de interrogación (?) contiene parámetros. Cada parámetro comienza con el signo &. Los parámetros se utilizan para establecer filtros, especificar campos adicionales a incluir, divisa y zona horaria. Por ejemplo, en reportes agregados para limitar (filtrar) una fuente de medios específica, usa el parámetro media_source:
&media_source=facebook
- Para obtener una mejor comprensión de la Pull API, completa el siguiente tutorial.
Obtener tu primer tutorial de reportes de la Pull API
Antes de comenzar:- Pide a un usuario administrador que te proporcione el token V1.0.
Para descargar un reporte desde el centro de desarrollo:
-
Ve a la referencia de la API del centro de desarrollo de AppsFlyer.
-
Selecciona un tipo de reporte en el menú de la izquierda.
Por ejemplo, Reportes de raw data (no orgánicos) > Instalaciones.
Consulta la tabla siguiente para ver una lista de todos los tipos de reportes. - Rellena todos los campos obligatorios
- La plantilla de URI se muestra a la derecha.
- Copia el URI haciendo clic en el icono de copia.
- Abre una pestaña nueva en tu navegador y pega el URI.
- Haz clic en <Enter> para enviar la llamada de la API.
Se descarga el reporte.
Reporte | Descripción | Velocidad de actualización |
---|---|---|
Reportes de raw data (no orgánicos) | ||
Instalaciones | Registra las instalaciones no orgánicas. El registro se genera cuando un usuario abre la aplicación por primera vez. |
Tiempo real |
Eventos in-app | Registra los eventos realizados por los usuarios. |
Tiempo real |
Desinstalar | Registra cuando un usuario desinstala la aplicación. |
Diario |
Reinstalaciones |
Registra a los usuarios que, tras desinstalar la aplicación, se involucran con una fuente de medios de UA y vuelven a instalar la aplicación durante la ventana de reatribución. | Tiempo real |
Reportes de raw data (orgánicos) |
||
Instalaciones orgánicas |
Registra cuándo un usuario abre la aplicación por primera vez. |
Continua |
Eventos in-app orgánicos |
Registra los detalles de los eventos realizados por los usuarios. |
Continua |
Desinstalaciones orgánicas |
Registra los usuarios que desinstalan la aplicación. |
Diario |
Reinstalaciones orgánicas |
Registra los ingresos por publicidad de los usuarios atribuidos a una fuente de medios de retargeting durante la ventana de re-engagement. |
Diaria |
Raw data de ingresos por publicidad |
||
Ingresos por publicidad atribuidos |
Registra los ingresos por publicidad de los usuarios atribuidos a una fuente de medios. | Diario |
Ingresos por publicidad orgánicos | Registra los ingresos por publicidad de los usuarios no atribuidos a una fuente de medios. | Diario |
Fraude Protect360 | ||
Instalaciones | Registra las instalaciones identificadas como fraudulentas y, por lo tanto, no atribuidas a ninguna fuente de medios. | Tiempo real |
Instalaciones post-atribución | Registra los eventos in-app de las instalaciones fraudulentas y que, por tanto, no se atribuyen en absoluto. | Tiempo real |
Eventos in-app | Registra los eventos in-app identificados como fraudulentos por Protect360. | Diario |
Eventos in-app post-atribución | Registra los eventos in-app de las instalaciones identificadas como fraudulentas tras ser atribuidas a una fuente de medios o juzgadas como fraudulentas sin tener en cuenta la propia instalación. | Diario |
Clics | Registra los clics realizados por los usuarios bloqueados por Protect360. | Diario |
Postbacks de instalación bloqueadas | Registra las copias de postbacks enviados a una fuente de medios, lo que genera una instalación bloqueada. | Tiempo real |
Postbacks | ||
Postbacks de instalación | Registra los eventos de instalación generados cuando un usuario abre la aplicación por primera vez. | Diario |
Postbacks de eventos in-app | Registra los postbacks de eventos in-app enviados a la fuente de medios. | Diario |
Retargeting de postbacks de eventos in-app | Registra los eventos in-app que los usuarios realizaron durante la ventana de recaptación. | Tiempo real |
Postbacks de conversiones de retargeting | Registra los eventos in-app que los usuarios realizaron durante la ventana de recaptación. | Tiempo real |
Parámetros de Pull API de datos agregados
Parámetros y URI del reporte agregado
Parámetro | Descripción |
---|---|
api_token | Token de la API V1.0.En las llamadas de ejemplo, esto se muestra como: <API TOKEN HERE>. |
desde |
|
hasta |
Fecha de finalización. Igual que para from
|
Parámetro | Descripción |
---|---|
media_source |
Usar para limitar (filtrar) a una fuente de medios específica.
|
attribution_touch_type |
Configura este parámetro tal como se muestra en el ejemplo para obtener KPI de atribución por impresiones (VTA). Ejemplo: |
moneda |
Divisa de ingresos y costos. Los reportes agregados de la Pull API siempre usan la divisa específica de la aplicación. |
reattr |
Obtener datos de conversión de retargeting.
|
Zona horaria |
[Predeterminado] Los datos se devuelven utilizando UTC.
Notas sobre la selección de zonas horarias
|
Reporte filtrado de 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
Reporte filtrado de 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
Parámetro | Descripción |
---|---|
URI |
|
PID |
Para filtrar el reporte por una fuente de medios específica, usa el parámetro |
Zona horaria |
Selecciona la zona horaria utilizada para devolver datos. Si timezone no se envía, los datos se devuelven utilizando UTC. Plantillas que incluyen el parámetro timezone. Ejemplo: |
KPIs |
Los parámetros de Protect360 son los mismos en Pull API y Master API.
|
KPI de atribución por impresiones (VTA)
- Para obtener los KPI de VTA, agrega el parámetro attribution_touch_type=impression al URI del reporte agregado de la Pull API, tal como se detalla en el ejemplo.
- Puedes usar el parámetro con cualquiera de los reportes agregados disponibles. Simplemente copia el URI de la interfaz de usuario y agrega el parámetro.
- También puedes agregar el parámetro &media_source para limitar el reporte a una fuente de medios específica, tal como se muestra en el ejemplo a continuación.
- Algunos KPI de VTA, como los clics, las impresiones y las API de costos, no tienen valores asociados y, en cambio, muestran el valor N/A.
Ejemplo | URI de ejemplo |
---|---|
Solo 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 y fuente de medios |
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 para desarrolladores
Principios de implementación
Requisito previo:
Familiarízate con la guía de Pull API para usuarios de cuentas.
Considera:
- Para cada tipo de reporte disponible, hay un URI de plantilla en el centro de desarrollo. Selecciona un tipo de reporte en el menú de la izquierda.
- Modifica la plantilla para obtener los datos que necesitas, por ejemplo, al establecer rangos de fechas y filtrar por parámetros.
- Los parámetros para reportes de raw data y de datos agregados difieren y se detallan en las secciones del reporte.
Ruta |
|
Parámetros de ruta |
|
Método HTTP |
|
Parámetro | Descripción |
---|---|
URI de ejemplo |
|
api_token |
|
Otros parámetros |
Los parámetros difieren en función de: |
Ejemplo
El ejemplo de llamada de URI incluye parámetros adicionales:
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
Scripts de ejemplo
Integra Pull API en scripts para recuperar datos.
- Según sea necesario, edita los scripts en términos de tipo de reporte, rango de fechas y filtros.
- Estos ejemplos usan el reporte install.
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;
}
?>
Información adicional
Rasgos y limitaciones
Característica | Comentarios |
---|---|
Se requiere el tipo de token de la API |
![]() |
Acceso a la red de publicidad | N |
Acceso de agencias | Y |
Transparencia de Agencias | Y |
Divisa específica de la aplicación | Y |
Zona horaria específica de la aplicación | Y |
Costo | Los datos de costos son solo para campañas de UA; no son para retargeting o campañas inactivas (campañas sin instalaciones). |
Actualización de los datos | Continua |
Historial de datos | Y |
Datos no orgánicos | Y |
datos orgánicos | Y |
Limitaciones de velocidad | |
Limitaciones de tamaño |
¡Nota! Pull API para soporte de datos sin procesar 1 millón de filas. Los reportes de datos agregados están limitados a 200 000 filas. |
Cambios del nombre de campaña | Los reportes de la Pull API no admiten cambios del nombre de campaña |
Códigos de error y solución de problemas de la API
Estado | Código | Síntoma/mensaje | SOLUCIÓN |
---|---|---|---|
OK | 200 | Archivo CSV vacío |
|
OK |
200 |
|
No se encontró ningún token de API en el URI |
Solicitud incorrecta |
400 |
La retrospectiva histórica de reportes de raw data se limita a 90 días. |
Usa |
Solicitud incorrecta |
400 |
Se ha alcanzado tu límite de llamadas a la API para el tipo de reporte. |
- |
No autorizado |
401 |
El token suministrado de la API no es válido. |
Pregunta al administrador por el token actual. |
No autorizado |
401 |
La cuenta puede ser suspendida. |
Entra en el panel de control y comprueba el estado de la cuenta. |
No se encuentra |
404 |
Se muestra la página de mensajes de error 404 de AppsFlyer |
|