Developers
Integrate in 2 minutes. It works.
One tag and one slot — or the API if you want full control. Clear docs, ready-made examples, test mode and OpenAPI-generated reference.
One line in , one placeholder
The tag.js discovers slots, calls /serve, renders in a sandboxed iframe (anti-XSS) and measures impression and click. Zero business logic on the client.
Test modeOpenAPIReact SDK
<!-- in <head> -->
<script async src="https://cdn.adpluga.com/v1/tag.js"
data-adpluga-key="pk_test_•••"></script>
<!-- wherever the ad should render -->
<div data-adpluga-slot="slot_home_top"></div>Many paths, the same /serve
JS Tag
For sites/e-commerce. Paste and it works.
React / SPA
'<PlugaSlot>' component from the @adpluga/react package.
iframe / GTM
Restricted CSP or via Google Tag Manager.
Direct API
Server-to-server, email, AMP, native app.
Main endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/serve | Decides and returns an ad + token (never empty) |
| POST | /v1/track | Records impression/click/conversion (signed) |
| GET | /v1/ad-campaigns | Lists client campaigns |
| POST | /v1/ad-campaigns | Creates campaign (budget, model, targeting) |
| GET | /v1/reports/daily-stats | Sliceable metrics for BI (supports ?mode=live|test) |
| GET | /v1/integration/status | Slot integration status (live/test) |
| GET | /v1/integration/events | Latest integration events (impressions/clicks/conversions) |
| POST | /v1/integration/send-test-event | Emits a synthetic is_test=true event to validate the integration |
| POST | /v1/sdk-keys/{id}/rotate | Rotates the SDK key (revokes the previous, issues a new one) |
Full reference generated from openapi.yaml with try-it. Authenticated by publishable key (client) and secret key (server).