NAV

Web SDK Android SDK

Developer Documentation

Welcome to the Clickterm developer documentation! You can use our Client SDKs to display Clickwraps to your end-users and use Clickterm's frotend to manage templates, versions, adoption and much more.

Quick Start

The following flow is similar to that used by different Captcha providers:

  1. You include the Clickterm SDK on your web frontend or mobile app. For example, on your registration form.
  2. You make a request to retrieve a Clickwrap using our SDK
  3. If your end-user has not accepted the latest version of your Clickwrap template, a modal will be displayed to him to accept or decline.
  4. Our SDK will receive a Signature from our server and return it to your callback.
  5. When the user clicks Submit, you send the Signature to your backend in the Registration form request.
  6. You backend server sends the Signature to our API (POST /clickwrap/verify) for verification. The response will contain the action taken by the end-user and other useful metadata. A Clickwrap Event will be recorded in our system and a Certificate of Acceptance will be generated.
  7. You can notify your frontend or mobile app in the response from your registration request with the action taken by the end-user on the Clickwrap (accepted or declined)

Clickterm Diagram

Requesting a Clickwrap

Initialization examples:

// This is actually Typescript, need to add generic javascript example

declare const ClicktermWidget: any;

ngOnInit() {
  this.clicktermWidget = new ClicktermWidget(environment.clicktermAppId);
}

this.clicktermWidget.clickwrap({
                templateId: environment.clicktermTemplateId,
                endUser: clicktermUUID,
                templateParams: { ... }, //Optional
                language: 'en',
            }).then((clicktermResponse) => {
                // Retrieve the signature and pass it on your next request
                model.clicktermSignature = clicktermResponse.clicktermSignature;
            }).catch((error: any) => {
                console.error(error);
            });
// Call from onCreate
ClicktermManager.initialize(BuildConfig.CLICKTERM_APP_ID);

TemplateRequest contentRequestBody = new TemplateRequest(BuildConfig.CLICKTERM_TEMPLATE_ID, pref.getUserId().toString(), null, "en");
ClicktermDialog.show(this, contentRequestBody, new ClicktermDialog.OnAgreementResultListener() {
  @Override
                public void onSuccess(String clicktermSignature) {
                    if (clicktermSignature == null) {
                       // No signature received, user has already acted on the clickwrap
                       // The user was shown no dialog. Continue with normal flow.
                    } else {
                        // Clickterm signature received. 
                        // Send for verification on the backend

                    }
                }

                @Override
                public void onError(String error) {
                    Log.e(error);
                }
            }, config);

To initialize our Client SDK, you only need to provide your Clickterm AppId. You can obtain it from our Integration menu on the Clickterm web app (app.clickterm.com/integration)

To request a new Clickwrap, you need to provide the following parameters:

Parameter Required Description
templateId Yes The Id of your Clickwrap template. You can obtain this from the Clickterm web app after creating a template.
endUserId Yes String 256 max length. The identifier we will use in Clickterm to identify your endUser's events. If your userId is not known yet you can generate a UUID and map it to your userId in your backend
templatePlaceholders No A list of values to be replaced in the placeholders you set in your Clickwrap Template
language No Default: "en". The language to request from your template supported languages.

Verify a Signature

This endpoint lets you verify a Clickterm Signature that was generated when a user accepted a clickwrap (e.g. terms and conditions).

  1. Your backend receives the signature from the client (website/app).
  2. You then send it to Clickterm’s /clickwrap/verify API with your appId and appKey.
  3. Our systems confirms that the signature is authentic and issued by Clickterm, and provides a Certificate of Acceptance

Why it matters: Verification ensures the signature hasn’t been forged or tampered with, providing proof of consent, security, and legal validity for clickwrap agreements.

Request:

Endpoint:

POST https://api.clickterm.com/clickwrap/verify

Verify Signature CURL Examples:

curl -XPOST -H 'X-APP-ID: {YOUR_APP_ID}' -H 'X-APP-KEY: {YOUR_APP_KEY}' -H "Content-type: application/json" -d '{
    "clicktermSignature": "{SIGNATURE}"
}' 'https://api.clickterm.com/clickwrap/verify'


JSON Body:
{
    "clicktermSignature": "{SIGNATURE}"
} 
curl -XPOST -H 'X-APP-ID: {YOUR_APP_ID}' -H 'X-APP-KEY: {YOUR_APP_KEY}' -H "Content-type: application/json" -d '{
    "clicktermSignature": "{SIGNATURE}"
}' 'https://api.clickterm.com/clickwrap/verify'

JSON Body:
{
    "clicktermSignature": "{SIGNATURE}"
} 

To verify a Clickterm Signature you need to send a POST request to our Public API from your backend server. You will need to include your Clickterm appId and Clickterm appKey. You can obtain them from our Integration menu on the Clickterm web app (app.clickterm.com/integration)

To request a new Clickwrap, you need to provide the following parameters:

Parameter Required Description
signature Yes The Clickterm Signature sent to your backend from your Client (Website or App). It's returned when a new Clickwrap was requested and shown to the end-user

Response:

The reponse body from the previous request:

// Json Response Prototype
{
  "status": "string (enum: e.g. ACCEPTED, DECLINED)",
  "clickwrapEventId": "string (UUID)",
  "templateId": "string (UUID)",
  "version": "integer",
  "endUser": "string(256)",
  "templateParams": "string (nullable, JSON-encoded or null)",
  "digitalSignature": "string (256)",
  "actionAt": "string (ISO-8601 timestamp)"
  "certificateUrl": "String"
}

// Example: 
{
  "status": "ACCEPTED",
  "clickwrapEventId": "123e4567-e89b-12d3-a456-426614174000",
  "templateId": "987e6543-e21b-45d3-b321-426614174999",
  "version": 1,
  "endUser": "423e4567-e89b-12d3-a456-426614174000",
  "templateParams": "{ \"email\": \"[email protected]\", \"phone\": \"+12345678900\" }",
  "digitalSignature": "{\"userAgent\":\"okhttp/4.8.1\",\"ip\":\"a100:a100:a100:a100:a100:a100:a100:a100\"}",
  "actionAt": "2025-08-20T14:30:00Z",
  "certificateUrl": "certs.clickwrap.com/?id=987e6543-e21b-45d3-b321-426614174999"
}

// Example: 

{
  "status": "ACCEPTED",
  "clickwrapEventId": "123e4567-e89b-12d3-a456-426614174000",
  "templateId": "987e6543-e21b-45d3-b321-426614174999",
  "version": 1,
  "endUser": "432e4567-e89b-12d3-a456-426614174000",
  "templateParams": "{ \"email\": \"[email protected]\", \"phone\": \"12345678900\" }",
  "digitalSignature": "{\"userAgent\":\"okhttp/4.8.1\",\"ip\":\"a100:a100:a100:a100:a100:a100:a100:a100\"}",
  "actionAt": "2025-08-20T14:30:00Z",
  "certificateUrl": "certs.clickwrap.com/?id=987e6543-e21b-45d3-b321-426614174999"
}

This request returns the following information:

Parameter Type Description
status String The result from the user's interaction with the Clickwrap modal dialog. (ACCEPTED or DECLINED).
clickwrapEventId UUID The Id of this partucular Clickwrap Event. Can also be consulted on the Clickterm web app.
templateId UUID The Id of the Clickwrap Template shown to the end-user.
version Integer The version of the Clickwrap Template used for this event.
endUser String The endUser identifier linked to this Event
templateParams String The list of values that was used to replace the placeholders in your Clickwrap Template.
digitalSignature String The metadata gathered from the end-user client at the time of the Event (IP Address, user-agent, etc)
actionAt Timestamp The timestamp the user's action took place at for this Clickwrap Event.
certificateUrl String The URL to the certificate of acceptance PDF for this Clickwrap Event if it was accepted