---
title: "Kiosk Mode"
url: "https://docs.signnow.com/docs/kiosk-mode"
type: "page"
section: "Documentation"
slug: "kiosk-mode"
---

# Kiosk Mode

# Kiosk Mode

**Kiosk Mode** is a signing mode used to collect signatures on the spot from unregistered users, typically on mobile devices. For example, Kiosk Mode is commonly used at event registrations to collect signatures on participant waiver forms.

API users can set up Kiosk Mode for their customers using [embedded signing](/docs/guides-embedded-signing).

Let’s walk through creating an embedded signature invite with Kiosk Mode settings.

## Prerequisites

1. Create an application in the [API dashboard](https://app.signnow.com/webapp/api-dashboard/).

2. Authorize your application to send API requests. Learn more about [authentication](/docs/authentication).

## Step 1. Upload a waiver form with fields

Send the [`POST /document/fieldextract`](/docs/document/operations/upload-document-with-text-tags) request to upload the waiver form with fields to SignNow.

> Define which fields should be added during upload using the `parse_type` parameter. If `parse_type` is not specified, the default behavior is to parse both simple and complex tags as well as fillable fields.

**Request example**

```bash
curl --request POST \
  --url https://api.signnow.com/document/fieldextract \
  --header 'Authorization: Bearer {{access_token}}' \
  --header 'Content-Type: multipart/form-data' \
  --form 'file=@"/Users/Downloads/Waiver form.pdf"' \
  --form 'parse_type="default"'
```

The successful response retrieves a document ID, which you’ll use in subsequent requests.

## Step 2. Create a brand

We will customize the signing experience for event participants. First, let's create a brand using the [`POST /v2/brands`](/docs/general-branding/operations/post-brands) request.

```bash
curl --request POST \
  --url https://api.signnow.com/v2/brands \
  --header 'Authorization: Bearer {{access_token}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "title": "brand_waiver_form"
}'
```

Now we have a brand ID.

## Step 3. Upload a logo

Use the brand ID from the previous step response to upload a logo brand resource with the [`POST /v2/brands/{{brand_id}}/resources/logo`](/docs/general-branding/operations/post-v2-brands-brand_id-logo) request. Signers will see this logo during the signing session and on the document completion page.

```bash
curl --request POST \
  --url https://api.signnow.com/v2/brands/{{brand_id}}/resources/logo \
  --header 'Authorization: Bearer {{access_token}}' \
  --header 'Content-Type: multipart/form-data' \
  --form 'logo=@"./logo_download.jpeg"'
```

## Step 4. Create and customize a general brand resource

Next, let's customize the general branding for the signing session.

Send the [`PUT /v2/brands/{{brand_id}}/resources/general`](/docs/general-branding/operations/put-v2-brands-brand_id-general) request to customize the following:

- The welcome message.

- We will use the default SignNow colors for buttons, icons, and background.

> The Help center button is not visible for embedded signing by default.

```bash
curl --request PUT \
  --url https://api.signnow.com/v2/brands/{{brand_id}}/resources/general \
  --header 'Authorization: Bearer {{access_token}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "welcome-message": {
      "visibility": true,
      "body-text": {
        "en": "Fill out and sign the waiver form."
      },
      "header-text": {
        "en": "Welcome!"
      }
    }
  }'
```

## Step 5. Create and customize an editor brand resource

Customize the participant's signing experience and the completion page further.

Send the [`PUT /v2/brands/{{brand_id}}/resources/editor`](/docs/general-branding/operations/put-v2-brands-brand_id-editor) request to configure the following:

- Hide the settings dropdown
- Hide the accessibility icon
- Hide the navigation icons
- Hide the sidebar
- Customize the completion footer text
- Customize the completion page (header and body text shown after document signing, hide the SignNow registration page, hide the download completed document button, hide the Go to SignNow button)
- Hide the Decline button during the signing session
- Set the default page dimension during the signing session

> The Support chat button is not visible for embedded signing by default.

```bash
curl --request PUT \
  --url https://api.signnow.com/v2/brands/{{brand_id}}/resources/editor \
  --header 'Authorization: Bearer {{access_token}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "settings": {
      "visibility": false
    },
    "accessibility": {
      "visibility": false
    },
    "navigation": {
      "visibility": false
    },
    "sidebar": {
      "visibility": false
    },
    "complete-footer": {
      "visibility": true,
      "custom-text": {
        "en": "Thank you!"
      }
    },
    "complete-page": {
      "success": {
        "header-text": {
          "en": "Great!"
        },
        "body-text": {
          "en": "The waiver form has been signed."
        }
      },
      "registration": {
        "visibility": false
      },
      "button-to-signnow": {
        "visibility": false
      },
      "button-download": {
        "visibility": false
      },
      "page-dimension": {
        "percent": 150
      },
      "decline-button": {
        "visibility": false
      }
    }
  }'
```

## Step 6. Assign a brand to the waiver form

Send the [`PUT /v2/documents/{{document_id}}/brand`](/docs/general-branding/operations/put-v2-documents-document_id-brand) request to assign the brand with all settings to the waiver form.

Retrieve the document ID from the **Step 1** response.

> You can also assign branding to a document group, application, and organization.

```bash
curl --request PUT \
--url 'https://api.signnow.com/v2/documents/{{document_id}}/brand' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'Content-Type: application/json' \
--data '{
  "brand_id": "{{brand_id}}"
}'
```

Now we can create the embedded invite for the waiver form.

## Step 7. Create an embedded invite for the waiver form

Send the [`POST /v2/documents/{{document_id}}/embedded-invites`](/docs/document-embedded-signing/operations/create-embedded-signing-invite) request to create an embedded invite to sign the waiver form.

Retrieve the role name using the [`GET /document/{{document_id}}`](/docs/document/operations/get-document) request (in the `roles` array).

**Useful settings for the Kiosk Mode**

- To use the invite for the Kiosk Mode, set the `force_new_signature` parameter to `1`. With the setting, a signer will not see previously saved signatures during the signing session.

- Add the `redirect_url` and `redirect_target`= `blank` to open the organizer's website in a new tab once the waiver form has been signed.

```bash
curl --request POST \
  --url https://api.signnow.com/v2/documents/{{document_id}}/embedded-invites \
  --header 'Authorization: Bearer {{access_token}}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "invites": [
      {
        "email": "signer1@email.com",
        "role": "Role 1",
        "order": 1,
        "auth_method": "none",
        "redirect_uri": "https://example.com",
        "redirect_target": "blank",
        "force_new_signature": 1
      }
    ]
  }'
```

The successful response retrieves the embedded invite ID. We will use it for the next request.

## Step 8. Create a link for the embedded invite

Send the [`POST /v2/documents/{{document_id}}/embedded-invites/{{field_invite_id}}/link`](/docs/document-embedded-signing/operations/generate-link-for-embedded-invite) request to create the link to the waiver form.

Use the `link_expiration` and `session_expiration` parameters to configure the link's lifetime and the duration of the signing session.

> Note that the recipient's `auth_method` for the integrated application in the request must be the same as when creating an embedded invite. Learn more about the [authentication methods](/docs/guides-embedded-signing#authentication-methods-used-in-the-integrated-application) used in the integrated application.

```bash
curl --request POST \
  --url 'https://api.signnow.com/v2/documents/{{document_id}}/embedded-invites/{{invite_id}}/link' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer {{access_token}}' \
  --data '{
    "auth_method": "none",
    "link_expiration": 45,
    "session_expiration": 15
}'
```

The successful response retrieves the link to the branded waiver form.

## Step 9. Embed the invite link

Embed the link into your website's iframe to provide a seamless experience for event participants.

A participant can open and sign the waiver form on a mobile device.

### See how it works for the signer

![kiosk_mode.gif](/reference-assets/images/Kiosk_mode/kiosk_mode.gif)


---
*Full page: https://docs.signnow.com/docs/kiosk-mode*
