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

# Get consent status for end user

> Returns an array of clickwrap template statuses for a specific end user,
showing whether they have accepted, declined, or have pending actions
for each template.

Use this to gate flows, build compliance dashboards, or audit consent
without triggering the clickwrap dialog.

**Authenticated** — requires `X-APP-ID` and `X-APP-KEY` headers.

Status is returned only for the **latest major version**. Actions on
older major versions result in `NO_DATA` with a `null` timestamp.




## OpenAPI

````yaml /openapi/clickterm-public-api.yaml get /clickwraps/{endUserId}/status
openapi: 3.0.3
info:
  title: ClickTerm Public Client API
  version: '1.0'
  description: |
    The ClickTerm Public Client API lets you integrate legally-binding
    consent management into your application. Use it alongside the
    ClickTerm Web SDK or Android SDK.

    **Authentication:** Most endpoints require `X-APP-ID` and `X-APP-KEY`
    headers. The exceptions are `GET /clickwrap` and `POST /clickwrap`,
    which use the public `appId` in query/body parameters and do not
    require the App Key.
  contact:
    name: ClickTerm Support
    url: https://clickterm.com
    email: support@clickterm.com
servers:
  - url: https://api.clickterm.com/public-client/v1
    description: Production
security: []
tags:
  - name: Clickwrap
    description: >-
      Core clickwrap operations — fetch templates, record acceptance, verify
      Signatures
  - name: Events
    description: Clickwrap event details, certificates, and consent status
  - name: Templates
    description: Template discovery and metadata
paths:
  /clickwraps/{endUserId}/status:
    get:
      tags:
        - Events
      summary: Get consent status for end user
      description: |
        Returns an array of clickwrap template statuses for a specific end user,
        showing whether they have accepted, declined, or have pending actions
        for each template.

        Use this to gate flows, build compliance dashboards, or audit consent
        without triggering the clickwrap dialog.

        **Authenticated** — requires `X-APP-ID` and `X-APP-KEY` headers.

        Status is returned only for the **latest major version**. Actions on
        older major versions result in `NO_DATA` with a `null` timestamp.
      operationId: getConsentStatus
      parameters:
        - name: endUserId
          in: path
          required: true
          schema:
            type: string
          description: The end user identifier
          example: user-123
      responses:
        '200':
          description: Consent status retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ConsentStatus'
              example:
                - clickwrapTemplateId: 987e6543-e21b-45d3-b321-426614174999
                  clickwrapTemplateName: Terms of Service
                  clickwrapEventId: d3e7b2f2-6ce9-4e49-8de5-2f73451d9c7b
                  clickwrapTemplateVersion: 2
                  clickwrapTemplateVersionMinor: 0
                  status: ACCEPTED
                  lastStatusUpdate: '2026-03-18T10:22:14Z'
                  tags:
                    - registration
                    - customer_only
                  effectiveAt: '2026-03-15T14:00:00Z'
                  mustAcceptBy: null
                  reAcceptanceRequired: true
                - clickwrapTemplateId: 456e7890-e21b-45d3-b321-426614174111
                  clickwrapTemplateName: Marketing Consent
                  clickwrapEventId: 6a97e7d9-1b70-4d0a-944c-c9ce989a6a83
                  clickwrapTemplateVersion: 1
                  clickwrapTemplateVersionMinor: 0
                  status: DECLINED
                  lastStatusUpdate: '2026-03-20T08:11:42Z'
                  tags:
                    - optional
                  effectiveAt: '2026-03-10T12:00:00Z'
                  mustAcceptBy: null
                  reAcceptanceRequired: false
                - clickwrapTemplateId: 123e4567-e89b-12d3-a456-426614174000
                  clickwrapTemplateName: Privacy Policy
                  clickwrapEventId: null
                  clickwrapTemplateVersion: 1
                  clickwrapTemplateVersionMinor: 3
                  status: NO_DATA
                  lastStatusUpdate: null
                  tags: []
                  effectiveAt: '2026-03-01T00:00:00Z'
                  mustAcceptBy: '2026-04-01T00:00:00Z'
                  reAcceptanceRequired: false
      security:
        - appIdHeader: []
          appKeyHeader: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |
            curl -X GET \
              -H "X-APP-ID: YOUR_APP_ID" \
              -H "X-APP-KEY: YOUR_APP_KEY" \
              "https://api.clickterm.com/public-client/v1/clickwraps/user-123/status"
        - lang: javascript
          label: Node.js
          source: |
            const response = await fetch(
              `https://api.clickterm.com/public-client/v1/clickwraps/${endUserId}/status`,
              {
                headers: {
                  "X-APP-ID": process.env.CLICKTERM_APP_ID,
                  "X-APP-KEY": process.env.CLICKTERM_APP_KEY,
                },
              }
            );
            const statuses = await response.json();
        - lang: python
          label: Python
          source: |
            response = requests.get(
                f"https://api.clickterm.com/public-client/v1/clickwraps/{end_user_id}/status",
                headers={
                    "X-APP-ID": CLICKTERM_APP_ID,
                    "X-APP-KEY": CLICKTERM_APP_KEY,
                },
            )
            statuses = response.json()
        - lang: java
          label: Java
          source: |
            HttpResponse<String> response = Unirest.get(
                "https://api.clickterm.com/public-client/v1/clickwraps/" + endUserId + "/status")
              .header("X-APP-ID", "YOUR_APP_ID")
              .header("X-APP-KEY", "YOUR_APP_KEY")
              .asString();
components:
  schemas:
    ConsentStatus:
      type: object
      description: Consent status for a single clickwrap template
      properties:
        clickwrapTemplateId:
          type: string
          format: uuid
          description: Unique identifier of the clickwrap template
        clickwrapTemplateName:
          type: string
          description: Display name of the clickwrap template
        clickwrapEventId:
          type: string
          format: uuid
          nullable: true
          description: >
            Identifier of the related clickwrap event.

            Present when the status is `UNVERIFIED`, `PENDING`, `ACCEPTED`, or
            `DECLINED`.

            When the status is `ACCEPTED`, this value can be used directly with
            the certificate and agreement download endpoints.

            Null when the status is `NO_DATA` or `OVERDUE`.
        clickwrapTemplateVersion:
          type: integer
          description: Major version of the template associated with this status
        clickwrapTemplateVersionMinor:
          type: integer
          description: Minor version of the template associated with this status
        status:
          type: string
          description: |
            Current interaction status of the end user:
            - `NO_DATA` — No recorded interaction
            - `PENDING` — Clickwrap presented but user hasn't acted
            - `UNVERIFIED` — User acted but event not yet verified
            - `ACCEPTED` — Event verified, user accepted
            - `DECLINED` — Event verified, user declined
            - `OVERDUE` — The mustAcceptBy deadline passed with no interaction
        lastStatusUpdate:
          type: string
          format: date-time
          nullable: true
          description: >-
            Most recent status change (UTC, ISO-8601), or null if no interaction
            recorded
        tags:
          type: array
          items:
            type: string
          description: Custom tags associated with the template
        effectiveAt:
          type: string
          format: date-time
          description: >-
            When the referenced template version became effective (UTC,
            ISO-8601)
        mustAcceptBy:
          type: string
          format: date-time
          nullable: true
          description: Optional acceptance deadline configured in the ClickTerm UI, or null
        reAcceptanceRequired:
          type: boolean
          description: >
            `true` when the SDK should re-display the clickwrap even though the
            user

            already has a binding acceptance on file. Unified across causes - it
            is

            `true` when **either**:

            - an unfulfilled re-acceptance request exists for this end user +
            template
              (created via the `POST /clickwraps/re-accept` endpoint), or
            - the template has **Always require re-acceptance** enabled **and**
            the
              user has a prior accepted event for the current major version.

            While re-acceptance is pending the `status` stays `ACCEPTED` - the
            prior

            agreement remains binding, so there is no compliance gap. For a

            request-based re-acceptance the flag clears once the user re-signs
            and the

            new event is verified; for the always require re-acceptance setting
            it

            stays `true` until the setting is turned off.
  securitySchemes:
    appIdHeader:
      type: apiKey
      in: header
      name: X-APP-ID
      description: |
        Your application's App ID, sent as the `X-APP-ID` header.
        Must be accompanied by `X-APP-KEY` for authenticated endpoints.
    appKeyHeader:
      type: apiKey
      in: header
      name: X-APP-KEY
      description: Your application's secret App Key (server-side only)

````