Documentation Index
Fetch the complete documentation index at: https://docs.topsort.com/llms.txt
Use this file to discover all available pages before exploring further.
Este ejemplo demuestra un flujo completo utilizando las APIs de Topsort para una campaña de productos patrocinados con segmentación por categoría. Reemplaza las claves de API e IDs con tus credenciales y valores reales.
Pasos:
Sincronizar catálogo
Sincroniza tu catálogo de productos con Topsort
Crear una campaña
Configura una campaña de productos patrocinados
Enviar solicitudes de subasta
Solicita ganadores de subasta
Rastrear eventos
Reporta impresiones, clics y compras
Obtener reporte
Recupera datos de rendimiento de la campaña
- Para gestionar productos, campañas y reportes, usa una Advanced API Key
(TSC_…). - Para subastas y eventos, usa una Marketplace API Key (TSE_…).
1. Sincronizar Catálogo
Un producto de ejemplo example-product-coca-cola, de la categoría soft-drinks es usado en este ejemplo. Recuerda usar tu Advanced API Key.
const apikey = "TSC_...";
const body = {
products: [
{
active: true,
categories: ["soft-drinks"],
id: "example-product-coca-cola",
imageURL:
"https://intl.cokestore.com/media/catalog/product/1/6/16181_squeeze-ko-can-maria-2.png",
name: "Coca Cola can",
price: "9.99",
vendors: ["coca-cola"],
},
],
};
try {
const response = await fetch(
"https://api.topsort.com/public/v1/catalog-search-service/catalogs/products",
{
method: "PUT",
mode: "cors",
headers: {
Authorization: `Bearer ${apikey}`,
"Content-Type": "application/json; charset=utf-8",
},
body: JSON.stringify(body),
}
);
if (!response.ok) {
console.error("unexpected status: " + response.status);
} else {
console.log("success status: " + response.status);
}
} catch (error) {
console.error(error);
}
2. Crear Campaña
En este ejemplo, se crea una campaña para promover el producto example-product-coca-cola, con un disparador de palabra clave (soft drink). Recuerda usar tu Advanced API Key.
const apikey = "TSC_...";
const body = {
bids: [
{
target: {
type: "product",
id: "example-product-coca-cola",
},
triggers: [
{
type: "keyword",
value: {
matchType: "exact",
words: ["soft drink"],
},
},
],
},
],
budget: {
type: "daily",
amount: 10000,
},
campaignType: "autobidding",
isActive: true,
status: "approved",
adFormat: "listing",
name: "An example campaign",
};
try {
const response = await fetch(
"https://api.topsort.com/public/v1/campaign-service/campaigns?vendor_id=demo-vendor",
{
method: "POST",
mode: "cors",
headers: {
Authorization: `Bearer ${apikey}`,
"Content-Type": "application/json; charset=utf-8",
},
body: JSON.stringify(body),
}
);
if (!response.ok) {
console.error("unexpected status: " + response.status);
} else {
console.log("success status: " + response.status);
}
} catch (error) {
console.error(error);
}
3. Enviar Solicitud de Subasta
En este ejemplo, se crea una solicitud de subasta para devolver ganadores activados por el término de búsqueda “soft drink”. Recuerda usar tu Marketplace API Key.
const apikey = "TSE_...";
const body = {
auctions: [
{
searchQuery: "soft drink",
slots: 1,
type: "listings",
},
],
};
try {
const response = await fetch("https://api.topsort.com/v2/auctions", {
method: "POST",
mode: "cors",
headers: {
Authorization: `Bearer ${apikey}`,
"Content-Type": "application/json; charset=utf-8",
},
body: JSON.stringify(body),
});
if (!response.ok) {
console.error("unexpected status: " + response.status);
} else {
console.log("success status: " + response.status);
}
} catch (error) {
console.error(error);
}
4. Rastreo de Eventos
En este ejemplo, se rastrea un clic en un producto promovido usando nuestra API. El resolvedBidId del ganador devuelto por la llamada de subastas debe enviarse en el cuerpo de la solicitud, para garantizar la atribución correcta de ventas. Recuerda usar tu Marketplace API Key.
const apikey = "TSE_...";
const body = {
clicks: [
{
id: "d0cf3f56-a719-4e02-9c88-625f965ae6e7",
occurredAt: "2024-07-23T11:49:04+00:00",
opaqueUserId: "71303ce0-de89-496d-8270-6434589615e2",
resolvedBidId:
"ChAGafmNzX5wy4sEaDnXi4iWEhABjxq1RG513IkbvRgIVcd6GhABjmiyW3t2Ur066CLC3jWVIgoKBjExMjYzNBABMPuVDw",
},
],
};
try {
const response = await fetch("https://api.topsort.com/v2/events", {
method: "POST",
mode: "cors",
headers: {
Authorization: `Bearer ${apikey}`,
"Content-Type": "application/json; charset=utf-8",
},
body: JSON.stringify(body),
});
if (!response.ok) {
console.error("unexpected status: " + response.status);
} else {
console.log("success status: " + response.status);
}
} catch (error) {
console.error(error);
}