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):
pongReceived 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.0Received 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)
