curl -X PATCH "https://api.scanova.io/campaign/user-log/118/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{ "last_dismissed": "2026-08-21T09:02:00Z" }'
{
"id": 118,
"last_shown": "2026-08-20T10:15:00Z",
"last_dismissed": "2026-08-21T09:02:00Z",
"last_submitted": null,
"is_popup_disabled": false
}
Campaign
Update your campaign log
PATCH /campaign/user-log//
PATCH
/
campaign
/
user-log
/
{id}
/
curl -X PATCH "https://api.scanova.io/campaign/user-log/118/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{ "last_dismissed": "2026-08-21T09:02:00Z" }'
{
"id": 118,
"last_shown": "2026-08-20T10:15:00Z",
"last_dismissed": "2026-08-21T09:02:00Z",
"last_submitted": null,
"is_popup_disabled": false
}
Updates a single G2 review-campaign log row on the Management API host (
Both
api.scanova.io), authenticated with your raw Management API key.
PUT https://api.scanova.io/campaign/user-log/{id}/
PATCH https://api.scanova.io/campaign/user-log/{id}/
Authorization: 401f7ac837da42b97f613d789819ff93537bee6a
integer
required
The log row’s
id, from POST /campaign/user-log/ or GET /campaign/active/user-log/.PUT and PATCH are supported (PUT for a full replace, PATCH for a partial update) and accept the same field set documented for Log that the review popup was shown, dismissed, or submitted, minus g2_campaign — which row you’re updating is fixed by id in the URL, not something you can move to a different campaign after creation.
curl -X PATCH "https://api.scanova.io/campaign/user-log/118/" \
-H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a" \
-H "Content-Type: application/json" \
-d '{ "last_dismissed": "2026-08-21T09:02:00Z" }'
{
"id": 118,
"last_shown": "2026-08-20T10:15:00Z",
"last_dismissed": "2026-08-21T09:02:00Z",
"last_submitted": null,
"is_popup_disabled": false
}
is_popup_disabled can’t be set here
is_popup_disabled appears in every response from this resource, but it’s read-only on this serializer — sending it in the request body (via either PUT or PATCH) is silently ignored, despite it being a real field on the underlying model. There’s currently no documented Management API path that flips it; it’s set internally.
Scope and errors
Scoped to log rows owned by the requesting account — anid belonging to another account returns 404, not 403, so you can’t use this endpoint to probe for the existence of other accounts’ log rows.
Related
- Log that the review popup was shown, dismissed, or submitted — creates the row this endpoint updates.
- Get your dismissal state for the active campaign — read the current state of this row.
- Get the active review campaign — the campaign this log row applies to.
- Management API overview — the auth scheme and quota rules that apply to this endpoint.
Authorizations
Send your Management API key as the raw value of the Authorization header — no "Bearer " or "Token " prefix, and no other characters. Example: Authorization: 401f7ac837da42b97f613d789819ff93537bee6a. A header containing more than one space-separated part is rejected outright. Requests also require the request's Host header to be the management API host (e.g. api.scanova.io) — the same key sent to the regular API host will not authenticate.
Path Parameters
Body
application/json
Response
200 - application/json
Log row updated.
Was this page helpful?