Grade de produtos
GET para listar; POST para criar/adicionar/actualizar (mesmo endpoint, grade vazia incluída); DELETE para remover. Endpoint oficial: api/products-grid (requer chave de API).
Endpoint GET `api/products-grid`. Requer header Authorization: Bearer {api_key}. Lista produtos do bloco (teu). Resposta inclui description_short, scrape_meta (avaliações), discount_percent, cta_button_text (texto do botão) e comportamento afiliado. status: active | out_of_stock | unavailable. Parâmetros: block_id (obrigatório), q (também em description_short), category, page, results_per_page.
| Parâmetros | Obrigatório | Descrição |
|---|---|---|
| block_id | Obrigatório | ID do bloco de grade de produtos. |
| q | Opcional | Termo de busca. |
| category | Opcional | Filtrar por categoria. |
| page | Opcional | Página (padrão 1). |
| results_per_page | Opcional | Itens por página: 10, 25, 50, 100, 250, 500 ou 1000 (padrão conforme a conta). |
curl --request GET \
--url 'https://lerline.com/api/products-grid?block_id=123' \
--header 'Authorization: Bearer {api_key}'
{
"data": [
{
"product_id": "prod_123_1700000000_123",
"biolink_block_id": 123,
"title": "Produto",
"description": "",
"description_short": "",
"category": "",
"link": "https://...",
"canonical_link": "",
"price": "0.00",
"currency": "BRL",
"discount_percent": null,
"status": "active",
"display_favicon": false,
"open_in_new_tab": true,
"cta_button_text": "Ver curso",
"search_tags": "",
"product_sku": "",
"affiliate_link_set": false,
"affiliate_unavailable_action": "warn",
"affiliate_unavailable_redirect_url": "",
"media_gallery": null,
"scrape_meta": {
"reviews": {
"rating": 4.8,
"rating_max": 5,
"count": 1200,
"summary": ""
},
"seller": {
"name": "Loja exemplo"
},
"stock": {
"label": "Disponível",
"in_stock": true
}
},
"order": 0,
"datetime": "2026-01-01 12:00:00"
}
],
"meta": {
"page": 1,
"results_per_page": 25,
"total": 1,
"total_pages": 1
},
"links": {
"first": "https://lerline.com/api/products-grid?block_id=123&page=1",
"last": "https://lerline.com/api/products-grid?block_id=123&page=1",
"next": null,
"prev": null,
"self": "https://lerline.com/api/products-grid?block_id=123&page=1"
}
}
POST cria produtos se a grade estiver vazia (mode append). Também adiciona ou actualiza (product_id existente). Corpo: block_id, products, mode. Opcional: description_short, scrape_meta, discount_percent, cta_button_text (máx. 32; ex. Ver curso), affiliate_unavailable_action, status. Formato Apify aceite. Preferir api/products-grid (não a rota legado api/products).
| Campo | Obrigatório | Descrição |
|---|---|---|
| block_id | Obrigatório | ID do bloco (deve ser seu). |
| products | Obrigatório | Array de produtos (formato grade ou Apify). |
| products[0].product_id | Opcional | Se existir no bloco, actualiza; se a grade estiver vazia ou o ID for novo, cria. |
| products[0].description_short | Opcional | Descrição curta do card. |
| products[0].scrape_meta | Opcional | Avaliações (reviews), vendedor, estoque, preço da loja. |
| products[0].discount_percent | Opcional | Desconto 1–99 (ou via scrape_meta.price.discount_percent). |
| products[0].cta_button_text | Opcional | Texto do botão neste item (máx. 32). Vazio = usa o padrão da grade / «Ver produto». Ex.: Ver curso, Descarregar. |
| products[0].affiliate_unavailable_action | Opcional | warn, hide ou redirect. |
| products[0].status | Opcional | active, out_of_stock ou unavailable. |
| mode | Opcional | append (criar/adicionar; padrão) ou replace (substituir todos). |
curl --request POST \
--url 'https://lerline.com/api/products-grid' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data '{"block_id": 123, "products": [{"title": "Produto", "link": "https://...", "cta_button_text": "Ver curso", "media_gallery": {"items": [{"type": "image", "url": "https://..."}]}}], "mode": "append"}'
curl --request POST \
--url 'https://lerline.com/api/products-grid' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data '{"block_id": 123, "products": [{"product_id":"prod_123_1700000000_123","title":"Produto (atualizado)","link":"https://...","media_gallery":{"items":[{"type":"image","url":"https://..."}]}}], "mode": "append"}'
{
"data": {
"imported": 1,
"skipped": 0,
"limit_reached": false
}
}
Endpoint DELETE `api/products-grid`. Requer header Authorization: Bearer {api_key}. Use block_id (obrigatório) + product_id (query) para deletar 1 produto, ou envie JSON {"product_ids":[...]} para deletar em lote.
| Parâmetros | Obrigatório | Descrição |
|---|---|---|
| block_id | Obrigatório | ID do bloco de grade de produtos. |
| product_id | Opcional | ID do produto a deletar (string retornada no GET como product_id). |
curl --request DELETE \
--url 'https://lerline.com/api/products-grid?block_id=123&product_id=prod_123_1700000000_123' \
--header 'Authorization: Bearer {api_key}'
curl --request DELETE \
--url 'https://lerline.com/api/products-grid?block_id=123' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data '{"product_ids":["prod_123_1700000000_123","prod_123_1700000001_456"]}'
{
"data": {
"deleted": 2
}
}