NAV Navbar
Python NodeJS GoLang Java GraphQL REST

Introduction

The Vouched Verification SDK is a set of tools that you can use to submit, access and manage verification jobs. You can access Vouched Verification with our client libraries in a wide variety of popular programming languages.

Recognized IDs

Browser Client

In order to use Vouched SDK in a browser, your page must be served using HTTPS. Without it, browser would not allow camera access.

Getting Started

Initialize the Vouched client


<head>
....
<script src="https://static.vouched.id/widget/vouched-2.0.0.js"></script>
<script type='text/javascript'>

(function() {
  var vouched = Vouched({
    appId: "<PUBLIC_KEY>",
    crossDevice: true,
    crossDeviceQRCode: true,
    onSubmit: ({ stage, attempts, job }) => {
          console.log('submit', { stage, attempts, job });
    },
    onCamera: ({ hasCamera, hasPermission }) => {
      console.log('onCamera', { hasCamera, hasPermission });
    },
    onInit: ({token, job}) => {
      // if crossDevice is true, a web token is created during initialization for
      // session handoffs to other devices
      console.log('initialization');
    },
    onDone: (job)=> {
      // token used to query jobs
      console.log("Scanning complete", { token: job.token });
      // query the job with the token
      fetch(`/yourapi/idv?job_token=${job.token}`);
      // Simulate a mouse click:
      window.location.href = "https://vouched.id/";
      // Simulate an HTTP redirect:
      window.location.replace("https://vouched.id/");
    },
    stepTitles: {
     FrontId: 'Upload ID',
     Face: 'Upload Headshot',
     Done: 'Finished'
    },
    content: {
     cameraButton: 'Take a Photo',
     crossDeviceTitle: 'Identity Verification',
     crossDeviceInstructions: 'We need to verify your identity. This requires government-issued photo ID as well as selfie. Please follow the instructions below to continue the verification process on your phone',
     crossDeviceSuccess: 'Verification is complete, continue on your desktop',
     review: 'Verification complete',
     upperSuccess: 'Your photo uploads are complete!',
     success: 'Please close this window to return your online visit.',
     lowerSuccess: 'Thank you.',
     upperIdInstructions:
              'Before you start please have an approved Government ID (e.g. Passport / Driving License) in your hand.',
     lowerIdInstructions: 'Please take a photo of your ID now',
     upperFaceInstructions: 'Time to take a photo.',
     lowerFaceInstructions: 'Please take a clear picture of your face, and make sure it does not include:',
     upperFailure: 'Try Again',
     verifyFail: 'Sorry for the inconvenience',
     lowerFailure:
       "The photo you shared can't be used for validation. Please take another picture, making sure the image of your face or your ID is clear."
   },
    theme: {
     name: 'verbose',
     font: 'Open Sans',
     fontColor: '#413d3a',
     iconLabelColor: '#413d3a',
     bgColor: '#FFF',
     baseColor: '#62ACDE',
     navigationDisabledBackground: '#b3def1',
     navigationDisabledText: '#a3d7ee',
     logo: {
      src: 'https://static.vouched.id/customers/blocktriangle/logo.jpg',
      style: {
        maxWidth: 150,
        marginBottom: 30
      }
    },
     navigationActiveText: '#413d3a',
     iconColor: '#f6f5f3',
     iconBackground: '#62ACDE' }
  });
  vouched.mount("#vouched-element");

})();
</script>

</head>
<body>
    <div id='vouched-element' style="height: 100%"/>
</body>

Arguments

Parameter Type Required Description
appId String * public key
type String   defaults to idv, idv - id with selfie verification, id - id only
survey Bool Show an optional survey at the end
token String Time limited session token used to restart a session
crossDevice Bool Provides the ability to maintain the same session across multiple devices using the token retrieved from onInit.
crossDeviceQRCode Bool If the user is on a desktop computer, a scannable QR Code enables the verification to continue on their mobile phone. Once completed, control is given back to the desktop.
showUploadFirst Bool defaults to true, show the upload first instead of the camera
face String defaults to camera, specify how user can submit their selfie. Valid values are both,camera,upload
id String defaults to both, specify how user can submit their id. Valid values are both,camera,upload
idLiveness String Only applicable for ID Card liveness check. Defaults to null/off. Add 'distance' to activate liveness check. idLiveness checks for user movements with ID Card
liveness String Only applicable for selfie/headshot liveness check. Defaults to mouth, specify how Vouched should check for face liveness. Valid values are mouth,orientation, distance, and straight. The "mouth" liveness, checks for mouth movements, "orientation" checks the facial orientation, "distance" checks for user movements, and "straight" checks if the user is looking at the camera.
properties [JobProperty] List of JobProperty - Arbitrary properties to add to the job, i.e. application ids
content Object
Content changes
Property Type Required Description
success String successful submission
review String the user disputes the results
crossDeviceSuccess String
crossDeviceInstructions String
crossDeviceTitle String
crossDeviceShowOff Bool Allows Handoff to continue on Desktop
upperIdInstructions String Upper Instructions on ID Screen
lowerIdInstructions String Lower Instructions on ID Screen
upperFaceInstructions String Upper Instructions on Face Screen
lowerFaceInstructions String Lower Instructions on Face Screen
cameraButton String String text for camera button
upperSuccess String Success message at the top
lowerSuccess String Success message at the bottom
upperFailure String Failure message at the top
lowerFailure String Failure message at the bottom
verifyPass String verification passed
verifyFail String verification failed
qrHandoffInstructions String Optional bottom Handoff Instructions
startCompanyInstructions String Optional Start Screen Instruction
carouselCompanyText Array of Strings Optional Carousel Instructions
carouselCompanyImg Array of Strings Optional Carousel Image URLs
verification Object
optional verification properties
Property Type Required Description
showResults Bool show the review results page. defaults to false if verification fields are included
firstName String
lastName String
birthDate String
email String Used for crosschecking identity
phone String Used for crosschecking identity
callbackURL String Upon the job’s completion, Vouched will POST the job results to the webhook. If the callbackURL is not given, Vouch will process the job in realtime. All callbackURL requests contain X-Signature in request headers. The X-Signature was created using HMAC-SHA1 using your private key as the key. To validate webhook response, perform the same signature procedure and compare if your generated signature and the sent signature match. Webhook contains the job here.
stepTitles Object
Property Type Required Description
FrontId String * Front ID breadcrumb text
Face String * Face breadcrumb text
Done String * "Done verificating" breadcrumb text
theme Object
Property Type Required Description
name String 'classic' | 'verbose' | 'avant'
iconLabelColor String Icon Label color
bgColor String Background color
logo String Logo
navigationActiveText String
iconColor String Icon color
iconBackground String Icon Background
baseColor String Main color
fontColor String Font color
font String Font Family
navigationDisabledBackground String Background of disabled breadcrumbs
navigationDisabledText String Text color on disabled breadcrumbs
includeBarcode Bool Enable ID barcode capture and processing. Currently, only enabled for verbose and classic themes.
onSubmit Function Javascript callback when a user submits a photo
onCamera Function Javascript callback when camera initialization is complete
onInit Function Javascript callback during initialization of the webapp
onDone Function Javascript callback when a verification is complete

Initialize the Vouched client for sending Vouched Now invites


<head>
....
<script src="https://static.vouched.id/widget/vouched-2.0.0.js"></script>
<script type='text/javascript'>

(function() {
  var vouched = Vouched({
    appId: "<PUBLIC_KEY>",
    type: "invite"
  });
  vouched.mount("#vouched-element");
})();
</script>

</head>
<body>
    <div id='vouched-element' style="height: 500px; width:800px;"/>
</body>

Arguments

Parameter Type Required Description
appId String * public key
type String * invite

Unmount the Client

    vouched.unmount('#vouched-element')

Layout considerations

When integrating Vouched component into your site design, consider that Vouched component occupies 100% height of the parent container (it has CSS rule height: 100% applied). That means that parent container should be given height. Height should be given, for example, by setting height value (height: 100%) on the container or by using flex constraints (flex-grow: 1 in vertical flex-box).

SDK Client API

Getting Started


- Obtain the FURY_AUTH token
- Obtain the private key
- Obtain the Client version, currently (0.0.6)
- Obtain the version number and FURY_AUTH token.

Update `requirements.txt` for:

--index-url https://${FURY_AUTH}@pypi.fury.io/woollylabs/
--extra-index-url https://pypi.org/simple/ private-package=0.0.1

vouched-client==<CLIENT_VERSION>

Install with pip:

FURY_AUTH=<FURY_AUTH_TOKEN> pip install --no-cache-dir -r ./requirements.txt

Some OSes does not allow the reading of environment variables in `requirements.txt`.
In this case, replace `${FURY_AUTH}` in `requirements.txt` with the actual token.

- Obtain the FURY_AUTH token
- Obtain the private key

lipvips is used to compress images. Installation instructions
for libvips found at https://github.com/lovell/sharp-libvips.

Obtain the Client version, currently (0.0.1-beta.15)

Update `package.json` for:

{
  "dependencies": {
    "@vouched/client": "<CLIENT_VERSION>"
  }
}

Append the following to the project's `.npmrc`,
for details refer to https://docs.npmjs.com/files/npmrc:

@vouched:registry=https://npm.fury.io/woollylabs/
//npm.fury.io/woollylabs/:_authToken=${FURY_AUTH}

Run:
FURY_AUTH=<FURY_AUTH_TOKEN> npm install

Some OSes does not allow the reading of environment variables in `.npmrc`.
In this case, replace `${FURY_AUTH}` in `.npmrc` with the actual token.


go get github.com/vouched/vouched-golang

export PRIVATE_KEY=<your private Vouched key>

Include Maven dependency:
      <groupId>com.vouched.sdk</groupId>
      <artifactId>vouched-java</artifactId>

The header parameter `X-Api-Key` is required for all
GraphQL requests.

headers['X-Api-Key']=<private_key>
headers['Content-Type']='application/json'

The graphql endpoint is https://verify.vouched.id/graphql


The header parameter `X-Api-Key` is required for all
REST requests.

headers['X-Api-Key']=<private_key>
headers['Content-Type']='application/json'

The rest endpoint is https://verify.vouched.id/api

Create the Vouched client

const Client = require('@vouched/client').default;

const client = Client(private_key);
from vouched.api import Client

client = Client(private_key)

import (
  client "github.com/vouched/vouched-golang"
)
c := client.New(private_key)

import com.vouched.sdk.Client;
import com.vouched.sdk.Config;

Client client = new Client(Config.get().getPrivateKey());

Arguments

Parameter Type Required Description
key String * Private Key

Returns

Parameter Type Required Description
client Client * Vouched client

Errors:

Update client key

secret_client_key = <SECRET>
data = client.update_secret_client_key(secret_client_key=secret_client_key)


params := map[string]interface{}{
  "secretClientKey": "SECRET_KEY"}
if resp, err := c.UpdateSecretClientKey(params); err != nil {
  fmt.Printf("Error: %+v\n", err)
} else {
  fmt.Printf(" %+v\n", resp)
}

client.updateSecretClientKey("newKey");
const secretClientKey = <SECRET>
const data = client.updateSecretClientKey(secretClientKey);

  mutation updateSecretClientKey($secretClientKey: String) {
    updateSecretClientKey(secretClientKey: $secretClientKey) {
      secretClientKey
    }
  }


  POST api/account/secret-client-key

  payload:
  {
    "secretClientKey": "your secret client key"
  }

Arguments

Parameter Type Required Description
secretClientKey String The secret key to be included in the header X-Api-Key of the webhook call.

Returns

Parameter Type Required Description
secretClientKey String The updated secretClientKey

Errors:

Submit a verification job


var idPhotoBase64 = client.ReadImage("./tests/oh-license.jpeg")
var userPhotoBase64 = client.ReadImage("./tests/oh-selfie.jpeg")
params := map[string]interface{}{
  "userPhoto":   userPhotoBase64,
  "idPhoto":     idPhotoBase64,
  "callbackURL": "https://www.google.com",
  "type":        "id-verification",
  "firstName":   "Janice",
  "dob":         "06/22/1990", "lastName": "Way"}
if resp, err := c.Submit(params); err != nil {
  fmt.Printf("Error: %+v\n", err)
} else {
  fmt.Printf("Job: %+v\n", resp)
}


from vouched.utils import image_to_base64

user_photo_base64 = image_to_base64('/opt/app/tests/data/selfie.png')
id_photo_base64 = image_to_base64('/opt/app/tests/data/id.jpg')
job = client.submit(
    user_photo=user_photo_base64,
    id_photo=id_photo_base64,
    properties=[
      dict(name='internal_id',value='iid'),
      dict(name='internal_username',value='bob'),
    ],
    type='id-verification',
    first_name='Janice',
    dob='06/22/1990',
    last_name='Way'
)


const utils = require('@vouched/client').utils;

const userPhotoBase64 = await utils.imageToBase64(
    '/opt/app/tests/data/selfie.png'
);
const idPhotoBase64 = await utils.imageToBase64(
    '/opt/app/tests/data/id.jpg'
);
const job = await client.submit({
    userPhoto:userPhotoBase64,
    idPhoto:idPhotoBase64,
    type:'id-verification',
    firstName:'Janice',
    properties:[
      {name:'internal_id',value:'iid'},
      {name:'internal_username',value:'bob'}
    ],
    dob:'06/22/1990',
    lastName:'Way'
})


# X-Signature Algorithm

return crypto
.createHmac('sha1', private_key)
.update(Buffer.from(data, 'utf-8'))
.digest('base64');

String img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA" +
        "AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO" +
        "9TXL0Y4OHwAAAABJRU5ErkJggg==";

JobRequest jobRequest = new JobRequest();
jobRequest.parameters.userPhoto = img;
jobRequest.parameters.idPhoto = img;
jobRequest.parameters.firstName = "Thor Thunder";
jobRequest.parameters.lastName = "odinson";
jobRequest.parameters.dob = "06/22/1970";

Job job = client.submitJob(jobRequest);
  fragment Job on Job {
    id
    status
    request {
      type
      callbackURL
      parameters {
        idPhoto
        userPhoto
        firstName
        lastName
        dob
      }
      properties{
        name
        value
      }
    }
    result {
      success
      successWithSuggestion
      type
      country
      state
      id
      firstName
      lastName
      gender
      expireDate
      class
      endorsements
      motorcycle
      birthDate
      confidences {
        id
        selfie
        idMatch
        faceMatch
      }
    }
    errors {
      type
      message
      suggestion
    }
    submitted
  }
  input JobParams {
    userPhoto: String
    idPhoto: String
    id: String
    firstName: String
    lastName: String
    dob: String
  }
  input JobPropertyParam {
    name: String!
    value: String!
  }
  mutation submitJob(
    $type: String!
    $callbackURL: String
    $pr: String
    $params: JobParams
    $properties: [JobPropertyParam]
  ) {
    submitJob(
      type: $type
      callbackURL: $callbackURL
      params: $params
      properties: $properties
    ) {
      ...Job
    }
  }

POST api/jobs

payload:
{
  "type": "id-verification",
  "callbackURL": "https://yourwebsite.com",
  "properties": [{
    "name": "propertiesName",
    "value": "propertiesValue"
  }],
  "params": {
    "userPhoto": "data:image/png;base64,iVBRw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",
    "idPhoto": "data:image/png;base64,iVBRw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="
  }
}

Arguments

Parameter Type Required Description
type String * Type of AI job ("id-verification")
accountGroupSid ID The account group ID
callbackURL String

Upon the job's completion, Vouched will POST the job results to the webhook. If the callbackURL is not given, Vouch will process the job in realtime. All callbackURL requests contain X-Signature in request headers. The X-Signature was created using HMAC-SHA1 using your private key as the key. To validate webhook response, perform the same signature procedure and compare if your generated signature and the sent signature match. Webhook contains the job here.

properties [JobProperty] List of JobProperty - Arbitrary properties to add to the job, i.e. application ids
parameters Object *
Object for verification
Property Type Required Description
userPhoto String, Buffer   The user's id comparison photo. Supported types include image/png, image/jpeg
idPhoto String, Buffer * The user's official identification photo. Supported types include image/png, image/jpeg
firstName String   The user's first name.
lastName String   The user's last name.
dob String   Date in the format MM/DD/YYYY.
email String   Used for crosschecking identity
phone String   Used for crosschecking identity
enableCrossCheck Boolean   Used to enable/disable crosscheck
enableDarkWeb Boolean   Used to enable/disable darkweb
enableIPAddress Boolean   Used to enable/disable ip address search
enablePhysicalAddress Boolean   Used to enable/disable address search
enableAAMVA Boolean   Used to enable/disable aamva search

Returns

Parameter Type Required Description
job Job * The newly created job.

Errors:

Remove a job


job = client.remove_job(
    id='USkjk33'
)

if resp, err := c.RemoveJob("ZicnypPn"); err != nil {
  fmt.Printf("Error: %+v\n", err)
} else {
  fmt.Printf(" %+v\n", resp)
}
Job job = client.removeJob("someJobId");

const job = await client.remove({ id: 'ofm1k9xF' })


  fragment Job on Job {
    .... Refer to submitJob
  }
  mutation removeJob(
  $id: ID!
  ) {
    removeJob(
      id: $id
    ) {
      ...Job
    }
  }

  DELETE api/jobs/:id

Arguments

Parameter Type Required Description

Returns

Parameter Type Required Description
job Job * The removed job.

Errors:

Download a job

  GET api/jobs/:id/download?confidences=true

Arguments

Parameter Type Required Description
id ID The ID of the job to generate a PDF of
confidences Boolean Include Confidence Scores in the PDF

Returns

Parameter Type Required Description
id ID The ID of the job to generate a PDF of
confidences Boolean Include Confidence Scores in the PDF
pdf String PDF of the job in base64

Errors:

Provide results on jobs

const jobs = client.jobs({
    page:1,
    pageSize:2,
    type:'id-verification',
    status:'active',
    token:<TOKEN_FROM_WEB_CLIENT>,
    sortBy:'submitted',
    sortOrder:'desc',
    withPhotos:true,
    fromDate:'2017-01-24T04:44:00+00:00',
    toDate:'2020-12-24T04:44:00+00:00'
})


params := map[string]interface{}{
  "page":       1,
  "sortBy":     "submitted",
  "sortOrder":  "desc",
  "from":       "1990-12-24T04:44:00+00:00",
  "to":         "2020-12-24T04:44:00+00:00",
  "type":       "id-verification",
  "token":       "SESSION_TOKEN",
  "status":     "active",
  "withPhotos": false,
  "pageSize":   2,
}
if resp, err := c.Jobs(params); err != nil {
  fmt.Printf("Error: %+v\n", err)
} else {
  fmt.Printf("Jobs: %+v\n", resp)
}

    JobsFilter f = new JobsFilter();
    f.id = "someJobId";

    Jobs jobs = client.getJobs(f);
jobs = client.jobs(
    page=1,
    page_size=2,
    type='id-verification',
    token=<TOKEN_FROM_WEB_CLIENT>,
    status='active',
    sort_by='date',
    sort_order='desc',
    with_photos=True,
    from_date='2017-01-24T04:44:00+00:00',
    to_date='2020-12-24T04:44:00+00:00'
 )

  query jobs(
    $id: ID
    $token: String
    $ids: [ID]
    $type: String
    $status: String
    $to: String
    $from: String
    $withPhotos: Boolean
    $sortOrder: String
    $sortBy: String
    $page: Int
    $pageSize: Int
  ) {
    jobs(
      withPhotos: $withPhotos
      id: $id
      ids: $ids
      status: $status
      token: $token
      type: $type
      to: $to
      from: $from
      sortOrder: $sortOrder
      sortBy: $sortBy
      page: $page
      pageSize: $pageSize
    ) {
      total
      totalPages
      pageSize
      page
      items {
        ...Job
      }
    }
  }
  GET api/jobs?ids=["1","2"]&type=id-verification&page=1&pageSize=101&sortBy=submitted&sortOrder=asc&status=completed&from=2011-10-05T14:48:00.000Z&to=2019-10-05T14:48:00.000Z&withPhotos=true

  or

  GET api/jobs?id=1

Arguments:

Parameter Type Required Description
id ID Filter by job ID.
type String Type of job ("id-verification")
ids [ID] Filter by a list of job IDs.
token String The time limited session token from the web client.
page Int Paginate list by page where the page starts at 1, defaults to 1.
pageSize Int The number of items for a page, max 1000, defaults to 100
sortBy String Sort the list from ("submitted","updated", "status").
sortOrder String Order the sort from ("asc", "desc").
status String Filter by status from ("active","completed")
from String Filter by submitted/updatedAt from ISO8601 date.
to String Filter by submitted/updatedAt to ISO8601 date.
toFrom String Defaults to submitted. Filter to and from by ("submitted","updatedAt")
withPhotos Boolean Defaults to False. Job will contain idPhoto and userPhoto photos. Max pageSize will be 100.
withPhotoUrls Boolean Defaults to False. Job will contain idPhotoUrl and userPhotoUrl signed. Max pageSize will be 100.

Returns

Parameter Type Required Description
jobs [Job] * List of paginated jobs
totalPages Int * Total number of pages of jobs.
pageSize Int * The requested page size.
page Int * The requested page.
total Int * Total number of filtered jobs.

Errors:

Update job with verified reviews


PUT api/jobs/:id/review

payload:
{
  "idValid": true,
  "selfieValid": true,
  "faceMatch": null,
  "nameMatch": null,
  "birthDateMatch": null,
  "firstName": "John",
  "lastName": "Bao",
  "docId": null,
  "idType": null,
  "birthDate": null,
  "expireDate": null,
  "state": null,
  "country": null,
}

Arguments:

Parameter Type Required Description
idValid Boolean Is the id valid.
selfieValid Boolean Is the selfie valid.
faceMatch Boolean Is the face match valid.
birthDateMatch Boolean Does the birthdate match.
nameMatch Boolean Does the name match.
firstName String The first name.
lastName String The last name.
docId String The document id number.
idType String The id type from ('passport', 'commercial-license', 'global-entry', 'identification', 'residence', 'employment', 'drivers-license', 'drivers-license-permit').
state String The state/province/territory ISO 3166-2 code
country String The country ISO 3166-1 code.

Returns

Parameter Type Required Description
job Job *

Errors:

Authenticate by performing face match between a verified selfie and a new selfie


POST api/identity/authenticate


Arguments:

Parameter Type Required Description
id String * The job id of the verified selfie to perform a face match
userPhoto String * The user photo to perform a face match

Returns

Parameter Type Required Description
match Float * 0-1, where 0.90 is a positive match

Errors:

Get a list of supported id documents

  query identityDocuments
   {
    identityDocuments
    {
      documents: {
        ...IdentityDocument
      }
    }
  }
`;

GET api/identity/documents


Arguments:

Returns

Parameter Type Required Description
documents [IdentityDocuments] * List of identity documents.

Errors:

Send a Vouched Now invite

  mutation sendInvite(
    $firstName: String
    $lastName: String
    $phone: String
    $email: String
    $contact: String
  ) {
    sendInvite(
      firstName: $firstName
      lastName: $lastName
      phone: $phone
      email: $email
      contact: $contact
    ) {
      ...Invite
    }
  }
`;

POST api/invites

payload:
{
  "email": "test@test.com",
  "firstName": "John",
  "lastName": "Bao",
  "phone": "0004007007",
  "contact": "email"
}

Arguments:

Parameter Type Required Description
type String defaults to idv, idv - id with selfie verification, id - id only
email String Email address to send to
phone String 10 digit phone number, US +1 and UK +44 numbers only
contact String Contact method to use(email,phone)
firstName String First Name
lastName String Last Name
templateEmail String The template to use for emails with variables $FIRST_NAME $LINK
titleEmail String The title of the email
templateText String The template to use for text messages with variables $FIRST_NAME $LINK
send Boolean Defaults to true, send an message via the contact method
internalId ID Application Internal Id

Returns

Parameter Type Required Description
invite Invite * The newly created invite.

Errors:

Submit an identity crosscheck

Provides a crosscheck of matching identities based on provided name, email, phone number, address, and IP address. The crosscheck is performed across a network of enriched data sources.


POST api/identity/crosscheck

payload:
{
  firstName: 'John',
  lastName: 'Bao',
  email: 'baoman@mail.com',
  phone: '917-343-3433',
  ipAddress: '73.19.102.110',
  address: {
    streetAddress: '1 Main St',
    city: 'Seattle',
    postalCode: '98031',
    state: 'WA',
    country: 'US'
  }
}



Arguments:

Parameter Type Required Description
email String Email address
phone String Phone number
firstName String * First Name
lastName String * Last Name
ipAddress String IP Address
address CrossCheckAddress Address

Returns

Parameter Type Required Description
id ID * ID of the request
request CrossCheckRequest *
result CrossCheckResult *

Errors:

Submit an aamva standalone job

Creates a standalone aamva job based on provided user details. Licensenumber, country, state are mandatory fields.


POST api/identity/aamva

payload:
{
   "licenseNumber": "520AS4197",
   "country": "US",
   "lastName": "Testesraet",
   "idType": "drivers-license",
   "state": "IA",
   "dob": "05/29/1988",
   "issueDate": "05/29/1988",
   "expirationDate":"05/29/1988"
}

Arguments:

Parameter Type Required Description
licenseNumber String * License Id number
country String * Country
lastName String * Last Name
idType String * Type of id, allowed drivers-license for the moment
state String * State
dob String Date of Birth
issueDate String License Issue Date
expirationDate String License Expiration Date

Returns

Parameter Type Required Description
id ID * Job Id
request AamvaIndentityRequest *
result AamvaIndentityResult *

Errors:

Resend a Vouched Now invites

  mutation resendInvite($id: ID!) {
    resendInvite(id: $id) {
      ...Invite
    }
  }

`;

POST api/invites/UUIKJw4kj/resend

Arguments:

Parameter Type Required Description
id ID * The invite id to resend.

Returns

Parameter Type Required Description
invite [Invite] * The resent invite.

Errors:

List of Vouched Now invites

  query smsInvites($id: ID, $page: Int, $pageSize: Int) {
    smsInvites(id: $id, page: $page, pageSize: $pageSize) {
      total
      totalPages
      page
      items {
        ...Invite
      }
    }
  }
`;

GET api/invites?pageSize=10&page=1

Arguments:

Parameter Type Required Description
id ID The invite id
page Int Paginate list by page where the page starts at 1, defaults to 1.
pageSize Int The number of items for a page, defaults to 50

Returns

Parameter Type Required Description
invites [Invite] * List of paginated invites.
totalPages Int * Total number of pages.
pageSize Int * The requested page size.
page Int * The requested page.
total Int * Total number of filtered jobs.

Errors:

Types

Address

Property Type Required Description
unit String unit number
streetNumber String
street String
city String
state String ISO 3166-2 state/province/territory code
postalCode String
postalCodeSuffix string
country String ISO 3166-1 country code

Confidences

Property Type Description
id Float Confidence score for an id photo, 0-1.0
idQuality Float Confidence score for image quality of the id, 0-1.0
idGlareQuality Float Confidence score for image quality of the id, 0-1.0
selfie Float Confidence score for a selfie photo, 0-1.0
idMatch Float Confidence score for matching data on the id, 0-1.0
idExpired Float Confidence score for id expiration date, 0-1.0
faceMatch Float Confidence score for matching faces, 0-1.0
birthDateMatch Float Confidence score for matching birth dates, 0-1.0
nameMatch Float Confidence score for matching names, 0-1.0
selfieSunglasses Float Confidence score for selfie with sunglasses, 0-1.0
selfieEyeglasses Float Confidence score for selfie with eyeglasses, 0-1.0

CrossCheckAddress

Property Type Required Description
unit String
streetAddress String *
city String *
state String * state/province/territory ISO 3166-2 code
postalCode String *
country String * ISO 3166-1 country code

CrossCheckAgeRange

Parameter Type Required Description
from Int * From age
to Int * To age

CrossCheckConfidences

Parameter Type Required Description
identity Float * Overall identity risk confidence, 0-1.0, low: >= 0.50, medium: > 0.2, high: > 0.1, critical: <= 0.1
activity Float * Overall activity risk confidence, high: <= 0.1

CrossCheckIdentityAddress

Parameter Type Required Description
errors [Error] *
warnings [Error] *
isValid Boolean * The address is a verified address
isMatch Boolean * The name on the address matches the user
name String The recorded name of the identity
ageRange CrossCheckAgeRange The age range of the name on the address
isForwarder Boolean The address is a freight forwarding address
isCommercial Boolean The address is associated with a business
type String 'incomplete-address', 'po-box', 'multi-unit', 'single-unit', 'commercial-mail-drop', 'po-box-forward' ,'other'

CrossCheckIdentityEmail

Parameter Type Required Description
errors [Error] *
warnings [Error] *
isValid Boolean * The email is a valid email address
isMatch Boolean * The name associated with the email address matches the user
name String The recorded name of the identity
ageRange CrossCheckAgeRange The age range of the name on the email address
isAutoGenerated Boolean The email address could be autogenerated
isDisposable Boolean The email address is disposable
daysFirstSeen Int The number of days since the email address was first seen in the data network

CrossCheckIdentityGender

Parameter Type Required Description
man number frequency with a range 0-100 of the first name in men with a mininum found frequency of 0.0001
woman number frequency with a range 0-100 of the first name in women with a mininum found frequency of 0.0001

CrossCheckIdentityPhone

Parameter Type Required Description
errors [Error] *
warnings [Error] *
isValid Boolean * The phone number is valid
isMatch Boolean * The name associated with the phone number matches the user
name String The recorded name of the identity
type String 'fixed-voip', 'landline', 'mobile','non-fixed-voip', 'premium-rate', 'tollfree', 'voicemail', 'other'
ageRange CrossCheckAgeRange The age range of the name on the phone number
carrier String The phone provider
isPrepaid Boolean The phone number is on a prepaid plan
isDisposable Boolean The phone number is disposable
isCommercial Boolean The phone number is associated with a business

CrossCheckDarkWeb

Parameter Type Required Description
criminalCount number Count of instances email was observed to have been used in DarkWeb data collections
criminalLastSeen String Last observed time email was observed to have been used in DarkWeb collections.
criminalMaxScore number Score of the top ranking DarkWeb source associated with the email

CrossCheckRequest

Parameter Type Required Description
email String Email address
phone String Phone number
firstName String * First Name
lastName String * Last Name
darkWeb CrossCheckDarkWeb * Dark Web
address CrossCheckAddress
ipAddress String

CrossCheckResult

Parameter Type Required Description
address CrossCheckIdentityAddress
email CrossCheckIdentityEmail
phone CrossCheckIdentityPhone
gender CrossCheckIdentityGender
ageRange CrossCheckAgeRange
ipAddress IPAddress
darkWeb CrossCheckDarkWeb
confidences CrossCheckConfidences *

Aamva

Parameter Type Required Description
enabled boolean A boolean determining whether or not AAMVA is enabled for the account this job ran under
hasErrors boolean Representing if AAMVA returned any matching errors
hasWarnings boolean Representing if there are any warnings on the AAMVA request
createdAt ISO8601 date Representing when the AAMVA request was created
updatedAt ISO8601 date Representing the last time the AAMVA verification data was updated
status string Representing the state of the AAMVA verification request. Potential statuses are: Pending, In Progress, Error, Not Applicable, Completed
statusMessage string An extra message giving information about the status of the verification request
completedAt ISO8601 date Representing the time the verification request completed

AamvaVerificationRequest

Parameter Type Required Description
status string Representing the state of the AAMVA verification request
licenseId string The document ID that was sent to AAMVA for verification
requestData JSON The JSON data sent over to AAMVA for verification
responseData JSON The JSON data returned from AAMVA for verification
warnings JSON Warnings that were generated during the verification process
errors JSON Errors that were generated during the verification process
createdAt ISO8601 date Representing the time the verification request completed

GenderDistribution

Parameter Type Required Description
man number frequency with a range 0-100 of the first name in men with a mininum found frequency of 0.0001
woman number frequency with a range 0-100 of the first name in women with a mininum found frequency of 0.0001

Gender

Parameter Type Required Description
gender String "man" or "woman" based on extracted fields from the ID
genderDistribution GenderDistribution frequency with a range 0-100 of the first name in men and women with a mininum found frequency of 0.0001

Dimension

Parameter Type Required Description
width Int *
height Int *

Error

Property Type Required Description
type String *
  • InvalidRequestError - The request is invalid.
  • FaceMatchError - Face match felled below the threshold
  • NameMatchError - Name match felled below the threshold
  • BirthDateMatchError - Birth date match felled below the threshold
  • ExpiredIdError - The ID’s expiration date has passed
  • InvalidIdPhotoError - The ID is invalid
  • InvalidUserPhotoError - The user photo (selfie) is invalid
  • UNAUTHENTICATED/AuthenticationError - The request could not be authenticated
  • ConnectionError - A connection error occurred while communicating to the Vouched service
  • UnknownSystemError - A unknown system error occurred
  • InvalidIdError - The ID is invalid
message String * Details on the occurring error.
warning Boolean * Is this a warning?
suggestion String A suggestion for matching name, John Smith, Jon Smith.
errors [Error] InvalidRequestError contains a sub list of errors or warnings

Location

Property Type Required Description
latitude Float
longitude Float

Invite

Property Type Required Description
id ID * Invite id.
qrCode String * Base64 Data Url image for the invite link
phone String Phone number with the country code
email String Email address
send Boolean * Defaults to true, send an message via the contact method
url String * The verification link sent to the user
contact String The contact used to send the invite
jobId ID * The associated job id if the status is active or completed
firstName String The contact's first name
lastName String The contact's last name
updatedAt String * ISO8601 date
createdAt String * ISO8601 date
status String *
  • accepted
  • queued
  • sending
  • sent
  • failed
  • delivered
  • undelivered
  • receiving
  • received
  • read (WhatsApp only)
  • completed
  • active

IdentityDocument

Property Type Required Description
type String * The id type.
country String * Issuing country in ISO 3166-1 2 code
state String Issuing state/province/territory in ISO 3166-2 2 code
properties [String] * Recognized extraction properties

IPAddress

Property Type Required Description
city String Originating City
state String Originating State/Province/Territory in ISO 3166-2 code
country String Originating Country in ISO 3166-1 2 code
postalCode String postal code
location Location
isp String Name of the isp
organization String Name of the organization associated with the IP address
isAnonymous Boolean Is the IP address part of an anonymous network
isAnonymousVpn Boolean Is the IP address part of an anonymous vpn network
isAnonymousHosting Boolean Is the IP address part of an anonymous hosting network
userType String
  • business - the IP address belongs to a business ISP or a corporation.
  • cafe - an internet cafe or similar location.
  • cellular - the IP address is used to route traffic from devices connected to a cellular network.
  • college - the IP address belongs to a college, university, or similar institute of higher education.
  • content_delivery_network - belongs to a CDN (Akamai, Cloudflare, Google Cloud, etc.).
  • dialup - belongs to a dial-up ISP.
  • government - the IP address belongs to a government organization.
  • hosting -- a commercial hosting provider.
  • library - used in a library.
  • military - used on a military base or similar.
  • residential - the IP address belongs to a residential ISP or is otherwise primarily used by home users.
  • router - a backbone or infrastructure router.
  • school - primary or secondary education.
  • search_engine_spider - a crawler or indexer for a search engine (Google, Bing, Yahoo, etc.).
  • traveler - the IP address is used at an airport, hotel, or similar location where the users are generally traveling from their primary residence.

Job

Property Type Required Description
id ID * Job ID
completed Boolean * Job is completed
status String * Job status from ("active","removed","completed")
submitted String * The submitted date ISO8601 date
updatedAt String * The last updated date ISO8601 date
reviewAt String The last updated review ISO8601 date
reviewSuccess Boolean Review indicates the verification pass or failed
review Object Review override object
surveyPoll Int User survey rating 1-5
surveyMessage String User survey message
surveyAt String ISO8601 date
request Object * Object for 'id-verification'.
Property Type Required Description
type String * Job type
callbackURL String POST enabled webhook
requestInfo RequestInfo User request information
parameters JobParameters * Object for 'id-verification'
result Object *

Object For 'id-verification'

Property Type Required Description
success Boolean * Did the id verification completed successfully with no errors? The verification could have warnings.
warnings Boolean * Does the completed verification contain warnings.
successWithSuggestion Boolean * Deprecated: Functionally this property is the same as success. The verification passed successfully with name suggested errors.
gender Gender * Displays the gender stats for the Job
type String The id type
state String The issuing state/province/territory of the id as a ISO 3166-2 code
country String The issuing country of the id
id String The verified id number of the id
expireDate String The verified expired date in the format MM/DD/YYYY.
issueDate String The verified issued date in the format MM/DD/YYYY.
idAddress Address The ID address
crosscheck CrossCheckResult The crosscheck result
aamva Aamva The aamva result
ipAddress IPAddress The IP address
class String The ID class value
endorsements String The id endorsements
motorcycle String The motorcycle property
birthDate String The verified date in the format MM/DD/YYYY.
firstName String The user's verified first name.
middleName String The user's verified middle name.
lastName String The user's verified last name.
confidences Confidences Confidence scores
errors [Error] List of errors for unsuccessful completed jobs.

RequestInfo

Property Type Required Description
ipaddress String The user's IP address.
useragent String The user's browser agent.
referer String The refering browser location.

JobProperty

Property Type Required Description
name String * Property name
value String * Property value

JobParameters

Property Type Required Description
idPhoto String The user's official identification photo in base64.
idPhotoUrl String The user's id photo as a timed (15 min) signed url
idPhotoDetect String A cropped aligned version of the id photo in base64
idPhotoDetectUrl String A cropped aligned version of the id photo as timed (15 min) signed url
idPhotoDetectDimensions Dimension
idPhotoDimensions Dimension
userPhoto String The user's selfie photo in base64.
userPhotoUrl String The user's selfie photo as a timed (15 min) signed url
userPhotoDetect String A cropped aligned version of the selfie photo in base64
userPhotoDetectUrl String A cropped aligned version of the selfie photo as timed (15 min) signed url
userPhotoDetectDimensions Dimension
userPhotoDimensions Dimension
email String Used for crosschecking identity
phone String Used for crosschecking identity
dob String Date in the format MM/DD/YYYY.
firstName String The user's first name.
lastName String The user's last name.