API REST
Guías de uso
Recetas concretas para los casos más comunes. Si tu caso no está aquí, escríbenos a soporte y lo agregamos.
1 · Exportar pedidos a Google Sheets
Para Google Sheets recomendamos la plantilla Apps Script en lugar de llamar a curl manualmente. Pero si quieres un dump puntual:
curl "https://api.sellerp.com/v1/orders?from=2026-04-01T00:00:00Z&to=2026-04-30T23:59:59Z&limit=100" \
-H "Authorization: Bearer sellk_..." \
| jq '.data[] | [.id, .marketplace, .status, .total, .date_closed] | @csv'2 · Dashboard externo (Retool, Metabase, Looker)
Conecta tu herramienta de BI usando el endpoint REST como source. Ejemplo con curl autenticado para Retool:
retool resource configjson
{
"baseUrl": "https://api.sellerp.com/v1",
"headers": {
"Authorization": "Bearer {{ environment.SELLERP_API_KEY }}"
},
"queryParams": {
"limit": "100"
}
}3 · ETL incremental con delta-sync
Patrón recomendado para cargar pedidos a tu data warehouse cada 15 minutos. En cada corrida:
- Lee de tu DB el
last_updatedmáximo procesado (default: hace 15 min). - Llama
GET /v1/orders?updated_since=<last>con cursor pagination. - UPSERT cada pedido por id en tu warehouse (idempotente).
- Guarda el nuevo
last_updatedmax para la siguiente corrida.
etl.ts (esquema)ts
async function syncOrdersIncremental() {
const lastUpdated = await db.read("orders.last_updated_at") ?? Date.now() - 15 * 60_000;
let cursor: string | undefined;
let maxUpdated = lastUpdated;
do {
const res = await fetch(`https://api.sellerp.com/v1/orders?updated_since=${new Date(lastUpdated).toISOString()}&limit=100${cursor ? `&cursor=${cursor}` : ""}`, {
headers: { Authorization: `Bearer ${process.env.SELLERP_API_KEY}` }
});
if (!res.ok) throw new Error(`SELLERP error ${res.status}`);
const { data, pagination } = await res.json();
for (const order of data) {
await db.upsert("orders", order);
const t = new Date(order.last_updated).getTime();
if (t > maxUpdated) maxUpdated = t;
}
cursor = pagination.next_cursor;
} while (cursor);
// Margen de 1 minuto para evitar perder updates concurrentes en la siguiente corrida.
await db.write("orders.last_updated_at", maxUpdated - 60_000);
}4 · Notificarte por Slack cuando entra una venta grande
Hasta que liberemos webhooks (v1.1, ver roadmap), el patrón es:
- Cron cada 5 min con
updated_since. - Para cada pedido nuevo con
total > threshold, postear a Slack vía incoming webhook. - Guarda los IDs ya notificados (Set en Redis) para evitar duplicados si re-procesas la ventana.