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.comAuthenticating 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 -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": [
{
"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:
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[].checkinId integer
The Id of the checkin
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
checkins[].dateSigned
The date this waiver was signed (ISO 8601 format)
checkins[].templateId integer
The Unique ID for the waiver template this check-in is from
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: 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 -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"
}
}
]
}
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"
},
"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:
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)
customFields object[]
A list of custom fields
customFields[].guid string
Unique Id of field
customFields[].fieldType string
The type of field that will show on the waiver. (Values: richtext,textbox,datebox,file,optionlist,checkboxes,radiobuttons)
customFields[].string
The type of data that will be filled on the waiver. (Values: string,date,file,array,enum,none)
customFields[].label string
The name of the field on the waiver.
participantCustomFields[].guid string
Unique Id of field
participantCustomFields[].fieldType string
The type of field that will show on the waiver. (Values: richtext,textbox,datebox,file,optionlist,checkboxes,radiobuttons)
participantCustomFields[].type string
The type of data that will be filled on the waiver. (Values: string,date,file,array,enum,none)
participantCustomFields[].label string
The name of the field on the waiver.
Retrieve a waiver template
Retrieve a waiver template
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/templates/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/templates/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/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"
);
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 (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"
},
"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:
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)
customFields object[]
A list of custom fields
customFields[].guid string
Unique Id of field
customFields[].fieldType string
The type of field that will show on the waiver. (Values: richtext,textbox,datebox,file,optionlist,checkboxes,radiobuttons)
customFields[].string
The type of data that will be filled on the waiver. (Values: string,date,file,array,enum,none)
customFields[].label string
The name of the field on the waiver.
participantCustomFields[].guid string
Unique Id of field
participantCustomFields[].fieldType string
The type of field that will show on the waiver. (Values: richtext,textbox,datebox,file,optionlist,checkboxes,radiobuttons)
participantCustomFields[].type string
The type of data that will be filled on the waiver. (Values: string,date,file,array,enum,none)
participantCustomFields[].label string
The name of the field on the waiver.
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,"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();
$response = $client->post(
'https://api.smartwaiver.com/v4/templates/9yskfhh4d9xkirqwgkux2b/prefill',
[
'headers' => [
'Authorization' => 'Bearer [INSERT API KEY]',
'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"
);
let 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:
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 (401):
{
"version": 4,
"id": "237c5e1617644afb8ec31b3531f6fad3",
"ts": "2025-02-27T19:25:14+00:00",
"type": "auth_error",
"message": "Unauthorized"
}
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 (401):
{
"version": 4,
"id": "e6a958615e76411c90fc8bfe3500c815",
"ts": "2025-02-27T19:25:14+00:00",
"type": "auth_error",
"message": "Unauthorized"
}
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 (401):
{
"version": 4,
"id": "ec7899277b6d49f2bf049dede72910c0",
"ts": "2025-02-27T19:25:14+00:00",
"type": "auth_error",
"message": "Unauthorized"
}
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&offset=7" \
-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',
'offset'=> '7',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://api.smartwaiver.com/v4/waivers'
params = {
'limit': '5',
'offset': '7',
}
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",
"offset": "7",
};
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"
}
],
"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:
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
eventData object[]
The event this waiver is tied to
eventData[].guid string
Unique Id of the event
eventData[].name string
The name of the event
eventData[].startdate
date The start date of the event
eventData[].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 -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"
}
]
}
],
"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:
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
eventData object[]
The event this waiver is tied to
eventData[].guid string
Unique Id of the event
eventData[].name string
The name of the event
eventData[].startdate
date The start date of the event
eventData[].enddate string
The end date of the event
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 a signed waiver
Retrieve a signed waiver
requires authentication
Example request:
curl -X GET \
-G "https://api.smartwaiver.com/v4/waivers/WAIVER_ID/tempurl" \
-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/tempurl',
[
'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/tempurl'
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/tempurl"
);
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":
{
"temp_url": "https://exampleurl.com",
"waiverId": "6jebdfxzvrdkd",
"templateId": "sprswrvh2keeh",
"title": "Smartwaiver Demo Waiver",
"createdOn": "2017-01-24 13:12:29",
}
}
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:
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:\/\/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:
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 -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 '{"create":false,"webhookNumber":1,"searchWebhook":"https:\/\/example.com","checkinWebhook":false,"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' => [
'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"
);
let 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:
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 -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": {}
}
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 (webhooks)
webhooks object
Webhook information (empty because no webhook is set)