Your campaigns
No campaigns yet — create one above to start serving.
Everything below matches the deployed worker exactly — there's no separate "real" API behind it.
GET /v1/ad
Fetch a raw JSON ad payload. Always $0 — nothing is billed on a fetch, only on a verified impression.
curl https://worker.lemprage.cobinar.com/v1/ad \
-H "X-Lemprage-Api-Key: YOUR_KEY"
Response includes headline, body, image_url, cta_link, brand_name, category, and a security block with a single-use impression_id + signing_key your SDK uses to sign the Proof-of-Impression, plus a hidden _canary_pixel — never request it from real code.
POST /v1/impressions
Submit a signed Proof-of-Impression once an ad has been ≥50% in viewport for ≥1s with window focus. This is the only call that results in a charge.
POST /v1/impressions
{
"impression_id": "...",
"poi": { "viewportRatio": 0.8, "dwellMs": 1400, "windowFocused": true, ... },
"signature": "HMAC-SHA256(signing_key, JSON.stringify(poi))"
}
POST /v1/billing/checkout
Advertiser-authenticated. Requires Authorization: Bearer <Firebase ID token>. Creates a Stripe Checkout session to top up ad balance.
POST /v1/billing/checkout
Authorization: Bearer <id token>
{ "amountCents": 2500 }
-> { "url": "https://checkout.stripe.com/..." }
Client SDK
Not published yet — the IntersectionObserver + visual-safety-check + PoI-signing client is the natural next piece once the endpoints above are stable.
API key
No key yet. Generate one to start requesting ads from worker.lemprage.cobinar.com .
Generate API key
Shown once. Store it now — Lemprage can't show it to you again.
Copy
Ad categories
Only these categories will ever be served on your site. Leave everything unchecked to accept all categories.
Save categories
Ad balance
0.00 USD
Spent against campaign delivery. Stripe test/live keys are configured per Worker environment, not in this page.