Loading documentation…
Developers
From your first placement to a verified reward. Practical guides and a precise API reference for every step.
Your platform. One verified reward journey.
import { init, type InitOptions } from "@krin/sdk-web";
// Your backend supplies a fresh assertion for each open.
export function openRewards(
config: Required<Pick<InitOptions,
"placementId" | "wallUrl" | "sdkKey" | "userAssertion" | "consent">>,
onStatus: (status: string) => void,
refreshBalance: () => void,
container?: HTMLElement,
) {
const wall = init({ ...config, title: "Earn rewards", locale: "en-US" });
wall.on("authenticated", () => onStatus("Offers ready"));
wall.on("error", ({ code }) => onStatus(code));
// Presentation only: the balance comes from your server.
wall.on("reward", () => refreshBalance());
wall.open(container ? { container } : {});
return () => wall.destroy();
}Start with the path that fits your product.
Open a signed offerwall from a web app, inline or in an overlay.
Install the Flutter source SDK, open the wall and verify a reward.
Install the Android source SDK, open the wall and verify a reward.
Install the iOS source SDK, open the wall and verify a reward.
Connect a campaign's tracking link, event mapping and signed postback.
Build your own offer interface while keeping eligibility and terms authoritative.