IntegrationsListing verification widget

Drop a portable trust badge on any listing.

Peerseal turns peer vouches, verified purchases, and witness attestations into a single 0–100 score plus earned badges — the same Peerseal Trust Score embedded on a partner page reads as a portable signal of who is behind a listing. Paste a snippet, supply a partner key, and the badge renders next to the author byline.

01 · Live demo

A real author, scored now, the way your embed will be scored.

The card below is rendered against the same public /api/users/<handle> resolver a marketplace embed calls server-side — no key needed for this read because the handle is the auth surface. Try copying a handle from the page below and pasting it into your own embed.

Live demo
Fetched on mount from the seeded demo author. The same payload the public resolver returns, no transformations.

live · /api/users/demo0001

scoring…

02 · Embed code

Two snippets. One for browsers, one for servers.

The HTML block is what your page reads — a mount div plus a single script tag, both inert text on this domain. The curl block is the server-to-server lookup that powers both the embed and any back-office review tooling your team needs.

embed.html
<div data-peerseal-handle="demo0001"></div>
<script src="https://peerseal.app/embed.js"
        data-api-key="YOUR_KEY"></script>
lookup.curl
curl -sS https://peerseal.app/api/lookup \
  -G \
  --data-urlencode "handle=demo0001" \
  -H "x-api-key: YOUR_KEY"

03 · Integration guide

Five steps from key to rendered badge.

The widget is deliberately small — a mount div, a script tag, a partner key — so the integration is bounded by what your platform already loads every day. Steps below are idempotent; you can re-run them in any order without breaking the previous state.

  1. 01

    Request a partner key

    Email peerseal@polsia.app with the partner domain where the widget will run. Keys are issued per partner origin so a key leaked on one marketplace cannot be replayed on another.

  2. 02

    Choose a handle

    The handle is the first 8 characters of an author's User.id, not a free form username. Open /u/<prefix> first — a 404 means no match, an ambiguous page means the prefix hits more than one row and you should widen to the next few characters.

  3. 03

    Drop the snippet

    <div data-peerseal-handle="<8 char>"> is the mount point. Place it next to the listing title or author byline — the script reads the nearest data-peerseal-handle div upwards and renders the badge in-place.

  4. 04

    Include the script

    Add <script src="https://peerseal.app/embed.js" data-api-key="…"> once per page (the script is idempotent — multiple data-peerseal-handle divs each get their own badge).

  5. 05

    Render &amp; cache

    Scores are a pure function of the post + attestation data, so the response is safe to cache for ≤ 60 s. Refresh on re-render is fine; long-poll-only is unnecessary.