https://zeroclick.dev
Authentication
All requests to/api/v2/offers require an API key:
The impressions endpoint (
/api/v2/impressions) does not require authentication.Integration Flow
Improving Offer Relevance
Thequery parameter helps match offers to user intent. ZeroClick will always return offers, but query quality directly impacts relevance.
Best: Keywords
Better query = more relevant ads. Spend time extracting meaningful keywords from user messages when possible.
Server-Side Example
When calling from your backend, usemethod: "server" and forward the client’s IP and User-Agent.
Client-side example
Client-side example
When calling from the browser, use
method: "client". IP and User-Agent are extracted automatically from request headers.Using
method: "client" requires a public API key, since the key will be exposed in client-side code. Create a public key in the Developer Dashboard.Optional Parameters
Pass additional context for better personalization:| Parameter | Description |
|---|---|
groupingId | Segment analytics by site or app |
userId | Stable user identifier for per-user tracking. Can be a hash — does not need to be your internal ID, just deterministic per user |
userSessionId | Stable session identifier. Can be a hash — does not need to be your internal session ID, just deterministic per session |
userLocale | User locale (e.g., en-US) |
userEmailSha256 | SHA-256 hashed email for identity matching |
userPhoneNumberSha256 | SHA-256 hashed phone for identity matching |
signals | Array of real-time signals about the user’s current context |
Real-Time Signals
You can pass signals directly in the offer request to describe what the user is currently engaging with. This provides additional context for offer matching and is stored for future personalization. Real-time signals are ideal for passing structured contextual data such as IAB Content Taxonomy categories, page-level context, or parsed user intent from your application.category, confidence, and subject. See the Signal Collection docs for the full field reference and more examples.
For standalone signal collection (without fetching offers), use the dedicated Signals API endpoint.