> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hakumedia.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Pedir anuncios de producto

> El pedido que hace el sitio cada vez que muestra resultados.

El sitio pide anuncios desde su servidor en el mismo momento en que arma la página de
resultados. La respuesta es JSON.

## El pedido

<CodeGroup>
  ```bash POST theme={"dark"}
  curl -X POST "https://ads.hakumedia.ai/adserve/;ID=123456;setID=595468;type=pdb_query" \
    -H "Content-Type: application/json" \
    -d '{
      "search": "zapatillas running",
      "params": { "type_name": "CALZADO" },
      "limit": 4,
      "adb_uid": "b477d170-e2a6-476d-9936-4e47da160d9a",
      "ip": "190.98.232.10",
      "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)"
    }'
  ```

  ```bash GET theme={"dark"}
  curl "https://ads.hakumedia.ai/adserve/;ID=123456;setID=595468;type=pdb_query_get;pdb_search=zapatillas%20running;pdb_limit=4"
  ```
</CodeGroup>

`ID` es la cuenta y `setID` la zona de catálogo.

## Parámetros

| POST                   | GET               | Descripción                                                       |
| ---------------------- | ----------------- | ----------------------------------------------------------------- |
| `search`               | `pdb_search`      | Lo que buscó el usuario                                           |
| `params`               | `pdb_params`      | Filtros por columna del catálogo, por ejemplo la categoría        |
| `limit`                | `pdb_limit`       | Cantidad máxima de productos                                      |
| `identifiers`          | `pdb_identifiers` | Lista de SKU. Limita la subasta a esos productos                  |
| `source`               | `pdb_source`      | Fuente del tráfico, para los reportes                             |
| `bid_floor_cpc`        | `bid_floor_cpc`   | Reemplaza el piso de la zona en este pedido                       |
| `bid_floor_cpm`        | `bid_floor_cpm`   | Reemplaza el piso de la zona en este pedido                       |
| `adb_uid`              | `adb_uid`         | ID anónimo del usuario. Necesario para medir clics y conversiones |
| `udb_uid`              | `udb_uid`         | ID del usuario identificado, si el comercio usa audiencias        |
| `ip`, `ua`, `referrer` | igual             | Datos del usuario final, porque el pedido sale del servidor       |

## La respuesta

```json theme={"dark"}
{
  "status": "success",
  "items": [
    {
      "item": {
        "id": "777111222333",
        "title": "Zapatillas Runner Pro",
        "brand": "Runner",
        "price": "59990",
        "product_url": "https://tienda.com/p/777111222333",
        "thumbnail_url": "https://tienda.com/img/777111222333.jpg",
        "seller_id": "10001234",
        "rating": "4.5"
      },
      "beacons": [
        { "type": "eligible_impression", "url": "https://ads.hakumedia.ai/..." },
        { "type": "viewable_impression", "url": "https://ads.hakumedia.ai/..." },
        { "type": "click", "url": "https://ads.hakumedia.ai/..." }
      ]
    }
  ]
}
```

`item` trae las columnas del catálogo. `beacons` trae las URLs que el sitio llama para
registrar cada evento. El detalle está en [Medición](/retail-media/medicion).

## Cómo se arma la página

1. El sitio busca en su propio catálogo, como siempre.
2. En paralelo, pide los productos patrocinados.
3. Los intercala en los resultados con la etiqueta de patrocinado y saca los repetidos.
4. Si Haku no responde a tiempo, muestra los resultados sin anuncios.
