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
Webhooks
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.
Base URL
https://api.smartwaiver.com
Authenticating requests
This API is authenticated by sending 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 -X GET \
-G "https://api.smartwaiver.com/ping" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/ping',
[
'headers' => [
'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"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
pong
Received response:
Request failed with error:
Version
Api Version Information
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/version" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/version',
[
'headers' => [
'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"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
5.0.0
Received response:
Request failed with error:
Checkins
List checkins for waivers
List checkins for waivers
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/checkins?fromDts=2018-01-01&toDts=2018-01-02" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/checkins',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let params = {
"fromDts": "2018-01-01",
"toDts": "2018-01-02",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let 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": [
{
"date": "2018-01-01 12:32:16",
"waiverId": "56461ca244278b412ab3",
"position": 0,
"firstName": "John",
"lastName": "Doe",
"isMinor": false
}
]
}
}
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:
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
fromDts
string
The requested from date
toDts
string
The requested to date
moreCheckins
boolean
Whether there are more checkins to retrieve from this
checkins.checkins
object[]
The array of checkins
checkins[].date
string
The date this check-in occurred (ISO 8601 format)
checkins[].waiverId
string
The Unique ID for the waiver this participant check-in is from
checkins[].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)
checkins[].firstName
string
The first name of this participant
checkins[].lastName
string
The last name of this participant
checkins[].isMinor
boolean
Whether this participant is a minor or not
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 -X POST \
"https://api.smartwaiver.com/v4/dynamic/templates" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"dynamic":null,"template":null,"data":null}'
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.smartwaiver.com/v4/dynamic/templates',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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 -X POST \
"https://api.smartwaiver.com/v4/dynamic/process/TRANSACTION_ID" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.smartwaiver.com/v4/dynamic/process/TRANSACTION_ID',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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
Keys
List Published Keys
List your published keys
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/keys/published" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/keys/published',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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
keys[].createdAt
string
Date the key was created
keys[].key
string
The key
keys[].label
string
A label for this key
Create Published Key
Create a new published key
requires authentication
Example request:
curl -X POST \
"https://api.smartwaiver.com/v4/keys/published" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"label":"demo"}'
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.smartwaiver.com/v4/keys/published',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
Response
Response Fields
type
string
Type of response given (published_keys)
published_keys
object
Published Keys Object
newKey
object
The newly created key
newKey.createdAt
string
Date the key was created
newKey.key
string
The key
newKey.label
string
A label for this key
keys
object[]
A List of all your active published keys
keys[].createdAt
string
Date the key was created
keys[].key
string
The key
keys[].label
string
A label for this key
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 -X GET \
-G "https://api.smartwaiver.com/v4/search?templateId=6jebdfxzvrdkd" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/search',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let params = {
"templateId": "6jebdfxzvrdkd",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let 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:
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: 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 -X GET \
-G "https://api.smartwaiver.com/v4/search/6jebdfxzvrdkd/results?page=" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/search/6jebdfxzvrdkd/results',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let params = {
"page": "",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let 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:
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
flags[].displayText
string
The display text for the flagged question
flags[].reason
string
The reason this answer was flagged
flags[].photos
integer
Number of photos attached to this waiver
participants
object[]
A list of participants on the waiver
participants[].firstName
string
The first name of the participant
participants[].middleName
string
The middle name of the participant
participants[].lastName
string
The last name of the participant
participants[].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.
participants[].isMinor
boolean
Whether or not this participant is a minor
participants[].minorExpired
boolean
True if this participant is a minor and has passed age of majority and age of majority expiration turned on, false otherwise
participants[].gender
string
Gender of the participant
participants[].phone
string
Phone number of the participant
participants[].relationship
string
If this participant is the guardian on the waiver, this field will be the relationship to the minor
participants[].tags
string[]
A list of tags for the waiver
participants[].customParticipantFields
object[]
Any custom participant fields on the waiver
participants[].customParticipantFields.{GUID}
object
The custom participant field, each {GUID} is unique
participants[].customParticipantFields.{GUID}.value
string
The value of the custom participant field
participants[].customParticipantFields.{GUID}.displayText
string
The display text of the custom participant field
participants[].flags
object[]
A list of tags for this participant
participants[].flags[].displayText
string
The display text for the flagged question
participants[].flags[].reason
string
The reason this answer was flagged
participants[].pdf
Base64 Encoded PDF
photos
integer
customWaiverFields
object
Any custom waiver fields on the waiver
customWaiverFields.{GUID}
object
The custom waiver field, each {GUID} is unique
customWaiverFields.{GUID}.value
string
The value of the custom waiver field
customWaiverFields.{GUID}.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
guardian.firstName
string
The first name of the guardian
guardian.middleName
string
The middle name of the guardian
guardian.lastName
string
The last name of the guardian
guardian.phone
string
The phone number of the guardian
guardian.dob
string
The dob of the guardian
guardian.relationship
string
The relationship of the guardian to the minors
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 -X POST \
"https://api.smartwaiver.com/v4/sms" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"templateId":"TEMPLATE_ID","number":0}'
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.smartwaiver.com/v4/sms',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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
template.uuid
string
Unique Id of the waiver sent
template.title
string
Title of waiver sent
status
integer
Status code of SMS sending protocol (1: Success)
date
string
Date the SMS message was sent.
Templates
List waiver templates
List waiver templates
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/templates" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/templates',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:\/\/www.smartwaiver.com\/w\/sprswrvh2keeh\/web\/",
"kioskUrl": "https:\/\/www.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"
}
}
]
}
Received response:
Request failed with error:
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
webhook.endpoint
string
Endpoint URL for webhook
webhook.emailValidationRequired
string
Webhook is sent after email verification (yes), before (no)
Retrieve a waiver template
Retrieve a waiver template
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/templates/laboriosam" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/templates/laboriosam',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.smartwaiver.com/v4/templates/laboriosam'
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/laboriosam"
);
let 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:\/\/www.smartwaiver.com\/w\/sprswrvh2keeh\/web\/",
"kioskUrl": "https:\/\/www.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 (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:
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
webhook.endpoint
string
Endpoint URL for webhook
webhook.emailValidationRequired
string
Webhook is sent after email verification (yes), before (no)
Prefill a waiver template
Prefill a waiver template
requires authentication
Example request:
curl -X POST \
"https://api.smartwaiver.com/v4/templates/9yskfhh4d9xkirqwgkux2b/prefill" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"expiration":30000,"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();
$response = $client->post(
'https://api.smartwaiver.com/v4/templates/9yskfhh4d9xkirqwgkux2b/prefill',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'Accept' => 'application/json',
],
'json' => [
'expiration' => 30000,
'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,
"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"
);
let headers = {
"Authorization": "Bearer [INSERT API KEY]",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"expiration": 30000,
"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:
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 -X GET \
-G "https://api.smartwaiver.com/v4/info" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/info',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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": "9b4ffc5473e944e2ab989d3943cfe6ae",
"ts": "2024-10-04T15:01:13+00:00",
"type": "info",
"info": {
"username": "Example User",
"email": "example@smartwaiver.com",
"signupDate": "2024-05-16 13:59:45",
"ipAddress": "127.0.0.1"
}
}
Received response:
Request failed with error:
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 infomration
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 -X GET \
-G "https://api.smartwaiver.com/v4/settings" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/settings',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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": "d67156d11f8d4a71a48419c297dac7f6",
"ts": "2024-10-04T15:01:13+00:00",
"type": "settings",
"settings": {
"console": {
"staticExpiration": "never",
"rollingExpiration": "never",
"rollingExpirationTime": "signed"
}
}
}
Received response:
Request failed with error:
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 -X GET \
-G "https://api.smartwaiver.com/v4/me" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/me',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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": "7c37fcde2dbc4744aba4a9ce087ee14f",
"ts": "2024-10-04T15:01:13+00:00",
"type": "me",
"me": {
"label": "Example Api Key"
}
}
Received response:
Request failed with error:
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 -X GET \
-G "https://api.smartwaiver.com/v4/waivers?limit=5" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/waivers',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'Accept' => 'application/json',
],
'query' => [
'limit'=> '5',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.smartwaiver.com/v4/waivers'
params = {
'limit': '5',
}
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"
);
let params = {
"limit": "5",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let 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"
}
]
}
]
}
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:
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
flags[].displayText
string
The display text for the flagged question
flags[].reason
string
The reason this answer was flagged
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 -X GET \
-G "https://api.smartwaiver.com/v4/waivers/WAIVER_ID?pdf=false" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/waivers/WAIVER_ID',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let params = {
"pdf": "false",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let 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"
}
]
}
],
"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:
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
flags[].displayText
string
The display text for the flagged question
flags[].reason
string
The reason this answer was flagged
flags[].photos
integer
Number of photos attached to this waiver
participants
object[]
A list of participants on the waiver
participants[].firstName
string
The first name of the participant
participants[].middleName
string
The middle name of the participant
participants[].lastName
string
The last name of the participant
participants[].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.
participants[].isMinor
boolean
Whether or not this participant is a minor
participants[].minorExpired
boolean
True if this participant is a minor and has passed age of majority and age of majority expiration turned on, false otherwise
participants[].gender
string
Gender of the participant
participants[].phone
string
Phone number of the participant
participants[].relationship
string
If this participant is the guardian on the waiver, this field will be the relationship to the minor
participants[].tags
string[]
A list of tags for the waiver
participants[].customParticipantFields
object
Any custom participant fields on the waiver
participants[].customParticipantFields.{GUID}
object
The custom participant field, each {GUID} is unique. Note that this is only the last 13 characters of a fields GUID
participants[].customParticipantFields.{GUID}.value
string
The value of the custom participant field
participants[].customParticipantFields.{GUID}.displayText
string
The display text of the custom participant field
participants[].flags
object[]
A list of tags for this participant
participants[].flags[].displayText
string
The display text for the flagged question
participants[].flags[].reason
string
The reason this answer was flagged
participants[].pdf
Base64 Encoded PDF
photos
integer
customWaiverFields
object
Any custom waiver fields on the waiver
customWaiverFields.{GUID}
object
The custom waiver field, each {GUID} is unique. Note that this is only the last 13 characters of a fields GUID
customWaiverFields.{GUID}.value
string
The value of the custom waiver field
customWaiverFields.{GUID}.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
guardian.firstName
string
The first name of the guardian
guardian.middleName
string
The middle name of the guardian
guardian.lastName
string
The last name of the guardian
guardian.phone
string
The phone number of the guardian
guardian.dob
string
The dob of the guardian
typedSignatures.participants
string[]
These are for a single adult participant or all minors.
typedSignatures.guardian
string[]
If the guardian must sign the signature will be here, regardless if the guardian is a participant or not
typedSignatures.bodySignatures
string[]
All signatures from the body in the order they appear.
typedSignatures.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 -X GET \
-G "https://api.smartwaiver.com/v4/waivers/WAIVER_ID/files" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/waivers/WAIVER_ID/files',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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
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)
files[].name
string
A string containing the name of the file
files[].fileType
string
The extension of the file
files[].fileId
string
A unique identifier for this file
files[].file
string
Base 64 Encoded file
Retrieve photos for a waiver
Retrieve photos for a waiver
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/waivers/WAIVER_ID/photos" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/waivers/WAIVER_ID/photos',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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
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)
photos[].type
string
Where the photo was captured from Allowed values: kiosk, console
photos[].date
string
The date the photo was taken (in UTC)
photos[].tag
string
A string containing metadata about where/when the photo was captured
photos[].fileType
string
The extension of the file
photos[].photoId
string
A unique identifier for this file
photos[].photo
string
Base 64 Encoded file
Retrieve signatures for a waiver
Retrieve signatures for a waiver
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/waivers/WAIVER_ID/signatures" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/waivers/WAIVER_ID/signatures',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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.
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)
signatures.participants
string[]
These are for a single adult participant or all minors.
signatures.guardian
string[]
If the guardian must sign the signature will be here, regardless if the guardian is a participant or not
signatures.bodySignatures
string[]
All signatures from the body in the order they appear.
signatures.bodyInitials
string[]
All initials from the body in the order they appear.
Webhook Queues
Retrieve queue information
Retrieve queue information
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/webhooks/queues" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/webhooks/queues',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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)
account.messagesTotal
string
Total number of messages in queue
account.messagesNotVisible
string
Total number of messages that are not currently visible
account.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
template-{TEMPLATE_ID}.messagesTotal
string
Total number of messages in queue
template-{TEMPLATE_ID}.messagesNotVisible
string
Total number of messages that are not currently visible
template-{TEMPLATE_ID}.messagesDelayed
string
Total number of messages that have a delay set
Retrieve account message
Retrieve account message
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/webhooks/queues/account" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/webhooks/queues/account',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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
payload.unique_id
string
The unique ID of the waiver
payload.event
string
The event causing this webhook to be fired
Retrieve template message
Retrieve template message
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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
payload.unique_id
string
The unique ID of the waiver
payload.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 -X DELETE \
"https://api.smartwaiver.com/v4/webhooks/queues/account/MESSAGE_ID" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://api.smartwaiver.com/v4/webhooks/queues/account/MESSAGE_ID',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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 -X DELETE \
"https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID/MESSAGE_ID" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://api.smartwaiver.com/v4/webhooks/queues/template/TEMPLATE_ID/MESSAGE_ID',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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 -X PUT \
"https://api.smartwaiver.com/v4/webhooks/resend/0" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://api.smartwaiver.com/v4/webhooks/resend/0',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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 -X GET \
-G "https://api.smartwaiver.com/v4/webhooks/configure" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://api.smartwaiver.com/v4/webhooks/configure',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:\/\/smartwaiver.com",
"emailValidationRequired": "both"
}
]
}
Received response:
Request failed with error:
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
Set webhook
requires authentication
Example request:
curl -X PUT \
"https://api.smartwaiver.com/v4/webhooks/configure" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"endpoint":"https:\\\\smartwaiver.com\\test","emailValidationRequired":"yes"}'
$client = new \GuzzleHttp\Client();
$response = $client->put(
'https://api.smartwaiver.com/v4/webhooks/configure',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'Accept' => 'application/json',
],
'json' => [
'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 = {
"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"
);
let headers = {
"Authorization": "Bearer [INSERT API KEY]",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"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:
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
Delete Webhook
requires authentication
Example request:
curl -X DELETE \
"https://api.smartwaiver.com/v4/webhooks/configure" \
-H "Authorization: Bearer [INSERT API KEY]" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->delete(
'https://api.smartwaiver.com/v4/webhooks/configure',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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": {}
}
Received response:
Request failed with error:
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)