MENU navbar-image

Introduction

Smartwaiver Api

Welcome to Smartwaiver's API. Here you can easily query and access all waiver templates and signed waivers for your account through our RESTful interface. All responses use JSON making our API easy to access in any programming language.

Integrate Smartwaiver with your CMS, local database, and more. All participant information that was submitted by your customer is accessible (e.g: Full Name, Date of Birth, Custom Questions etc). All PDF files are accessible as well.

Need your Smartwaiver API Key?

If you have an active Smartwaiver account, you can create your API key here. CREATE YOUR API KEY

Webhook Notes

Webhooks allow you to get near real-time HTTP POST notifications after a smart waiver is submitted. Learn More

SDKs

If you plan on using any of the following languages we highly recommend you head over to Github and checkout our SDKs. The SDKs are easy to install, have examples for every type of request, and provide a simple, easy, programmatic interface to your waivers.

Rate Limiting

Each Smartwaiver account, regardless of API key, is limited to 100 requests per minute in a fixed-window bucket. Once your limit has been hit you will receive an HTTP '429 Too Many Requests' response code and you should stop making requests.

A normal JSON response is returned containing information about how many seconds you have until you may make requests again. Furthermore, the 'Retry-After' HTTP header will contain the number of seconds to wait until trying again.

Note: there are several requests that are both not included in the above 100 rpm and limited at different rates. Please see the documentation for those specific routes below.

Linking to Console Waivers

This redirect link is intended to be used in the browser. It will open the Waiver Console and automatically look up the Waiver ID that you specified. From here, the end user can download the signed PDF and view all details of the waiver.

Note: This request does not require an API Key, but will require the user to either be logged in or log in to the correct account.

Auto_Tag

Auto-Tagging allows you to pass a custom value (with a maximum length of 64 characters) via the URL you use for your waiver. The value you use could be any unique identifier for the participant signing the waiver such as a customer number. When a waiver is completed using this link the waiver will automatically be tagged with this value. For more information please view the Auto-Tag support article

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer [INSERT API KEY]".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your dashboard and clicking Generate API token.

Legacy Authentication

The old method of authentication via a custom HTTP Header is still supported: "sw-api-key: [INSERT API KEY]"

Api Info

Ping

Ping/Pong Test

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/ping" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/ping';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/ping'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/ping"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
x-ratelimit-limit: 600
x-ratelimit-remaining: 599
access-control-allow-origin: *
 

pong
 

Request      

GET ping

POST ping

PUT ping

PATCH ping

DELETE ping

OPTIONS ping

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Version Api Version Information

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/version" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/version';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/version'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/version"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
content-type: text/html; charset=UTF-8
cache-control: no-cache, private
x-ratelimit-limit: 600
x-ratelimit-remaining: 598
access-control-allow-origin: *
 

5.0.0
 

Request      

GET version

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Checkins

List checkins for waivers List checkins for waivers

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/checkins?fromDts=2018-01-01&toDts=2018-01-02" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/checkins';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'fromDts' => '2018-01-01',
            'toDts' => '2018-01-02',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/checkins'
params = {
  'fromDts': '2018-01-01',
  'toDts': '2018-01-02',
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/checkins"
);

const params = {
    "fromDts": "2018-01-01",
    "toDts": "2018-01-02",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "checkins",
    "checkins": {
        "fromDts": "2018-01-01",
        "toDts": "2018-01-02",
        "moreCheckins": false,
        "checkins": [
            {
                "checkinId": 12345,
                "date": "2018-01-01 12:32:16",
                "waiverId": "56461ca244278b412ab3",
                "position": 0,
                "firstName": "John",
                "lastName": "Doe",
                "isMinor": false,
                "dateSigned": "2018-01-02 12:32:16"
                "templateId": 12345
            }
        ]
    }
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Request      

GET v4/checkins

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

checkinId   string  optional  

The specific checkin record you would like to get data from.

waiverId   string  optional  

The specific waiver you would like to get data from. A waiver can have multiple checkins if it has multiple signers

fromDts   string   

Limit to checkins after this ISO 8601 date (Must not be within the current hour) (If not provided time will default to 00:00:00). Allowed values: Must be in ISO 8601 format Example: 2018-01-01

toDts   string   

End date of checkin report (must be before current hour) (ISO in UTC) Example: 2018-01-02

limit   integer  optional  

Limit to this number of checkins. Default value: 20 Allowed values: 1-100

offset   integer  optional  

Offset to be combined with limit to page results. Default value: 0 Allowed values 0-1000

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (checkins)

checkins   object   
checkins   object[]   

The array of checkins

checkinId   integer   

The Id of the checkin

date   string   

The date this check-in occurred (ISO 8601 format)

waiverId   string   

The Unique ID for the waiver this participant check-in is from

position   integer   

The position in the participant array if your retrieve this waiver's data. (Note: 0 based and -1 means this participant is the guardian)

firstName   string   

The first name of this participant

lastName   string   

The last name of this participant

isMinor   boolean   

Whether this participant is a minor or not

dateSigned      

The date this waiver was signed (ISO 8601 format)

templateId   integer   

The Unique ID for the waiver template this check-in is from

fromDts   string   

The requested from date

toDts   string   

The requested to date

moreCheckins   boolean   

Whether there are more checkins to retrieve from this

Dynamic Waivers

Create a dynamic template for your customer to fill out

requires authentication

Use this route to create a dynamic template for your customer to sign. This route is very similar to the functionality provided in our JS library here. We recommend using the JS library to create your dynamic templates.

Need your Smartwaiver Published Key?

Create Your Published Key Your published key is a token that publicly identifies your account. THIS IS NOT YOUR API KEY. Never publish your API Key to your website.

Versions

Example Usage

It's easy to get started! Just simply add our Javscript library to your page and then you can use the Smartwaiver object.

<script src="https://js-lib.smartwaiver.com/sw-js-1.0.js"></script>
<script>
    smartwaiver.templates.dynamic({
        "publishedKey": "",
        "mode": "redirect",
        "expiration": 300,
        .
        .
        .

API Documentation

Creating a dynamic template for your customer to sign is just the first step! Next you'll want to request processing of that document and retrieve their information after they have signed it.

Example request:
curl --request POST \
    "https://api.smartwaiver.com/v4/dynamic/templates" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"dynamic\": null,
    \"template\": null,
    \"data\": null
}"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/dynamic/templates';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'dynamic' => null,
            'template' => null,
            'data' => null,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/dynamic/templates'
payload = {
    "dynamic": null,
    "template": null,
    "data": null
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/dynamic/templates"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "dynamic": null,
    "template": null,
    "data": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "dynamic",
    "dynamic": {
        "url": "https://waiver.smartwaiver.com/d/fDopTNTw5Zq8bCQnijBXuf/",
        "uuid": "fDopTNTw5Zq8bCQnijBXuf",
        "expiration": 300
    }
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (406, Wrong Content Type):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Content-Type must be json"
}
 

Request      

POST v4/dynamic/templates

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

dynamic   object   

Root Object.

template   string   

See JS Docs for template parameters.

data   string   

See JS Docs for template parameters.

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (dynamic)

dynamic   object   

Signed waiver information

url   string   

The url used to access this template

uuid   string   

Temporary ID assigned to this template

expiration   integer   

Expiration of this template

Request processing of a signed dynamic waiver

requires authentication

Use this route to request processing of your dynamic waivers. Wondering how you create and submit dynamic waivers. Check out the documentation for our JS library here

Transaction Id Example ->

"completion": {

    "redirect": {

        "success": "https://www.example.org/?transactionId=[transactionId]&bookingId=123456",

        "cancel": "https://www.example.com"

    }

}

See JS Docs for data parameters.

Example request:
curl --request POST \
    "https://api.smartwaiver.com/v4/dynamic/process/TRANSACTION_ID" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/dynamic/process/TRANSACTION_ID';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/dynamic/process/TRANSACTION_ID'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/dynamic/process/TRANSACTION_ID"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "dynamic_process",
    "dynamic_process": {
        "waiverId": "HK8L6Yaq2s2Bu8UMcBEo",
        "transactionId": "UMcBEoyTvDeizmj94p6"
    }
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Request      

POST v4/dynamic/process/{transactionId}

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

transactionId   string   

API key for the account. The transaction ID returned via query string param in redirect URL after the customer signs your waiver. See above for more details Example: TRANSACTION_ID

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (dynamic_process)

dynamic_process   object   

Signed waiver information

waiverId   string   

The unique ID assigned to this waiver

transactionId   string   

The temporary transaction ID used to request processing

Groups

Create Group Reservation

requires authentication

Important Notes about group Reservation Links

Once the group is created, an invite_url will be generated for the group leader only. This invite URL should be sent in the leader’s confirmation email (either by Smartwaiver if mailer=smartwaiver, or by your system if mailer=thirdparty). The leader can use this link to access their Group Leader Dashboard, where they can manage the group, view details, and add participants. Additional participants are not invited directly via this endpoint.

The group_management link returned in the response provides the group leader with a direct login URL to manage their group.

You may also include participant data along with the request. This is a list of additional users who are a part of the group. If none are provided then users can be set in the Group Reservation Dashboard. If users are provided using the API method then they will not be modifiable. This is to prevent data conflicts between integrations

Example request:
curl --request POST \
    "https://api.smartwaiver.com/groups/store" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"event\": {
        \"event_date\": \"2024-05-20T20:00:00+00:00\",
        \"leader\": \"Group 1\",
        \"name\": \"My Group\",
        \"description\": \"This is an example Group\"
    },
    \"leader\": {
        \"first_name\": \"John\",
        \"last_name\": \"Doe\",
        \"email\": \"example@test.com\"
    },
    \"template\": \"ABC123\",
    \"mailer\": \"smartwaiver\",
    \"participants\": {
        \"0\": [],
        \"first_name\": \"John\",
        \"last_name\": \"Doe\",
        \"email\": \"example@test.com\"
    }
}"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/groups/store';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'event' => [
                'event_date' => '2024-05-20T20:00:00+00:00',
                'leader' => 'Group 1',
                'name' => 'My Group',
                'description' => 'This is an example Group',
            ],
            'leader' => [
                'first_name' => 'John',
                'last_name' => 'Doe',
                'email' => 'example@test.com',
            ],
            'template' => 'ABC123',
            'mailer' => 'smartwaiver',
            'participants' => [
                [],
                'first_name' => 'John',
                'last_name' => 'Doe',
                'email' => 'example@test.com',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/groups/store'
payload = {
    "event": {
        "event_date": "2024-05-20T20:00:00+00:00",
        "leader": "Group 1",
        "name": "My Group",
        "description": "This is an example Group"
    },
    "leader": {
        "first_name": "John",
        "last_name": "Doe",
        "email": "example@test.com"
    },
    "template": "ABC123",
    "mailer": "smartwaiver",
    "participants": {
        "0": [],
        "first_name": "John",
        "last_name": "Doe",
        "email": "example@test.com"
    }
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/groups/store"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "event": {
        "event_date": "2024-05-20T20:00:00+00:00",
        "leader": "Group 1",
        "name": "My Group",
        "description": "This is an example Group"
    },
    "leader": {
        "first_name": "John",
        "last_name": "Doe",
        "email": "example@test.com"
    },
    "template": "ABC123",
    "mailer": "smartwaiver",
    "participants": {
        "0": [],
        "first_name": "John",
        "last_name": "Doe",
        "email": "example@test.com"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
  {
      "data": {
          "template": "ABC123",
          "mailer": "smartwaiver",
          "event": {
              "event_date": "2024-05-20T20:00:00+00:00",
              "leader": "Group 1",
              "name": "My Group",
              "description": "This is an example Group"
          },
          "leader": {
              "first_name": "John",
              "last_name": "Doe",
              "email": "example@test.com"
          },
          "user": 12345,
          "invite_urls": [
              {
                  "invite_url": "https://waiver.smartwaiver.com/g/ABC123/DEF-456/IJK-789",
                  "recipient": "example@test.com"
              }
          ],
          "group_management": "https://app.smartwaiver.com/login/group?nonce=ABC-123-DEF-456-789"
      }
  }
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Request      

POST groups/store

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

event   object   
event_date   date   

The RFC3339 timestamp of the start time of the group. This format requies a timezone. For UTC use +00:00 Example: 2024-05-20T20:00:00+00:00

leader   string   

The name of the group reservation. Example: Group 1

name   string  optional  

A name for the Group Reservation. Example: My Group

description   string  optional  

A descrpition of the Group Reservation. Example: This is an example Group

leader   object   
first_name   string   

The First Name of the Group Leader Example: John

last_name   string   

The Last Name of the Group Leader Example: Doe

email   string   

The Email of the Group Leader Example: example@test.com

template   string   

The Waiver Id of the waiver that groups are required to sign. Example: ABC123

mailer   string  optional  

Include this flag if your system will handle sending the waiver links. Otherwise our system will handle sending the waiver links. One of 'smartwaiver' or 'thirdparty'. Default: 'smartwaiver' Example: smartwaiver

participants   object[]   

An optional array of participants that are included on this Group Reservation. If participants are provided using this API then they will not be modifiable in the Group Reservation Dashboard. This is to prevent conflicting data sources

first_name   string   

The First Name of the Participant Example: John

last_name   string   

The Last Name of the Participant Example: Doe

email   string  optional  

The Email address of the Participant Example: example@test.com

Response

Response Fields

data   object   

The response data object containing all group details.

template   string   

The ID of the waiver template assigned to this group.

mailer   string   

The mailer system used to send invites (e.g., "smartwaiver").

event   object   

Information about the group event.

event_date   string   

ISO-8601 formatted date/time of the event.

leader   string   

The name or label of the group leader.

name   string   

The display name of the group.

description   string   

A description of the group.

leader   object   

Information about the group leader.

first_name   string   

The leader’s first name.

last_name   string   

The leader’s last name.

email   string   

The leader’s email address.

user   integer   

Your Account Id.

invite_urls   string[]   

A list of invite URLs sent to recipients.

invite_url      

The group leaders waiver link. To be included on the group confirmation email

recipient   string   

The email of the group leaders the invitation was sent to (If using 'smartwaiver' as the mailer)

group_management   string   

The link to the Group Management Dashboard. To be provided to group leaders for sharing waiver links.

Keys

List Published Keys List your published keys

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/keys/published" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/keys/published';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/keys/published'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/keys/published"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "published_keys",
    "published_keys": {
        "keys": [
            {
                "createdAt": "2024-05-20T20:09:53+00:00",
                "key": "SPoyAc7mNHK8L6Yaq2s2Bu8UMcBEoyTvDeizmj94p6",
                "label": "demo"
            }
        ]
    }
}
 

Request      

GET v4/keys/published

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (published_keys)

published_keys   object   

Published Keys Object

keys   object[]   

A List of all your active published keys

createdAt   string   

Date the key was created

key   string   

The key

label   string   

A label for this key

Create Published Key Create a new published key

requires authentication

Example request:
curl --request POST \
    "https://api.smartwaiver.com/v4/keys/published" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"label\": \"demo\"
}"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/keys/published';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'label' => 'demo',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/keys/published'
payload = {
    "label": "demo"
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/keys/published"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "label": "demo"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "published_keys",
    "published_keys": {
        "newKey": {
            "createdAt": "2024-05-20T20:09:53+00:00",
            "key": "SPoyAc7mNHK8L6Yaq2s2Bu8UMcBEoyTvDeizmj94p6",
            "label": "demo"
        },
        "keys": [
            {
                "createdAt": "2024-05-20T20:09:53+00:00",
                "key": "SPoyAc7mNHK8L6Yaq2s2Bu8UMcBEoyTvDeizmj94p6",
                "label": "demo"
            }
        ]
    }
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (406, Wrong Content Type):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Content-Type must be json"
}
 

Example response (406, Conflict Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Label is already in use. Please choose another label."
}
 

Request      

POST v4/keys/published

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

label   string   

API key for account. Example: demo

Response

Response Fields

type   string   

Type of response given (published_keys)

published_keys   object   

Published Keys Object

newKey   object   

The newly created key

createdAt   string   

Date the key was created

key   string   

The key

label   string   

A label for this key

keys   object[]   

A List of all your active published keys

createdAt   string   

Date the key was created

key   string   

The key

label   string   

A label for this key

SMS

Send SMS This API is rate limited by day for security purposes and to prevent spam. By default, the rate limit allows only a few SMS messages to be sent per day. You can request an increase by contacting our support team.

requires authentication

Example request:
curl --request POST \
    "https://api.smartwaiver.com/v4/sms" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"templateId\": \"TEMPLATE_ID\",
    \"number\": 0
}"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/sms';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'templateId' => 'TEMPLATE_ID',
            'number' => 0,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/sms'
payload = {
    "templateId": "TEMPLATE_ID",
    "number": 0
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/sms"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "templateId": "TEMPLATE_ID",
    "number": 0
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "f3f29234b1e34e2ab9122c309c9e0e47",
    "ts": "2023-10-11T19:35:10+00:00",
    "type": "sms",
    "sms": {
        "id": "SM449100294d129ca4a377f3f217f89d5e",
        "phone": "+1 555-555-5555",
        "template": {
            "uuid": "ckbtnsjnje122vbtms2mt",
            "title": "Test Example"
        },
        "status": 1,
        "date": "2023-10-11 19:35:11"
    }
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Request      

POST v4/sms

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

templateId   string   

The Id of the waiver template you would like to send Example: TEMPLATE_ID

number   integer   

The phone number you would like to send the waiver to. Example: 0

Response

Response Fields

version   integer   

API version number

id   string   

Unique ID of SMS message

ts   string   

Timestamp of request

type   string   

Type of response given (sms)

sms   object   
phone   string   

Formatted Number Waiver was sent to

template   object   

Waiver Template Details

uuid   string   

Unique Id of the waiver sent

title   string   

Title of waiver sent

status   integer   

Status code of SMS sending protocol (1: Success)

date   string   

Date the SMS message was sent.

Search

requires authentication

This search route will conduct a synchronous search and then return a GUID that can be used to access all results from the search. If the search returns zero results a valid GUID will be returned but since no pages exist for that GUID all requests for results will return an error. If the search result set is large the request can take up to several seconds, so make sure your timeouts are set correctly. Note: The returned search GUID will expire after 12 hours.

Note: The search is currently limited to 30,000 results.

Note: This request is not included in the normal 100 request per minute limit, but is instead limited to 5 requests per minute by itself.

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/search?templateId=6jebdfxzvrdkd" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/search';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'templateId' => '6jebdfxzvrdkd',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/search'
params = {
  'templateId': '6jebdfxzvrdkd',
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/search"
);

const params = {
    "templateId": "6jebdfxzvrdkd",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2017-01-24T11:14:25+00:00",
    "type": "search",
    "search": {
        "guid": "6jebdfxzvrdkd",
        "count": 652,
        "pages": 7,
        "pageSize": 100
    }
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (search)

search   object   

Signed waiver information

guid   string   

GUID used to retrieve search results

count   integer   

The number of waivers in the search results

pages   integer   

The number of pages in the search results

pageSize   integer   

The number of waivers in each page of results Currently, always 100

Retrieve a page of search results

requires authentication

Use this route to retrieve each page of the search results from the above route. If a page outside the results is requested a 402 error will be returned with an appropriate message.

Note: The GUID from the search route will expire after 12 hours.

Note: The pagination uses a zero-based index. So to query all results start with ?page=0

Note: This request can be quite slow to retrieve the page. However, due to our caching mechanism, subsequent requests for the same page will be significantly faster.

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/search/6jebdfxzvrdkd/results?page=" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/search/6jebdfxzvrdkd/results';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'page' => '',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/search/6jebdfxzvrdkd/results'
params = {
  'page': '',
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/search/6jebdfxzvrdkd/results"
);

const params = {
    "page": "",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2017-01-24T11:14:25+00:00",
    "type": "search_results",
    "search_results": [
        {
            "waiverId": "6jebdfxzvrdkd",
            "templateId": "sprswrvh2keeh",
            "title": "Smartwaiver Demo Waiver",
            "createdOn": "2017-01-24 13:12:29",
            "expirationDate": "",
            "expired": false,
            "verified": true,
            "kiosk": true,
            "firstName": "Kyle",
            "middleName": "",
            "lastName": "Smith II",
            "dob": "2008-12-25",
            "autoTag": "",
            "clientIP": "192.0.2.0",
            "email": "example@smartwaiver.com",
            "marketingAllowed": false,
            "addressLineOne": "626 NW Arizona Ave.",
            "addressLineTwo": "Suite 2",
            "addressCity": "Bend",
            "addressState": "OR",
            "addressZip": "97703",
            "addressCountry": "US",
            "emergencyContactName": "Mary Smith",
            "emergencyContactPhone": "111-111-1111",
            "insuranceCarrier": "My Insurance",
            "insurancePolicyNumber": "1234567",
            "driversLicenseNumber": "9876543",
            "driversLicenseState": "OR",
            "tags": [
                "Green Team"
            ],
            "flags": [
                {
                    "displayText": "Have you received our orientation?",
                    "reason": "was not selected"
                }
            ],
            "participants": [
                {
                    "firstName": "Kyle",
                    "middleName": "",
                    "lastName": "Smith II",
                    "dob": "2008-12-25",
                    "isMinor": true,
                    "gender": "Male",
                    "phone": "",
                    "tags": [
                        "YES"
                    ],
                    "customParticipantFields": {
                        "bk3xydss4e9dy": {
                            "value": "YES",
                            "displayText": "Is this participant ready to have fun?"
                        }
                    },
                    "flags": [
                        {
                            "displayText": "Are you excited?",
                            "reason": "was not selected"
                        }
                    ]
                }
            ],
            "pdf": "Base64 Encoded PDF",
            "photos": 1,
            "guardian": {
                "firstName": "Kyle",
                "middleName": "",
                "lastName": "Smith I",
                "phone": "555-555-5555",
                "dob": "1970-12-25"
            },
            "customWaiverFields": {
                "ha5bs1jy5wdop": {
                    "value": "A friend",
                    "displayText": "How did you hear about Smartwaiver?"
                }
            }
        }
    ]
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Request      

GET v4/search/{guid}/results

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

guid   string   

The guid of the search results returned from the search request. Example: 6jebdfxzvrdkd

Query Parameters

page   integer   

Which page of the search results you want to return. Note: pages use a zero-based index

pdf   string  optional  

Include Base 64 encoded PDF of signed waiver Default value: false Allowed values: true, false

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (search_results)

search_results   object[]   

Signed waiver information

waiverId   string   

Unique ID of signed waiver

templateId   string   

Unique ID of template for this signed waiver

title   string   

Title of waiver

createdOn   string   

Date waiver was signed (ISO 8601 format)

expirationDate   string   

Date waiver will expire (ISO 8601 format) Note: This value is always empty if your account does not have the days to expiration setting enabled in the waiver console.

expired   boolean   

If this waiver is older than your account's static expiration date or is past your account setting for days to expiration from signing date

verified   boolean   

If the waiver has been verified

kiosk   boolean   

If the waiver was signed at a kiosk

firstName   string   

First name of the first participant on the waiver

middleName   string   

Middle name of the first participant on the waiver

lastName   string   

Last name of the first participant on the waiver

dob   string   

Date of birth of the first participant on the waiver (ISO 8601 format) Note: The DOB will be 1800-01-01 if the waiver is set up to use a checkbox for age verification.

isMinor   boolean   

Whether the first participant is a minor or not

autoTag   string   

Auto tag on the waiver if there is one, otherwise it will be blank

clientIP   string   

IP Address from which the waiver was submitted

email   string   

The primary email for the waiver

marketingAllowed   boolean   

Whether the user allows marketing to be sent to their email

addressLineOne   string   

The first line of the address

addressLineTwo   string   

The second line of the address

addressCity   string   

The city of the address

addressState   string   

The state of the address

addressZip   string   

The zip code of the address

addressCountry   string   

The country of the address

emergencyContactName   string   

The name of the emergency contact

emergencyContactPhone   string   

The phone number of the emergency contact

insuranceCarrier   string   

The name of the insurance carrier

insurancePolicyNumber   string   

The policy number of the insurance

driversLicenseNumber   string   

The number of the drivers license

driversLicenseState   string   

The state of the drivers license

tags   string[]   

A list of tags for the waiver

flags   object[]   

A list of tags for all participants

displayText   string   

The display text for the flagged question

reason   string   

The reason this answer was flagged

photos   integer   

Number of photos attached to this waiver

participants   object[]   

A list of participants on the waiver

firstName   string   

The first name of the participant

middleName   string   

The middle name of the participant

lastName   string   

The last name of the participant

dob   string   

Date of birth of the participant (ISO 8601 format) Note: The DOB will be 1800-01-01 if the waiver is set up to use a checkbox for age verification.

isMinor   boolean   

Whether or not this participant is a minor

minorExpired   boolean   

True if this participant is a minor and has passed age of majority and age of majority expiration turned on, false otherwise

gender   string   

Gender of the participant

phone   string   

Phone number of the participant

relationship   string   

If this participant is the guardian on the waiver, this field will be the relationship to the minor

tags   string[]   

A list of tags for the waiver

customParticipantFields   object[]   

Any custom participant fields on the waiver

{GUID}   object   

The custom participant field, each {GUID} is unique

value   string   

The value of the custom participant field

displayText   string   

The display text of the custom participant field

flags   object[]   

A list of tags for this participant

displayText   string   

The display text for the flagged question

reason   string   

The reason this answer was flagged

pdf      

Base64 Encoded PDF

photos   integer   
customWaiverFields   object   

Any custom waiver fields on the waiver

{GUID}   object   

The custom waiver field, each {GUID} is unique

value   string   

The value of the custom waiver field

displayText   string   

The display text of the custom waiver field

guardian   object   

If there are only minors on the waiver, this field contains the guardian information, otherwise it will be null

firstName   string   

The first name of the guardian

middleName   string   

The middle name of the guardian

lastName   string   

The last name of the guardian

phone   string   

The phone number of the guardian

dob   string   

The dob of the guardian

relationship   string   

The relationship of the guardian to the minors

Templates

List waiver templates List waiver templates

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/templates" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/templates';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/templates'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/templates"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "templates",
    "templates": [
        {
            "templateId": "sprswrvh2keeh",
            "title": "Demo Waiver",
            "publishedVersion": 78015,
            "publishedOn": "2016-11-02T21:18:38+00:00",
            "webUrl": "https://waiver.smartwaiver.com/w/sprswrvh2keeh/web/",
            "kioskUrl": "https://waiver.smartwaiver.com/w/sprswrvh2keeh/kiosk/",
            "vanityUrls": [
                "https://waiver.smartwaiver.com/v/foo/",
                "https://waiver.smartwaiver.com/v/bar/"
            ],
            "webhook": {
                "endpoint": "https://www.example.org/foo/",
                "emailValidationRequired": "yes"
            }
        }
    ]
}
 

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "templates",
    "templates": [
        {
            "templateId": "sprswrvh2keeh",
            "title": "Demo Waiver",
            "publishedVersion": 78015,
            "publishedOn": "2016-11-02T21:18:38+00:00",
            "webUrl": "https://waiver.smartwaiver.com/w/sprswrvh2keeh/web/",
            "kioskUrl": "https://waiver.smartwaiver.com/w/sprswrvh2keeh/kiosk/",
            "vanityUrls": [
                "https://waiver.smartwaiver.com/v/foo/",
                "https://waiver.smartwaiver.com/v/bar/"
            ],
            "webhook": {
                "endpoint": "https://www.example.org/foo/",
                "emailValidationRequired": "yes"
            },
            "customFields": [
                {
                    "guid": "5RT5Zfn4yjLFrcvgSyZQnX",
                    "fieldType": "textbox",
                    "type": "string",
                    "label": "The Texbox"
                }
            ],
            "customParticipantFields": [
                {
                    "guid": "adztfQsYTPmQhLR1cTcJyZ",
                    "fieldType": "optionlist",
                    "type": "array",
                    "label": "The Checkboxes"
                }
            ]
        }
    ]
}
 

Request      

GET v4/templates

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

customFields   string  optional  

Include custom field data in the response Default value: false Allowed values: true, false.

published   string  optional  

Limit to only published waivers. Default value: false Allowed values: true, false.

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (templates)

templates   object[]   

Waiver template information

title   string   

Title of waiver template

publishedVersion   integer   

Published version of waiver template

publishedOn   string   

Date of waiver template was published

webUrl   string   

Link to web version of waiver template

kioskUrl   string   

Link to kiosk version of waiver template

vanityUrls   string[]   

Link to any of the vanity urls for the template

webhook   object   

An object containing information about the template level webhook or null if no webhook is set up

endpoint   string   

Endpoint URL for webhook

emailValidationRequired   string   

Webhook is sent after email verification (yes), before (no)

customFields   object[]   

A list of custom fields

guid   string   

Unique Id of field

fieldType   string   

The type of field that will show on the waiver. (Values: richtext,textbox,datebox,file,optionlist,checkboxes,radiobuttons)

string      

The type of data that will be filled on the waiver. (Values: string,date,file,array,enum,none)

label   string   

The name of the field on the waiver.

participantCustomFields   object   
guid   string   

Unique Id of field

fieldType   string   

The type of field that will show on the waiver. (Values: richtext,textbox,numerictextbox,datebox,file,optionlist,checkboxes,radiobuttons)

type   string   

The type of data that will be filled on the waiver. (Values: string,number,date,file,array,enum,none)

label   string   

The name of the field on the waiver.

Retrieve a waiver template Retrieve a waiver template

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/templates/TEMPLATE_ID" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/templates/TEMPLATE_ID';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/templates/TEMPLATE_ID'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/templates/TEMPLATE_ID"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "template",
    "template": {
        "templateId": "sprswrvh2keeh",
        "title": "Demo Waiver",
        "publishedVersion": 78015,
        "publishedOn": "2016-11-02T21:18:38Z",
        "webUrl": "https://waiver.smartwaiver.com/w/sprswrvh2keeh/web/",
        "kioskUrl": "https://waiver.smartwaiver.com/w/sprswrvh2keeh/kiosk/",
        "vanityUrls": [
            "https://waiver.smartwaiver.com/v/foo/",
            "https://waiver.smartwaiver.com/v/bar/"
        ],
        "webhook": {
            "endpoint": "https://www.example.org/foo/",
            "emailValidationRequired": "yes"
        }
    }
}
 

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "template",
    "template": {
        "templateId": "sprswrvh2keeh",
        "title": "Demo Waiver",
        "publishedVersion": 78015,
        "publishedOn": "2016-11-02T21:18:38Z",
        "webUrl": "https://waiver.smartwaiver.com/w/sprswrvh2keeh/web/",
        "kioskUrl": "https://waiver.smartwaiver.com/w/sprswrvh2keeh/kiosk/",
        "vanityUrls": [
            "https://waiver.smartwaiver.com/v/foo/",
            "https://waiver.smartwaiver.com/v/bar/"
        ],
        "webhook": {
            "endpoint": "https://www.example.org/foo/",
            "emailValidationRequired": "yes"
        },
        "customFields": [
            {
                "guid": "5RT5Zfn4yjLFrcvgSyZQnX",
                "fieldType": "textbox",
                "type": "string",
                "label": "The Texbox"
            }
        ],
        "customParticipantFields": [
            {
                "guid": "adztfQsYTPmQhLR1cTcJyZ",
                "fieldType": "optionlist",
                "type": "array",
                "label": "The Checkboxes"
            }
        ]
    }
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Request      

GET v4/templates/{templateId}

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

templateId   string   

Unique ID of waiver template Example: TEMPLATE_ID

Query Parameters

customFields   string  optional  

Include custom field data in the response Default value: false Allowed values: true, false.

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (template)

template   object   

Waiver template information

templateId   string   

Unique ID of waiver template

title   string   

Title of waiver template

publishedVersion   integer   

Published version of waiver template

publishedOn   string   

Date of waiver template was published

webUrl   string   

Link to web version of waiver template

kioskUrl   string   

Link to kiosk version of waiver template

vanityUrls   string[]   

Link to any of the vanity urls for the template

webhook   object   

An object containing information about the template level webhook or null if no webhook is set up

endpoint   string   

Endpoint URL for webhook

emailValidationRequired   string   

Webhook is sent after email verification (yes), before (no)

customFields   object[]   

A list of custom fields

guid   string   

Unique Id of field

fieldType   string   

The type of field that will show on the waiver. (Values: richtext,textbox,datebox,file,optionlist,checkboxes,radiobuttons)

string      

The type of data that will be filled on the waiver. (Values: string,date,file,array,enum,none)

label   string   

The name of the field on the waiver.

participantCustomFields   object   
guid   string   

Unique Id of field

fieldType   string   

The type of field that will show on the waiver. (Values: richtext,textbox,datebox,file,optionlist,checkboxes,radiobuttons)

type   string   

The type of data that will be filled on the waiver. (Values: string,date,file,array,enum,none)

label   string   

The name of the field on the waiver.

Prefill a waiver template Prefill a waiver template

requires authentication

Note: The Lockdown prefill endpoint

Example request:
curl --request POST \
    "https://api.smartwaiver.com/v4/templates/9yskfhh4d9xkirqwgkux2b/prefill" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"expiration\": 30000,
    \"lockdownPrefill\": false,
    \"adult\": false,
    \"participants\": [
        {
            \"firstName\": \"John\",
            \"lastName\": \"Doe\",
            \"phone\": \"555-555-5555\",
            \"dob\": \"2018-03-03\",
            \"customFields\": {
                \"aNk49uHsNjSezQbNVejRTr\": \"Per Person Prefill Data\"
            }
        }
    ],
    \"guardian\": {
        \"firstName\": \"Jacob\",
        \"lastName\": \"Doe\",
        \"dob\": \"1999-03-03\",
        \"customFields\": {
            \"aNk49uHsNjSezQbNVejRTr\": \"Guardian Prefill Data\"
        }
    },
    \"addressLineOne\": \"123 Sesame Street\",
    \"addressCity\": \"Ocean City\",
    \"addressState\": \"NJ\",
    \"addressZip\": \"12345\",
    \"email\": \"example@test.com\",
    \"customWaiverFields\": {
        \"fLX6DN4mWThQQoY5sKStDo\": \"Per Waiver Prefill Data\"
    }
}"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/templates/9yskfhh4d9xkirqwgkux2b/prefill';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'expiration' => 30000,
            'lockdownPrefill' => false,
            'adult' => false,
            'participants' => [
                [
                    'firstName' => 'John',
                    'lastName' => 'Doe',
                    'phone' => '555-555-5555',
                    'dob' => '2018-03-03',
                    'customFields' => [
                        'aNk49uHsNjSezQbNVejRTr' => 'Per Person Prefill Data',
                    ],
                ],
            ],
            'guardian' => [
                'firstName' => 'Jacob',
                'lastName' => 'Doe',
                'dob' => '1999-03-03',
                'customFields' => [
                    'aNk49uHsNjSezQbNVejRTr' => 'Guardian Prefill Data',
                ],
            ],
            'addressLineOne' => '123 Sesame Street',
            'addressCity' => 'Ocean City',
            'addressState' => 'NJ',
            'addressZip' => '12345',
            'email' => 'example@test.com',
            'customWaiverFields' => [
                'fLX6DN4mWThQQoY5sKStDo' => 'Per Waiver Prefill Data',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/templates/9yskfhh4d9xkirqwgkux2b/prefill'
payload = {
    "expiration": 30000,
    "lockdownPrefill": false,
    "adult": false,
    "participants": [
        {
            "firstName": "John",
            "lastName": "Doe",
            "phone": "555-555-5555",
            "dob": "2018-03-03",
            "customFields": {
                "aNk49uHsNjSezQbNVejRTr": "Per Person Prefill Data"
            }
        }
    ],
    "guardian": {
        "firstName": "Jacob",
        "lastName": "Doe",
        "dob": "1999-03-03",
        "customFields": {
            "aNk49uHsNjSezQbNVejRTr": "Guardian Prefill Data"
        }
    },
    "addressLineOne": "123 Sesame Street",
    "addressCity": "Ocean City",
    "addressState": "NJ",
    "addressZip": "12345",
    "email": "example@test.com",
    "customWaiverFields": {
        "fLX6DN4mWThQQoY5sKStDo": "Per Waiver Prefill Data"
    }
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/templates/9yskfhh4d9xkirqwgkux2b/prefill"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "expiration": 30000,
    "lockdownPrefill": false,
    "adult": false,
    "participants": [
        {
            "firstName": "John",
            "lastName": "Doe",
            "phone": "555-555-5555",
            "dob": "2018-03-03",
            "customFields": {
                "aNk49uHsNjSezQbNVejRTr": "Per Person Prefill Data"
            }
        }
    ],
    "guardian": {
        "firstName": "Jacob",
        "lastName": "Doe",
        "dob": "1999-03-03",
        "customFields": {
            "aNk49uHsNjSezQbNVejRTr": "Guardian Prefill Data"
        }
    },
    "addressLineOne": "123 Sesame Street",
    "addressCity": "Ocean City",
    "addressState": "NJ",
    "addressZip": "12345",
    "email": "example@test.com",
    "customWaiverFields": {
        "fLX6DN4mWThQQoY5sKStDo": "Per Waiver Prefill Data"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "prefill",
    "prefill": {
        "uuid": "a0256461ca244278b4",
        "expiration": 30000,
        "url": "https://waiver.smartwaiver.com/p/a0256461ca244278b4/"
    }
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Request      

POST v4/templates/{templateId}/prefill

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

templateId   string   

Unique ID of waiver template Example: 9yskfhh4d9xkirqwgkux2b

Body Parameters

expiration   integer   

Expiration in seconds of waiver template (Min: 300, Max: 2592000) Example: 30000

lockdownPrefill   boolean  optional  

If set to true, users will not be able to change prefilled values on the waiver. The lockdownPrefill parameter only applies to standard fields, not custom fields. Additionally, it cannot be used with the date of birth field due to compliance restrictions. (Default: false) Example: false

kiosk   boolean  optional  

Whether to use kiosk mode (Allowed types: true or false)

adult   boolean  optional  

Weather the waiver has only an adult or also a child(Allowed types: true or false) Example: false

anyoneElseHidden   boolean  optional  

Hide the anyone else need to sign buttons (Allowed types: true or false), (Default: false)

participants   object[]  optional  
firstName   string  optional  

The participant's first name Example: John

middleName   string  optional  

The participant's middle name

lastName   string  optional  

The participant's last name Example: Doe

phone   string  optional  

The participant's phone number Example: 555-555-5555

gender   string  optional  

The participant's gender

dob   string  optional  

The participant's DOB (IS0 8601 formatting: e.g. 2000-01-01) Example: 2018-03-03

customFields   object  optional  

The participant's custom waiver fields

{GUID}   string  optional  

The participant's custom waiver fields

guardian   object  optional  
participant   boolean  optional  

Whether the guardian is a participant or not (Default value: false)

firstName   string  optional  

The guardian's first name Example: Jacob

middleName   string  optional  

The guardian's middle name

lastName   string  optional  

The guardian's last name Example: Doe

relationship   string  optional  

The guardian's relationship to the minor

phone   string  optional  

The guardian's phone number (if they are a participant)

gender   string  optional  

The guardian's gender (if they are a participant)

dob   string  optional  

The guardian's dob (IS0 8601 formatting: e.g. 2000-01-01) Example: 1999-03-03

customFields   object  optional  

The participant's custom waiver fields

{GUID}   string  optional  

The participant's custom waiver fields

addressLineOne   string  optional  

Address waiver question Line One Example: 123 Sesame Street

addressLineTwo   string  optional  

Address waiver question Line Two

addressCountry   string  optional  

Address waiver question country

addressCity   string  optional  

Address waiver question city Example: Ocean City

addressState   string  optional  

Address waiver question state Example: NJ

addressZip   string  optional  

Address waiver question zip code Example: 12345

email   string  optional  

Email waiver question Example: example@test.com

emergencyContactName   string  optional  

Emergency waiver question full name

emergencyContactFirstName   string  optional  

Emergency waiver question first name

emergencyContactLastName   string  optional  

Emergency waiver question last name

emergencyContactRelation   string  optional  

Emergency waiver question relationship

emergencyContactPhone   string  optional  

Emergency waiver question phone

insuranceCarrier   string  optional  

Insurance carrier

insurancePolicyNumber   string  optional  

Policy number

driversLicenseState   string  optional  

Drivers License State

driversLicenseNumber   string  optional  

Drivers License Number

customWaiverFields   object  optional  

Custom waiver fields on the waiver

{GUID}   string  optional  

The value of the custom waiver field

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (prefill)

prefill   object   

Waiver template information

uuid   string   

Unique ID of prefilled waiver template

expiration   string   

Expiration time of waiver

url   string   

Direct link to prefilled waiver template

User

Get User Basic Info

requires authentication

Lists the users basic info.

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/info" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/info';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/info'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/info"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "info",
    "info": {
        "username": "example",
        "email": "Demo Waiver",
        "signupDate": "2016-11-02",
        "ipAddress": "127.0.0.1",
    }
}
 

Request      

GET v4/info

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (info)

info   object   

Smartwaiver user information

username   string   

Settings for the waiver console

email   string   

Emiall address of current user.

signupDate   string   

Signup Date of current user

ipAddress   string   

Ip address of current request.

List User Settings

requires authentication

Lists the user settings.

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/settings" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/settings';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/settings'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/settings"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 600
x-ratelimit-remaining: 597
access-control-allow-origin: *
 

{
    "version": 4,
    "id": "a1c0db9b440742a3983152ec5897f23d",
    "ts": "2025-11-17T15:28:10+00:00",
    "type": "auth_error",
    "message": "Unauthorized"
}
 

Request      

GET v4/settings

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (settings)

settings   object   

Smartwaiver user settings

console   object   

Settings for the waiver console

staticExpiration   string   

Date before which all waivers are expired (never for no expiration)

rollingExpiration   string   

How many days a waiver is valid for it should be expired (never for never expires, otherwise a number and a letter (D or M) indicating a number of days or months) (never, #D, #M)

Get Api Key Label

requires authentication

Gets the api key label of the current user.

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/me" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/me';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/me'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/me"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 600
x-ratelimit-remaining: 596
access-control-allow-origin: *
 

{
    "version": 4,
    "id": "d2e47816dada4b10ab60331627599f32",
    "ts": "2025-11-17T15:28:10+00:00",
    "type": "auth_error",
    "message": "Unauthorized"
}
 

Request      

GET v4/me

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (me)

me   object   

Smartwaiver user infomration

label   string   

Api Key Label

Waivers

List Signed Waivers List Signed Waivers

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/waivers?limit=5&offset=8" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/waivers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '5',
            'offset' => '8',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/waivers'
params = {
  'limit': '5',
  'offset': '8',
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/waivers"
);

const params = {
    "limit": "5",
    "offset": "8",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "waivers",
    "waivers": [
        {
            "waiverId": "6jebdfxzvrdkd",
            "templateId": "sprswrvh2keeh",
            "title": "Demo Waiver",
            "createdOn": "2017-01-24 13:12:29",
            "expirationDate": "",
            "expired": false,
            "verified": true,
            "kiosk": true,
            "firstName": "Kyle",
            "middleName": "",
            "lastName": "Smith II",
            "dob": "2008-12-25",
            "isMinor": true,
            "autoTag": "",
            "tags": [
                "Green Team"
            ],
            "flags": [
                {
                    "displayText": "Have you received our orientation?",
                    "reason": "was not selected"
                }
            ],
            "events": [
                {
                    "eventUuid": "5RT5Zfn4yjLFrcvgSyZQnX",
                    "name": "Event Name",
                    "startDate": "2025-01-26 00:00:00",
                    "endDate": "2025-01-30 00:00:00"
                }
            ]
        }
    ]
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Request      

GET v4/waivers

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

limit   integer  optional  

Max number of waivers to return Default value: 20 Allowed values: 1-300. Example: 5

offset   integer  optional  

How many pages to paginate through. Based on the limit. So if limit is 300. Offsets to Waivers 301 - 600 Default value: 0 Example: 8

verified   string  optional  

Limit selection to waiver that have been verified or not Allowed values: true, false.

eventData   string  optional  

Include event data in the response Default value: false Allowed values: true, false.

templateId   string  optional  

Limit selection to signed waivers of the given template ID

prefillId   string  optional  

Limit selection to signed waivers of the given prefill ID

fromDts   string  optional  

Limit to checkins after this ISO 8601 date (Must not be within the current hour) (If not provided time will default to 00:00:00). Allowed values: Must be in ISO 8601 format

toDts   string  optional  

End date of checkin report (must be before current hour) (ISO in UTC)

firstName   string  optional  

Limit to waivers with a participant having this First Name (Case Insensitive)

lastName   string  optional  

Limit to waivers with a participant having this Last Name (Case Insensitive)

tag   string  optional  

Limit to waivers with a participant having this as their primary tag

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (waivers)

waivers   object[]   

Signed waiver information

waiverId   string   

Unique ID of waiver

templateId   string   

Unique ID of template for this waiver

title   string   

Title of waiver

createdOn   string   

Date waiver was signed (ISO 8601 format)

expirationDate   string   

Date waiver will expire (ISO 8601 format) Note: This value is always empty if your account does not have the days to expiration setting enabled in the waiver console.

expired   boolean   

If this waiver is older than your account's static expiration date or is past your account setting for days to expiration from signing date

verified   boolean   

If the waiver has been verified

kiosk   boolean   

If the waiver was signed at a kiosk

firstName   string   

First name of the first participant on the waiver

middleName   string   

Middle name of the first participant on the waiver

lastName   string   

Last name of the first participant on the waiver

dob   string   

Date of birth of the first participant on the waiver (ISO 8601 format) Note: The DOB will be 1800-01-01 if the waiver is set up to use a checkbox for age verification.

isMinor   boolean   

Whether the first participant is a minor or not

autoTag   string   

Auto tag on the waiver if there is one, otherwise it will be blank

tags   string[]   

A list of tags for the waiver

flags   object[]   

A list of tags for all participants

displayText   string   

The display text for the flagged question

reason   string   

The reason this answer was flagged

eventData   object[]   

The event this waiver is tied to

guid   string   

Unique Id of the event

name   string   

The name of the event

startdate      

date The start date of the event

enddate   string   

The end date of the event

prefillId   string   

PrefillId for waiver if it exist, null if there is not one

Retrieve a signed waiver Retrieve a signed waiver

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/waivers/WAIVER_ID?pdf=false" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/waivers/WAIVER_ID';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'pdf' => 'false',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/waivers/WAIVER_ID'
params = {
  'pdf': 'false',
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/waivers/WAIVER_ID"
);

const params = {
    "pdf": "false",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2017-01-24T11:14:25+00:00",
    "type": "waiver",
    "waiver": {
        "waiverId": "6jebdfxzvrdkd",
        "templateId": "sprswrvh2keeh",
        "title": "Smartwaiver Demo Waiver",
        "createdOn": "2017-01-24 13:12:29",
        "expirationDate": "",
        "expired": false,
        "verified": true,
        "kiosk": true,
        "firstName": "Kyle",
        "middleName": "",
        "lastName": "Smith II",
        "dob": "2008-12-25",
        "autoTag": "",
        "clientIP": "192.0.2.0",
        "email": "example@smartwaiver.com",
        "marketingAllowed": false,
        "addressLineOne": "626 NW Arizona Ave.",
        "addressLineTwo": "Suite 2",
        "addressCity": "Bend",
        "addressState": "OR",
        "addressZip": "97703",
        "addressCountry": "US",
        "emergencyContactName": "Mary Smith",
        "emergencyContactPhone": "111-111-1111",
        "insuranceCarrier": "My Insurance",
        "insurancePolicyNumber": "1234567",
        "driversLicenseNumber": "9876543",
        "driversLicenseState": "OR",
        "tags": [
            "Green Team"
        ],
        "flags": [
            {
                "displayText": "Have you received our orientation?",
                "reason": "was not selected"
            }
        ],
        "participants": [
            {
                "firstName": "Kyle",
                "middleName": "",
                "lastName": "Smith II",
                "dob": "2008-12-25",
                "isMinor": true,
                "gender": "Male",
                "phone": "",
                "tags": [
                    "YES"
                ],
                "customParticipantFields": {
                    "bk3xydss4e9dy": {
                        "value": "YES",
                        "displayText": "Is this participant ready to have fun?"
                    }
                },
                "flags": [
                    {
                        "displayText": "Are you excited?",
                        "reason": "was not selected"
                    }
                ]
            }
        ],
        "events": [
            {
                "eventUuid": "5RT5Zfn4yjLFrcvgSyZQnX",
                "name": "textbox",
                "startDate": "2025-01-26 00:00:00",
                "endDate": "2025-01-30 00:00:00"
            }
        ],
        "pdf": "Base64 Encoded PDF",
        "photos": 1,
        "guardian": {
            "firstName": "Kyle",
            "middleName": "",
            "lastName": "Smith I",
            "phone": "555-555-5555",
            "relationship": "Father",
            "dob": "1970-12-25"
        },
        "customWaiverFields": {
            "ha5bs1jy5wdop": {
                "value": "A friend",
                "displayText": "How did you hear about Smartwaiver?"
            }
        },
        "typedSignatures": {
            "participants": [],
            "guardian": [],
            "bodySignatures": [],
            "bodyInitials": []
        }
    }
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Request      

GET v4/waivers/{waiverId}

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

waiverId   string   

Unique ID of signed waiver. Example: WAIVER_ID

Query Parameters

pdf   string  optional  

Include Base 64 encoded PDF of signed waiver Default value: false Allowed values: true, false. Example: false

eventData   string  optional  

Include event data in the response Default value: false Allowed values: true, false.

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (waivers)

waivers   object   

Signed waiver information

waiverId   string   

Unique ID of signed waiver

templateId   string   

Unique ID of template for this signed waiver

title   string   

Title of waiver

createdOn   string   

Date waiver was signed (ISO 8601 format)

expirationDate   string   

Date waiver will expire (ISO 8601 format) Note: This value is always empty if your account does not have the days to expiration setting enabled in the waiver console.

expired   boolean   

If this waiver is older than your account's static expiration date or is past your account setting for days to expiration from signing date

verified   boolean   

If the waiver has been verified

kiosk   boolean   

If the waiver was signed at a kiosk

firstName   string   

First name of the first participant on the waiver

middleName   string   

Middle name of the first participant on the waiver

lastName   string   

Last name of the first participant on the waiver

dob   string   

Date of birth of the first participant on the waiver (ISO 8601 format) Note: The DOB will be 1800-01-01 if the waiver is set up to use a checkbox for age verification.

isMinor   boolean   

Whether the first participant is a minor or not

autoTag   string   

Auto tag on the waiver if there is one, otherwise it will be blank

clientIP   string   

IP Address from which the waiver was submitted

email   string   

The primary email for the waiver

marketingAllowed   boolean   

Whether the user allows marketing to be sent to their email

addressLineOne   string   

The first line of the address

addressLineTwo   string   

The second line of the address

addressCity   string   

The city of the address

addressState   string   

The state of the address

addressZip   string   

The zip code of the address

addressCountry   string   

The country of the address

emergencyContactName   string   

The name of the emergency contact

emergencyContactPhone   string   

The phone number of the emergency contact

insuranceCarrier   string   

The name of the insurance carrier

insurancePolicyNumber   string   

The policy number of the insurance

driversLicenseNumber   string   

The number of the drivers license

driversLicenseState   string   

The state of the drivers license

tags   string[]   

A list of tags for the waiver

flags   object[]   

A list of tags for all participants

displayText   string   

The display text for the flagged question

reason   string   

The reason this answer was flagged

photos   integer   

Number of photos attached to this waiver

eventData   object[]   

The event this waiver is tied to

guid   string   

Unique Id of the event

name   string   

The name of the event

startdate      

date The start date of the event

enddate   string   

The end date of the event

participants   object[]   

A list of participants on the waiver

firstName   string   

The first name of the participant

middleName   string   

The middle name of the participant

lastName   string   

The last name of the participant

dob   string   

Date of birth of the participant (ISO 8601 format) Note: The DOB will be 1800-01-01 if the waiver is set up to use a checkbox for age verification.

isMinor   boolean   

Whether or not this participant is a minor

minorExpired   boolean   

True if this participant is a minor and has passed age of majority and age of majority expiration turned on, false otherwise

gender   string   

Gender of the participant

phone   string   

Phone number of the participant

relationship   string   

If this participant is the guardian on the waiver, this field will be the relationship to the minor

tags   string[]   

A list of tags for the waiver

customParticipantFields   object   

Any custom participant fields on the waiver

{GUID}   object   

The custom participant field, each {GUID} is unique. Note that this is only the last 13 characters of a fields GUID

value   string   

The value of the custom participant field

displayText   string   

The display text of the custom participant field

flags   object[]   

A list of tags for this participant

displayText   string   

The display text for the flagged question

reason   string   

The reason this answer was flagged

pdf      

Base64 Encoded PDF

photos   integer   
customWaiverFields   object   

Any custom waiver fields on the waiver

{GUID}   object   

The custom waiver field, each {GUID} is unique. Note that this is only the last 13 characters of a fields GUID

value   string   

The value of the custom waiver field

displayText   string   

The display text of the custom waiver field

guardian   object   

If there are only minors on the waiver, this field contains the guardian information, otherwise it will be null

firstName   string   

The first name of the guardian

middleName   string   

The middle name of the guardian

lastName   string   

The last name of the guardian

phone   string   

The phone number of the guardian

dob   string   

The dob of the guardian

typedSignatures   object   
participants   string[]   

These are for a single adult participant or all minors.

guardian   string[]   

If the guardian must sign the signature will be here, regardless if the guardian is a participant or not

bodySignatures   string[]   

All signatures from the body in the order they appear.

bodyInitials   string[]   

All initials from the body in the order they appear.

Retrieve files uploaded with a waiver Retrieve files uploaded with a waiver

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/waivers/WAIVER_ID/files" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/waivers/WAIVER_ID/files';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/waivers/WAIVER_ID/files'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/waivers/WAIVER_ID/files"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "files",
    "files": {
        "waiverId": "6jebdfxzvrdkd",
        "templateId": "sprswrvh2keeh",
        "title": "Smartwaiver Demo Waiver",
        "createdOn": "2017-01-24 13:12:29",
        "files": [
            {
                "type": "kiosk",
                "date": "2017-01-01 00:00:00",
                "tag": "IP: 192.168.2.0",
                "fileType": "jpg",
                "fileId": "CwLeDjffgDoGHua",
                "file": "BASE64 ENCODED FILE"
            }
        ]
    }
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Request      

GET v4/waivers/{waiverId}/files

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

waiverId   string   

Unique ID of signed waiver. Example: WAIVER_ID

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (files)

files   object[]   

A list of files for the waiver

name   string   

A string containing the name of the file

fileType   string   

The extension of the file

fileId   string   

A unique identifier for this file

file   string   

Base 64 Encoded file

waiverId   string   

Unique ID of signed waiver

templateId   string   

Unique ID of template for this signed waiver

title   string   

Title of waiver

createdOn   string   

Date waiver was signed (ISO 8601 format)

Retrieve photos for a waiver Retrieve photos for a waiver

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/waivers/WAIVER_ID/photos" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/waivers/WAIVER_ID/photos';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/waivers/WAIVER_ID/photos'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/waivers/WAIVER_ID/photos"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "photos",
    "photos": {
        "waiverId": "6jebdfxzvrdkd",
        "templateId": "sprswrvh2keeh",
        "title": "Smartwaiver Demo Waiver",
        "createdOn": "2017-01-24 13:12:29",
        "photos": [
            {
                "type": "kiosk",
                "date": "2017-01-01 00:00:00",
                "tag": "IP: 192.168.2.0",
                "fileType": "jpg",
                "photoId": "CwLeDjffgDoGHua",
                "photo": "BASE64 ENCODED FILE"
            }
        ]
    }
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Request      

GET v4/waivers/{waiverId}/photos

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

waiverId   string   

Unique ID of signed waiver. Example: WAIVER_ID

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (photos)

photos   object[]   

A list of photos for the waiver

type   string   

Where the photo was captured from Allowed values: kiosk, console

date   string   

The date the photo was taken (in UTC)

tag   string   

A string containing metadata about where/when the photo was captured

fileType   string   

The extension of the file

photoId   string   

A unique identifier for this file

photo   string   

Base 64 Encoded file

waiverId   string   

Unique ID of signed waiver

templateId   string   

Unique ID of template for this signed waiver

title   string   

Title of waiver

createdOn   string   

Date waiver was signed (ISO 8601 format)

Retrieve signatures for a waiver Retrieve signatures for a waiver

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/waivers/WAIVER_ID/signatures" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/waivers/WAIVER_ID/signatures';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/waivers/WAIVER_ID/signatures'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/waivers/WAIVER_ID/signatures"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "signatures",
    "signatures": {
        "waiverId": "6jebdfxzvrdkd",
        "templateId": "sprswrvh2keeh",
        "title": "Smartwaiver Demo Waiver",
        "createdOn": "2017-01-24 13:12:29",
        "signatures": {
            "participants": [
                "BASE64 ENCODED IMAGE STRING"
            ],
            "guardian": [
                "BASE64 ENCODED IMAGE STRING"
            ],
            "bodySignatures": [
                "BASE64 ENCODED IMAGE STRING"
            ],
            "bodyInitials": [
                "BASE64 ENCODED IMAGE STRING"
            ]
        }
    }
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Request      

GET v4/waivers/{waiverId}/signatures

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

waiverId   string   

Unique ID of signed waiver. Example: WAIVER_ID

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (signatures)

signatures   object   

Property containing all types of signatures. All values are arrays of base 64 encoded image strings.

participants   string[]   

These are for a single adult participant or all minors.

guardian   string[]   

If the guardian must sign the signature will be here, regardless if the guardian is a participant or not

bodySignatures   string[]   

All signatures from the body in the order they appear.

bodyInitials   string[]   

All initials from the body in the order they appear.

waiverId   string   

Unique ID of signed waiver

templateId   string   

Unique ID of template for this signed waiver

title   string   

Title of waiver

createdOn   string   

Date waiver was signed (ISO 8601 format)

Webhook Queues

Retrieve queue information Retrieve queue information

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/webhooks/queues" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/webhooks/queues';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/webhooks/queues'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/webhooks/queues"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "api_webhook_all_queue_message_count",
    "api_webhook_all_queue_message_count": {
        "account": {
            "messagesTotal": 2,
            "messagesNotVisible": 0,
            "messagesDelayed": 0
        },
        "template-4fc7d12601941": {
            "messagesTotal": 4,
            "messagesNotVisible": 2,
            "messagesDelayed": 0
        }
    }
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Example response (502, Bad Gateway):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Failed to delete"
}
 

Request      

GET v4/webhooks/queues

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

templateId   string   

Unique ID of waiver template queue to delete the message from Example: TEMPLATE_ID

Query Parameters

delete   string  optional  

Delete the message when it is retrieved Default value: false Allowed values: true, false

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (api_webhook_all_queue_message_count)

api_webhook_all_queue_message_count   object   

Webhook queue count information (Default value (no messages): null)

account   object   

Message information for account level webhook queue (Note: this only exists if your account level webhook queue is enabled)

messagesTotal   string   

Total number of messages in queue

messagesNotVisible   string   

Total number of messages that are not currently visible

messagesDelayed   string   

Total number of messages that have a delay set

template-{TEMPLATE_ID}   object   

For every template ID in your account that has webhooks enabled there will be an object

messagesTotal   string   

Total number of messages in queue

messagesNotVisible   string   

Total number of messages that are not currently visible

messagesDelayed   string   

Total number of messages that have a delay set

Retrieve account message Retrieve account message

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/webhooks/queues/account" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/webhooks/queues/account';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/webhooks/queues/account'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/webhooks/queues/account"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "api_webhook_account_message_get",
    "api_webhook_account_message_get": {
        "messageId": "9d58e8fc-6353-4ceb-b0a3-5412f3d05e28",
        "payload": {
            "unique_id": "",
            "event": "new-waiver"
        }
    }
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (502, Bad Gateway):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Failed to delete"
}
 

Request      

GET v4/webhooks/queues/account

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

delete   string  optional  

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (api_webhook_account_message_get)

api_webhook_account_message_get   object   

Webhook queue count information (Default value (no messages): null)

messageId   string   

Message ID (can be used to delete message)

payload   object   

The payload containing the payload of the message

unique_id   string   

The unique ID of the waiver

event   string   

The event causing this webhook to be fired

Retrieve template message Retrieve template message

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "api_webhook_template_message_get",
    "api_webhook_template_message_get": {
        "messageId": "9d58e8fc-6353-4ceb-b0a3-5412f3d05e28",
        "payload": {
            "unique_id": "",
            "event": "new-waiver"
        }
    }
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (502, Bad Gateway):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Failed to delete"
}
 

Request      

GET v4/webhooks/queues/template/{templateId}

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

templateId   string   

Unique ID of waiver template queue to delete the message from Example: TEMPLATE_ID

Query Parameters

delete   string  optional  

Delete the message when it is retrieved Default value: false Allowed values: true, false

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (api_webhook_template_message_get)

api_webhook_template_message_get   object   

Webhook queue count information (Default value (no messages): null)

messageId   string   

Message ID (can be used to delete message)

payload   object   

The payload containing the payload of the message

unique_id   string   

The unique ID of the waiver

event   string   

The event causing this webhook to be fired

Delete account message Delete a message from the account queue using the message ID returned when the message was retrieved. This is an option for the workflow to retrieve a message, process it, then delete it.

requires authentication

Example request:
curl --request DELETE \
    "https://api.smartwaiver.com/v4/webhooks/queues/account/MESSAGE_ID" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/webhooks/queues/account/MESSAGE_ID';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/webhooks/queues/account/MESSAGE_ID'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/webhooks/queues/account/MESSAGE_ID"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "api_webhook_account_message_delete",
    "api_webhook_account_message_delete": {
        "success": true
    }
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (502, Bad Gateway):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Failed to delete"
}
 

Request      

DELETE v4/webhooks/queues/account/{messageId}

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

messageId   string   

Unique ID of message returned when it was retrieved Example: MESSAGE_ID

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (api_webhook_account_message_delete)

api_webhook_account_message_delete   object   
success   string   

Whether the delete was successful

Delete template message Delete a message from the template queue using the message ID returned when the message was retrieved. This is an option for the workflow to retrieve a message, process it, then delete it.

requires authentication

Example request:
curl --request DELETE \
    "https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID/MESSAGE_ID" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID/MESSAGE_ID';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID/MESSAGE_ID'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID/MESSAGE_ID"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "api_webhook_template_message_delete",
    "api_webhook_template_message_delete": {
        "success": true
    }
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (502, Bad Gateway):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Failed to delete"
}
 

Request      

DELETE v4/webhooks/queues/template/{templateId}/{messageId}

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

templateId   string   

Unique ID of waiver template queue to delete the message from. Example: TEMPLATE_ID

messageId   string   

Unique ID of message returned when it was retrieved. Example: MESSAGE_ID

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (api_webhook_template_message_delete)

api_webhook_template_message_delete   object   
success   string   

Whether the delete was successful

Webhooks

Resend webhook Resend the new-waiver webhook for the given waiver ID. This is for testing purposes only and is heavily rate limited. Note: This request is not included in the normal 100 request per minute limit, but is instead limited to 2 requests per minute by itself.

requires authentication

Example request:
curl --request PUT \
    "https://api.smartwaiver.com/v4/webhooks/resend/0" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/webhooks/resend/0';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/webhooks/resend/0'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/webhooks/resend/0"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "webhooks_resend",
    "webhooks_resend": {
        "success": true
    }
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Request      

PUT v4/webhooks/resend/{waiverId}

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

waiverId   integer   

The Unique Id of the waiver Example: 0

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (webhooks_resend)

webhooks_resend   object   

Webhook information (empty because no webhook is set)

success   boolean   

True/False for whether resend was added to queue

Retrieve current webhook Retrieve current webhook

requires authentication

Example request:
curl --request GET \
    --get "https://api.smartwaiver.com/v4/webhooks/configure" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/webhooks/configure';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/webhooks/configure'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/webhooks/configure"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "webhooks",
    "webhooks": {
        "endpoint": "https://example.com",
        "emailValidationRequired": "both"
    }
}
 

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "webhooks",
    "webhooks": {
        "endpoint": "https://example.com/test1",
        "emailValidationRequired": "yes",
        "endpoint2": "https://example.com/test2",
        "endpoint3": ""
    }
}
 

Request      

GET v4/webhooks/configure

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

webhookNumber   integer  optional  

The webhook number (1,2,3) Default (1) Example: 1

searchWebhook   string  optional  

The url of the webhook to search Example: https://example.com

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (webhooks)

webhooks   object   

Webhook information (empty because no webhook is set)

endpoint   string   

Endpoint URL for webhook

emailValidationRequired   string   

Webhook is sent after email verification (yes), before (no), or before and after (both)

Set webhook

requires authentication

This endpoint configures webhooks. By default this manages the default webhook. If you have no webhooks setup it will create the default webhook.

For more information on webhooks: https://support.smartwaiver.com/hc/en-us/articles/360057049551-What-are-Webhooks

If you have a default webhook setup it will overrite that webhook unless you pass the create:true flag.

If you include the create:true flag the system will ignore the webhookNumber and create a new webhook in the next available place

You can only create up to 3 webhooks. You will get an error if you try to create more.

Example request:
curl --request PUT \
    "https://api.smartwaiver.com/v4/webhooks/configure" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"create\": false,
    \"webhookNumber\": 1,
    \"searchWebhook\": \"https:\\/\\/example.com\",
    \"checkinWebhook\": false,
    \"endpoint\": \"https:\\/\\/smartwaiver.com\\/test\",
    \"emailValidationRequired\": \"yes\"
}"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/webhooks/configure';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'create' => false,
            'webhookNumber' => 1,
            'searchWebhook' => 'https://example.com',
            'checkinWebhook' => false,
            'endpoint' => 'https://smartwaiver.com/test',
            'emailValidationRequired' => 'yes',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/webhooks/configure'
payload = {
    "create": false,
    "webhookNumber": 1,
    "searchWebhook": "https:\/\/example.com",
    "checkinWebhook": false,
    "endpoint": "https:\/\/smartwaiver.com\/test",
    "emailValidationRequired": "yes"
}
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/webhooks/configure"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "create": false,
    "webhookNumber": 1,
    "searchWebhook": "https:\/\/example.com",
    "checkinWebhook": false,
    "endpoint": "https:\/\/smartwaiver.com\/test",
    "emailValidationRequired": "yes"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (201):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "webhooks",
    "webhooks": [
        {
            "endpoint": "https://smartwaiver.com",
            "emailValidationRequired": "both"
        }
    ]
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Example response (402, Data Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "data_error",
    "message": "Message explaining the invalid data entered"
}
 

Example response (404, Not Found):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Route or Resource Id not found"
}
 

Example response (406, Wrong Content Type):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "error",
    "message": "Content-Type must be json"
}
 

Request      

PUT v4/webhooks/configure

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

create   boolean  optional  

Creates a new webhook instead of overwriting the default. Default (false) Example: false

webhookNumber   integer  optional  

The webhook number to update (1,2,3) Default (1) Example: 1

searchWebhook   string  optional  

The url of the webhook to update Example: https://example.com

checkinWebhook   boolean  optional  

Should the webhook send when users checkin. (This applies to all webhooks) Example: false

endpoint   required  optional  

The webhook endpoint to set Allowable Values: Valid URL Example: https://smartwaiver.com/test

emailValidationRequired   string   

Webhook is sent after email verification (yes), before (no), or before and after (both) Allowed values: yes, no, both (This applies to all webhooks) Example: yes

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (webhooks)

webhooks   object   

Webhook information (empty because no webhook is set)

endpoint   string   

Endpoint URL for webhook

emailValidationRequired   string   

Webhook is sent after email verification (yes), before (no), or before and after (both)

Delete Webhook

requires authentication

When you delete webhooks the system will automatically shift the rest of the webhooks so you still have a default. For example:

If you have three webhooks

And you delete endpoint 1 the system will shift the webhooks so that

If you would like to delete a specific webhook please use searchWebhook to specify the URL of webhook you would like to delete

Example request:
curl --request DELETE \
    "https://api.smartwaiver.com/v4/webhooks/configure" \
    --header "Authorization: Bearer [INSERT API KEY]" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://api.smartwaiver.com/v4/webhooks/configure';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer [INSERT API KEY]',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.smartwaiver.com/v4/webhooks/configure'
headers = {
  'Authorization': 'Bearer [INSERT API KEY]',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()
const url = new URL(
    "https://api.smartwaiver.com/v4/webhooks/configure"
);

const headers = {
    "Authorization": "Bearer [INSERT API KEY]",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-20T20:09:53+00:00",
    "type": "webhooks",
    "webhooks": {}
}
 

Example response (400, Parameter Error):


{
    "version": 4,
    "id": "a0256461ca244278b412ab3238f5efd2",
    "ts": "2024-05-17T12:00:33+00:00",
    "type": "parameter_error",
    "message": "Parameter <x> is not supported"
}
 

Request      

DELETE v4/webhooks/configure

Headers

Authorization      

Example: Bearer [INSERT API KEY]

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

webhookNumber   integer  optional  

The webhook number (1,2,3,). If "" you will delete all webhooks. Default (1) Example: 1

searchWebhook   string  optional  

The url of the webhook to delete Example: https://example.com

Response

Response Fields

version   integer   

API version number

id   string   

Uuid for request (32 characters)

ts   string   

Timestamp of request

type   string   

Type of response given (webhooks)

webhooks   object   

Webhook information (empty because no webhook is set)