> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scanova.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get your dismissal state for the active campaign

> GET /campaign/active/user-log/

Returns the authenticated account's log row for the currently active G2 review campaign on the **Management API** host (`api.scanova.io`), authenticated with your raw Management API key.

```
GET https://api.scanova.io/campaign/active/user-log/
Authorization: 401f7ac837da42b97f613d789819ff93537bee6a
```

Pair this with [Get the active review campaign](/api-reference/management-api/campaign/active) to decide whether to show the prompt: if there's an active campaign and either this call 404s or `is_popup_disabled` is `false`, show it; otherwise don't.

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.scanova.io/campaign/active/user-log/" \
    -H "Authorization: 401f7ac837da42b97f613d789819ff93537bee6a"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": 118,
    "is_popup_disabled": false
  }
  ```
</ResponseExample>

## Why this 404s so often

This endpoint 404s in two different situations, and both mean the same thing to a caller — "show the popup":

* There's no campaign currently active at all (same condition [`GET /campaign/active/`](/api-reference/management-api/campaign/active) 404s under).
* There *is* an active campaign, but this account hasn't logged any interaction with it yet — the log row is created lazily, on the first [`POST /campaign/user-log/`](/api-reference/management-api/campaign/user-log-create) call, not automatically when the campaign starts.

## Related

* [Get the active review campaign](/api-reference/management-api/campaign/active) — the campaign this log row applies to.
* [Log that the review popup was shown, dismissed, or submitted](/api-reference/management-api/campaign/user-log-create) — create the row this endpoint reads.
* [Update your campaign log](/api-reference/management-api/campaign/user-log-update) — update the row this endpoint reads.
* [Management API overview](/api-reference/management-api/overview) — the auth scheme and quota rules that apply to this endpoint.


## OpenAPI

````yaml api-reference/openapi/management-api.json GET /campaign/active/user-log/
openapi: 3.1.0
info:
  title: Scanova Management API (v2)
  description: >-
    The complete Scanova Management API — every endpoint available at
    api.scanova.io (QR codes, folders, tags, leads, forms, analytics, plans,
    shared users & roles), plus the token-creation and usage-stats endpoints
    used to authenticate against it. Every path and request/response shape below
    was verified live against a real API key and the actual running backend
    (Phase 7, 2026-08-16) — not guessed from reading urls.py alone.
  version: 2.0.0
servers:
  - url: https://api.scanova.io
    description: Management API — QR/folder/tag/lead/form/analytics/plans endpoints
security:
  - apiKeyAuth: []
paths:
  /campaign/active/user-log/:
    get:
      summary: Get your dismissal state for the active campaign
      description: >-
        Returns whether the authenticated account has already interacted with
        the popup for the currently active campaign. Returns 404 if there's no
        active campaign, or if this account has no log row for it yet — both
        cases mean "show the popup".
      operationId: getManagedActiveCampaignUserLog
      responses:
        '200':
          description: The account's log row for the active campaign.
          content:
            application/json:
              example:
                id: 118
                is_popup_disabled: false
        '404':
          description: No active campaign, or no log row yet for this account.
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        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.

````