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
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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
- Smartwaiver JS 1.0.0 minified
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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
Request a search for signed waivers
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
]
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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",
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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": ""
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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
- endpoint 1: https://example.com/test1
- endpoint 2: https://example.com/test2
- endpoint 3: https://example.com/test3
And you delete endpoint 1 the system will shift the webhooks so that
- endpoint 1: https://example.com/test2
- endpoint 2: https://example.com/test3
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"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
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)