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 |
✓ | ✓ | ✓ |
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 de URI disponibles en el panel de control se rellenan con el ID de la 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:- Pídele al administrador que te proporcione el token V1.0.
Descargar un reporte desde el panel de control:
-
Ve a Integración > Acceso a la API.
Se abre la página de acceso a la API. - Selecciona un tipo de reporte. Por ejemplo, Reportes de rendimiento > Reporte diario de partners.
Aparece la plantilla de URI. - Copia el URI haciendo clic en él.
- Abre una pestaña nueva en tu navegador y pega el URI.
- Editar el URI:
- Reemplaza el marcador de posición del token con el token de la Pull API que te proporcionó el administrador.
Ejemplo: Reemplaza el marcador de posición del token de modo que obtengas&api_token=12345678-1234-1234-1234-123456789012
Nota: No hay espacios u otros signos de puntuación. - Reemplaza los marcadores de posición from/to por fechas.
Ejemplo:&from=2020-01-20&to=2020-01-31
Nota No hay espacios No elimines el signo &.
- Reemplaza el marcador de posición del token con el token de la Pull API que te proporcionó el administrador.
- Haz clic en <Enter> para enviar la llamada de la API.
Se descarga el reporte.
Se pueden establecer parámetros adicionales para personalizar los reportes, por ejemplo, seleccionar una fuente de medios específica, devolver los datos de retargeting, etc. En la sección que sigue se presenta la lista de parámetros disponibles.
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 una plantilla de URI en el panel de control. Ve a Integración > Acceso a la API.
- 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 |
|