Quick Start Guide

Getting straight to it with this quick start guide.

This section will guide you through the initial steps to integrate and use our services. Whether you are new to APIs or an experienced developer, we've designed this process to be straightforward.

Step 1: Register for API Access

Before you can start using the API, you'll need to register and obtain your unique API credentials. These credentials are essential for authenticating and sending your API requests.

1) Sign Up: Visit our sign up page and create an account for your company. This will not be instant as we need to set up your company before we can give you access to our services.

2) API Permission: Once your account is set up, please contact us at support@tillertech.com to request API permission on your user credentials.

Step 2: Install Required Tools

To make API requests, you'll need a tool that can send HTTP requests. You can use tools like Postman , cURL, or write your code in a language that supports HTTP requests, such as Python, JavaScript, etc.

We can provide you with a Postman collection if required. Please contact support@tillertech.com.

Step 3: Authenticate Your API Request

All API requests to Verify by Tiller require authentication. An access token can be retrieved through the Authentication method. Please see below some examples code.

URL: "https://api.tiller-verify.com/api/v1/ext/authentications/token"

Code example:

import requests

def get_auth_token(username, password):
    url = "https://api.tiller-verify.com/api/v1/ext/authentications/token"
    payload = {
        "username": username,
        "password": password,
        "grant_type": "password"
    headers = {
        "Content-Type": "application/x-www-form-urlencoded"
    response = requests.post(url, data=payload, headers=headers)
    if response.status_code == 200:
        return response.json().get("access_token")
        print(f"Error: {response.status_code}, Message: {response.text}")
        return None

# Replace with your username and password
token = get_auth_token("your_username", "your_password")

For "grant_type" we only support either "client_credentials" or "password". This will usually be "password".

Authentication will provide a bearer token to include in the header of your subsequent API requests. Please ensure this token is passed into the Authorization header on subsequent requests.

Step 4: Making Your First API Calls

Once you're authenticated, you can start making API calls. Here are some initial requests to get you started (subscribe, references and application).

- Post Subscription:

The subscribe endpoint provides a URL to send the customer verification results to your system via a Webhook.

Example code:

import requests

def subscribe_to_webhook(token, callback_url):
    url = "https://api.tiller-verify.com/api/v1/ext/webhooks/subscribe"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    payload = {
        "callback_url": callback_url
    response = requests.post(url, headers=headers, json=payload)
    if response.status_code == 200:
        return response.json()
        print(f"Error: {response.status_code}, Message: {response.text}")
        return None

# Example usage
token = "your_auth_token"  # Replace with your actual token
callback_url = "https://your.callback.url" # Replace with your URL
subscription = subscribe_to_webhook(token, callback_url)

You can specify a dynamic URL, such as an application ID. For example:


This allows for greater flexibility and specificity in handling webhook notifications.

- Get References:

This endpoint provide the ID references to commonly needed items such as your mandate type IDs and status IDs.

import requests

def get_references(token):
    url = "https://api.tiller-verify.com/api/v1/ext/references"
    headers = {"Authorization": f"Bearer {token}"}
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        return response.json()
        print(f"Error: {response.status_code}, Message: {response.text}")
        return None

# Example usage
token = "your_auth_token"  # Replace with your actual token
references = get_references(token)

It is useful to organise the references into categories.

import json
from collections import defaultdict

def organise_by_category(data):
    categories = defaultdict(list)
    for item in data:
        category = item['category']
    # Optionally, sort each category by name or reference_id
    for category in categories:
        categories[category].sort(key=lambda x: (x['reference_id'] is None, x['reference_id']))

    return categories

# JSON payload
data = get_references(token)

# Organise data
organised_data = organise_by_category(data)

# To print the organized data
for category, items in organised_data.items():
    print(f"Category: {category}")
    for item in items:
        print(f"  {item}")

# Optionally, convert it back to JSON
json_output = json.dumps(organized_data, indent=4)

It is important that you retrieve your mandate type ID(s) to be able to start creating applications. These mandate types will determine the checks made against the individual. You should have at least one mandate type available upon set-up.

- Create Application

You can create an application for one or more individuals. This will send each individual an email inviting them to download the Verify by Tiller app and complete their checks. For more information please see the Applications section.

import requests

def create_application(token, application_data):
    url = "https://api.tiller-verify.com/api/v1/ext/applications"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    response = requests.post(url, headers=headers, json=application_data)
    if response.status_code == 200:
        return response.json()
        print(f"Error: {response.status_code}, Message: {response.text}")
        return None

# Example usage
token = "your_auth_token"  # Replace with your actual token
application_data = {
        "name": "YOUR_APPLICATION_NAME", # A meaningful application name for the customer
        "reference": "MANDATE_REFERENCE", # A unique mandate referece
        "mandate_type": 1, # Update from references list
        "individuals": [
                "email": "CUSTOMER_EMAIL",
                "title": "Mr",
                "first_name": "FIRST_NAME",
                "middle_name": "", #Optional
                "last_name": "LAST_NAME",
                "date_of_birth": "1980-12-31", #Optional
                "gender": "male",
                "reference": "REFERENCE001" # Your unique reference
            # Additional individuals can be added to this list.
new_application = create_application(token, application_data)

Once an individual has completed their checks on the Verify by Tiller mobile app, the results will be sent to the URL provided through the subscription endpoint. You can also retrieve the information directly using the Applications endpoint.

Further information about all the endpoint can be found in the API Reference section.

Step 5: Your Results

Each time an individual completes their checks within the Verify by Tiller app, you will receive a response to the URL you have posted to the subscription endpoint. Each webhook will contain the mandate/application details and all the details about the individuals.

When all individuals have completed their checks, the mandate (application) will move from an 'in progress' 🔵 status to either a 'in review' 🟡 or 'complete' 🟢 status.

General structure:

  • ID and Reference: Unique identifiers for the application or the mandate.

  • Mandate Type: Describes the type of application and what checks are included.

  • Status: Overall status of the application, which is 'in progress' >> 'in review'/'complete'.

Individual details:

  • Name, Date of Birth, Email, Gender: Basic personal information.

  • Terms Accepted: Indicates whether the terms and conditions were accepted.

  • Completed Actions: Lists completed steps in the mobile app to complete their check, like accepting terms and conditions, adding personal details, etc.

  • Checks: Each check completed (e.g. address_verification_check) will have a set of result data, including:

    • Title - The type of check made

    • Status - Indicates the result of the check type, such as "pending", "review", or "accepted".

    • Check field results - Any underlying verifications made to determine the overall check status.

    • Images - Any associated images that are related to the check. This can include the ID document image for the Identity and Liveliness Checks.

Handling Errors

Each API request will return a response. A successful request will typically return a 200 OK status code along with any requested data. Errors or issues with your request will return different status codes (e.g., 400 Bad Request, 401 Unauthorized) and an error message explaining what went wrong.

Error handling for all API methods must adhere to the RFC7807 standard, ensuring standardized and informative error responses for clients. Please see https://www.rfc-editor.org/rfc/rfc7807. Please see more information within the Error Handling section.

Need Help?

If you encounter any issues or have questions, our support team is here to help. Please contact us at support@tillertech.com

Last updated