> ## 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.

# Download Certificate of Acceptance

> Download the Certificate of Acceptance as a PDF for a specific
clickwrap event. The certificate is a digitally signed document
that proves a specific user accepted a specific clickwrap version
at a specific time.

Includes user ID, timestamp, IP address, and browser/device information.

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

Only available for events with status `ACCEPTED`.




## OpenAPI

````yaml /openapi/clickterm-public-api.yaml get /clickwrap-events/{id}/certificate
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:
  /clickwrap-events/{id}/certificate:
    get:
      tags:
        - Events
      summary: Download Certificate of Acceptance
      description: |
        Download the Certificate of Acceptance as a PDF for a specific
        clickwrap event. The certificate is a digitally signed document
        that proves a specific user accepted a specific clickwrap version
        at a specific time.

        Includes user ID, timestamp, IP address, and browser/device information.

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

        Only available for events with status `ACCEPTED`.
      operationId: downloadCertificate
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Clickwrap Event ID
          example: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '200':
          description: Certificate of Acceptance PDF
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        '404':
          description: >-
            Event not found or certificate not available (event must have status
            ACCEPTED)
      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" \
              -o certificate.pdf \
              "https://api.clickterm.com/public-client/v1/clickwrap-events/{clickwrapEventId}/certificate"
        - lang: javascript
          label: Node.js
          source: |
            const response = await fetch(
              `https://api.clickterm.com/public-client/v1/clickwrap-events/${eventId}/certificate`,
              {
                headers: {
                  "X-APP-ID": process.env.CLICKTERM_APP_ID,
                  "X-APP-KEY": process.env.CLICKTERM_APP_KEY,
                },
              }
            );
            const pdfBuffer = await response.arrayBuffer();
        - lang: python
          label: Python
          source: |
            response = requests.get(
                f"https://api.clickterm.com/public-client/v1/clickwrap-events/{event_id}/certificate",
                headers={
                    "X-APP-ID": CLICKTERM_APP_ID,
                    "X-APP-KEY": CLICKTERM_APP_KEY,
                },
            )
            with open("certificate.pdf", "wb") as f:
                f.write(response.content)
        - lang: java
          label: Java
          source: |
            HttpResponse<InputStream> response = Unirest.get(
                "https://api.clickterm.com/public-client/v1/clickwrap-events/" + clickwrapEventId + "/certificate")
              .header("X-APP-ID", "YOUR_APP_ID")
              .header("X-APP-KEY", "YOUR_APP_KEY")
              .asBinary();
            Files.copy(response.getBody(), Path.of("certificate.pdf"));
components:
  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)

````