poneva Docs

Integration contract & APIs

The kit band ships inside the same Poneva runtime the embed script loads; Poneva enables and wires it for your store as part of Agentic Kits onboarding, so most teams never touch this page. For teams that want precise control, the documented surfaces are below. This page is also where future raw-API exposure for power users will land — see the roadmap.

Placement

The band fires on one of two triggers. On a search page it reads the shopper's search term structurally from the page URL (common query parameters such as q, query, search, or a configured one). On a category page — where there is no search term — it matches the current page URL against the glob-lite patterns you configured (for example https://www.apotea.se/halsont*, where * matches anything after the prefix); a typed search term always takes precedence over a category match. Either way it mounts into your results container, after a configurable number of product cards — the "show the kit after this many products" setting (default 4). It resolves its anchor in this order: your configured selectors, then an element carrying the data-skaii-agentic-anchor attribute, then conservative structural fallbacks; when it can't count product cards there (an empty container, or a bare anchor element) it falls back to mounting above the container. Adding data-skaii-agentic-anchor to your results container is the simplest way to pin exact placement.

The wire contract

The band calls one public, rate-limited endpoint:

POST https://poneva.com/storefront/search
{ "demo_id": "<your store id>", "query": "<search term>", "page_url": "<optional current page URL>", "session_id": "<optional>" }

On a search page the band sends query; on a category page it sends page_url (its current location) and an empty query, and the server matches that URL to a configured category trigger. A request carries a query or a page_url (or both — query wins).

The response is { base, plan, rendering }. When nothing should render (surface not published, term/category not live, no servable kits, or the page matches no trigger), base is null and the page stays native. Otherwise rendering carries the kits to display, plus optional quick-filter chips. A chip click re-queries the same session via POST /storefront/search/filter with { "session_id": ..., "filter_id": ... } — a constrained re-run within the current term, never a new search.

Failure modes

Every failure mode — network error, missing anchor, unpublished surface, empty term — fails closed to your native experience.

Poneva · agentic-commerce infrastructure Terms Privacy