Enfileira captura de HTML renderizado (Playwright)
Task `kind=fetch_html` (`run_fetch_html_task`). Plataforma deve estar em SUPPORTED_PLATFORMS. `wait_until` se enviado: load | domcontentloaded | networkidle | commit (senao 400). Defaults Pydantic: wait_ms_after_load=5000 (0..120000), enable_scroll=true, strip_scripts=true, max_html_chars=1500000 (10000..5000000). Na Amazon o worker pode elevar wait_ms_after_load para 12000 e incluir `selector_hints` / `amazon_price_nodes` no result. Nao ha 404 neste handler.
Task kind=fetch_html (run_fetch_html_task). Plataforma deve estar em SUPPORTED_PLATFORMS. wait_until se enviado: load | domcontentloaded | networkidle | commit (senao 400). Defaults Pydantic: wait_ms_after_load=5000 (0..120000), enable_scroll=true, strip_scripts=true, max_html_chars=1500000 (10000..5000000). Na Amazon o worker pode elevar wait_ms_after_load para 12000 e incluir selector_hints / amazon_price_nodes no result. Nao ha 404 neste handler.
Authorization
ApiKeyAuth Tenant key. Nao e JWT. Qualquer valor nao-vazio identifica um tenant via SHA-256. Ausencia => 401 API key ausente. Nao ha lista de chaves validas.
In: header
Path Parameters
Plataforma. Valores aceitos pelo cofre (VaultService.SUPPORTED_PLATFORMS): amazon, mercadolivre, shopee. Comparacao case-insensitive (lower).
Value in
- "amazon"
- "mercadolivre"
- "shopee"
Header Parameters
Identificador do tenant. Qualquer string nao-vazia e aceita; a API armazena apenas o SHA-256. Nao ha cadastro/validacao de chave. Chave diferente = tenant diferente (isolamento).
1 <= lengthRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/fetch/amazon/html" \ -H "x-api-key: sua-api-key" \ -H "Content-Type: application/json" \ -d '{ "url": "https://www.mercadolivre.com.br/ofertas", "wait_ms_after_load": 12000, "enable_scroll": true, "strip_scripts": true, "max_html_chars": 1500000 }'Enfileira pagina de produto (PDP) — um unico item — Shopee POST
Cria uma task assincrona (`202` + `task_id`). Consulte `GET /v1/tasks/{task_id}/status`. O `/list` continua sendo listagem (varios cards ou busca por tema). O `/product` devolve **um unico produto** a partir da URL. Nao envie `limit_products`: sempre e um item. - **amazon / mercadolivre:** Playwright na PDP. `url` + `selectors` obrigatorios. `||` nos seletores e fallback (tenta o primeiro CSS; se vazio, o proximo). `link` nao precisa de seletor: a API preenche com a URL canonica. Campos vazios podem ser completados com JSON-LD / Open Graph. Cookies do cofre entram automaticamente, se existirem. - **shopee:** Open API de afiliados (`productOfferV2`). **Nao usa Playwright nem seletores.** Body: so `url`. Extrai `shopId`/`itemId` da URL (ou resolve short link `s.shopee.com.br`) e consulta por `itemId`. Requer conta Shopee no cofre (`affiliate_id` = App ID, `cookies` = secret). Se o item nao estiver no catalogo de ofertas da afiliacao, `count` vem `0`. Webhook: `webhook_override` no body ou `webhook_url` da conta da mesma plataforma. Assinatura `X-Omnilink-Signature`.
Consulta status de uma task do tenant GET
Busca por id + hash da API key. Task de outro tenant retorna 404 (isolamento). `status` persistido: pending, processing, completed, failed. `result` e dict livre (formato depende de `kind`). `error`/`error_type`/`attempts` vem do registro da task.