---
updatedAt: 2026-05-29T18:12:06.000Z
agentTools:
  projectIndex: https://docs.vouched.id/llms.txt
---

# Send Invite

Send Vouched Now invite.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "version": "0.13.13",
    "title": "Vouched API",
    "description": "Official Vouched REST API.\n\n## Environments\n\nThe `servers` list below has two production hosts: `verify.vouched.id` (US) and\n`verify.eu.vouched.id` (EU). A separate **sandbox** deployment runs the same service with\n`SANDBOX_MODE` enabled, where only the identity-verification job endpoints are mounted —\n`GET`/`POST /api/jobs`, `GET`/`DELETE /api/jobs/{id}`, `GET /api/jobs/{id}/download` and\n`POST /api/jobs/session`. Every other endpoint **under `/api`** in this document returns **404**\nin sandbox, including AML, SSN, TIN, DOB, invites and CrossCheck.\n\nThe provider webhook receivers are the exception: `/api/tin/webhook`,\n`/api/dlv/webhook/license-validation`, `/v1/sendgrid/email/send` and `/v1/twilio/sms/send` are\nregistered outside the sandbox gate and remain available.\n",
    "x-logo": {
      "url": "https://i.pinimg.com/originals/88/29/2f/88292f8ffd6231d0c41634f2e707c34a.png",
      "altText": "Vouched logo"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "servers": [
    {
      "url": "https://verify.vouched.id",
      "description": "US (default)"
    },
    {
      "url": "https://verify.eu.vouched.id",
      "description": "EU"
    }
  ],
  "tags": [
    {
      "name": "invites",
      "description": "This is the section where you can complete and send Invites to users."
    }
  ],
  "paths": {
    "/api/invites": {
      "post": {
        "description": "Send Vouched Now invite.",
        "summary": "Send Invite",
        "operationId": "sendInvites",
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "tags": [
          "invites"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/body_2"
              },
              "examples": {
                "0": {
                  "value": {
                    "email": "test@test.acme.com",
                    "firstName": "John",
                    "lastName": "Bao",
                    "phone": "0004007007",
                    "contact": "email"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The newly created invite.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/send_invite"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "X-API-Key": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "The authentication private key"
      }
    },
    "schemas": {
      "apijobs_properties": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the property"
          },
          "value": {
            "type": "string",
            "description": "Value of the property"
          }
        }
      },
      "error": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "\nError type code.\n- InvalidRequestError - The request is invalid.\n\n  - Parameters sent in the request are invalid.\n\n\n- FaceMatchError - The face match score was lower than the threshold.\n\n  - Category: faceMatch\n\n  - Faces obtained from the ID and Selfie images do not match.\n\n\n- NameMatchError - The name match score was lower than the threshold.\n\n  - The name provided by the user and the name extracted from the ID do not match.\n\n  - Eg: User Provided Name - Dave Smith, Extracted Name - David Smith\n\n\n- BarcodeMatchError - The barcode match score was lower than the threshold.\n\n  - The data provided by the user and the data extracted from the barcode do not match. \n\n  - Eg: User Provided Name - Dave Smith, Extracted Name - David Smith\n\n\n- BirthDateMatchError - The birth date match score was lower than the threshold.\n\n  - The birth date provided by the user and the data extracted from the ID do not match.\n\n  - Eg: User Provided DOB - 01/09/1992, Extracted DOB - 09/01/1992\n\n  - Eg: User Provided DOB - 11/09/1992, Extracted DOB - 12/09/1992\n\n\n- ExpiredIdError - The ID’s expiration date has passed.\n\n  - The expiration date extracted from the ID indicates that it has expired.\n\n- InvalidIdPhotoError - The ID is invalid.\n\n  - Category: id\n\n  - The image submitted does not qualify as an ID. The ID image may be of lower quality, have blur, glare or it may be too dark, and hence the data could not be extracted.\n\n- InvalidUserPhotoError - The user photo (selfie) is invalid.\n\n  - Category: selfie\n\n  - The image submitted does not qualify as a selfie.\n\n- BarcodeDetectError - The barcode could not be detected on the ID.\n- AuthenticationError - The request could not be authenticated.\n\n  - The key could not be verified.\n\n- NotFoundError - The requested resource does not exist, or is not visible to this account.\n- AccountConfigErrorType - The feature is not enabled for this account.\n- SSNAccountConfigErrorType - SSN verification is not enabled for this account. Returned by the SSN endpoints in place of `AccountConfigErrorType`.\n- SSNUnprocessableEntityErrorType - The eCBSV request contains incorrectly formatted or missing data.\n- UnknownSystemError - A unknown system error occurred.\n- LivenessSkippedError - Selfie liveness was skipped.\n- LivenessScoreError - The selfie liveness score was below the threshold.\n- LivenessCompletionError - The selfie liveness check did not complete.\n- DarkWebError - The dark web check result was below the threshold.\n- ipAddressError - The IP address check result was below the threshold.\n- AMLError - The AML screening result was below the threshold.\n- MissingIdentityErrorType - No identity document was supplied.\n- RestrictedIdDocumentError - The identity document did not meet the account's configured constraints.\n- CrosscheckIdentityError - The CrossCheck identity score was below the threshold.\n- StableSelfiePatternError - An unstable selfie pattern was detected.\n- StableIdPatternError - An unstable ID pattern was detected.\n- DocumentVoidedError - The document has been voided.\n- DlvError - The ID did not pass Driver's License Verification.",
            "enum": [
              "InvalidRequestError",
              "FaceMatchError",
              "NameMatchError",
              "BarcodeMatchError",
              "BarcodeDetectError",
              "BirthDateMatchError",
              "ExpiredIdError",
              "InvalidIdPhotoError",
              "InvalidUserPhotoError",
              "AuthenticationError",
              "NotFoundError",
              "AccountConfigErrorType",
              "SSNAccountConfigErrorType",
              "SSNUnprocessableEntityErrorType",
              "UnknownSystemError",
              "LivenessSkippedError",
              "LivenessScoreError",
              "LivenessCompletionError",
              "DarkWebError",
              "ipAddressError",
              "AMLError",
              "MissingIdentityErrorType",
              "RestrictedIdDocumentError",
              "CrosscheckIdentityError",
              "StableSelfiePatternError",
              "StableIdPatternError",
              "DocumentVoidedError",
              "DlvError"
            ]
          },
          "message": {
            "type": "string",
            "description": "Details on the occurring error."
          },
          "warning": {
            "type": "boolean",
            "description": "Is this a warning?"
          },
          "suggestion": {
            "example": "John Smith",
            "description": "A suggestion for matching name.",
            "type": "string"
          }
        }
      },
      "errors": {
        "type": "object",
        "description": "One or more errors describing why the request failed.",
        "required": [
          "errors"
        ],
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/error"
            }
          }
        }
      },
      "token_error_response": {
        "type": "object",
        "description": "Returned by the JWT middleware, which runs ahead of all routers and so can answer any path. Note this is a single `error` string, not the `errors` array used by the rest of the API.",
        "properties": {
          "error": {
            "type": "string",
            "enum": [
              "Token expired",
              "Token malformed"
            ]
          }
        }
      },
      "send_invite": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Invite id."
          },
          "qrCode": {
            "type": "string",
            "description": "Base64 Data Url image for the invite link."
          },
          "phone": {
            "type": "string",
            "description": "Phone number with the country code.",
            "example": "000-111-2222"
          },
          "email": {
            "type": "string",
            "description": "Email address."
          },
          "send": {
            "type": "boolean",
            "description": "Sends a message via the contact method."
          },
          "url": {
            "type": "string",
            "description": "The verification link sent to the user."
          },
          "contact": {
            "type": "string",
            "description": "The contact used to send the invite."
          },
          "jobId": {
            "type": "string",
            "description": "The associated job id if the status is active or completed."
          },
          "firstName": {
            "type": "string",
            "description": "The contact's first name."
          },
          "lastName": {
            "type": "string",
            "description": "The contact's last name."
          },
          "internalId": {
            "type": "string",
            "description": "Application Internal Id supplied when the invite was created."
          },
          "accountGroupId": {
            "type": "string",
            "description": "Internal id of the account group the invite belongs to."
          },
          "accountGroupSid": {
            "type": "string",
            "description": "Public id of the account group the invite belongs to."
          },
          "dob": {
            "type": "string",
            "description": "The user's date of birth (MM/DD/YYYY) to verify."
          },
          "ial2CrossCheckId": {
            "type": "string",
            "description": "Reference ID for NIST IAL2 compliance verification."
          },
          "enableIPAddress": {
            "type": "boolean",
            "description": "Whether ip address search is enabled for the verification."
          },
          "enableDriversLicenseValidation": {
            "type": "boolean",
            "description": "Whether driver's license validation is enabled for the verification."
          },
          "enablePhysicalAddress": {
            "type": "boolean",
            "description": "Whether address search is enabled for the verification."
          },
          "enableDarkWeb": {
            "type": "boolean",
            "description": "Whether darkweb is enabled for the verification."
          },
          "enableCrossCheck": {
            "type": "boolean",
            "description": "Whether crosscheck is enabled for the verification."
          },
          "properties": {
            "type": "array",
            "description": "List of arbitrary customer supplied properties, echoed back on the job response and [webhook](https://docs.vouched.id/docs/webhooks) under `request.properties` so the result can be attributed in your own system.",
            "items": {
              "$ref": "#/components/schemas/apijobs_properties"
            }
          },
          "updatedAt": {
            "type": "string",
            "description": "The [ISO8601 date](https://en.wikipedia.org/wiki/ISO_8601).",
            "example": "2019-09-07T15:50-04:00"
          },
          "createdAt": {
            "type": "string",
            "description": "The [ISO8601 date](https://en.wikipedia.org/wiki/ISO_8601).",
            "example": "2019-09-07T15:50-04:00"
          },
          "callbackURL": {
            "type": "string",
            "description": "Upon the job's completion, Vouched will POST the job results to the defined [webhook](https://docs.vouched.id/docs/webhooks)."
          },
          "status": {
            "type": "string",
            "description": "Send status. A newly created invite always starts as 'created'. Note: The 'read' value is only returned for WhatsApp contacts.",
            "enum": [
              "created",
              "accepted",
              "scheduled",
              "queued",
              "sending",
              "sent",
              "failed",
              "delivered",
              "partially_delivered",
              "undelivered",
              "receiving",
              "received",
              "read",
              "canceled",
              "started",
              "processed",
              "completed"
            ]
          }
        }
      },
      "body_2": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "idv - id with selfie verification, id - id only, selfie-verification - selfie verification only.",
            "default": "idv",
            "enum": [
              "idv",
              "id",
              "selfie-verification"
            ]
          },
          "email": {
            "type": "string",
            "description": "Email address to send to."
          },
          "phone": {
            "type": "string",
            "description": "10 digit phone number. `US +1` `UK +44`",
            "example": "000-111-2222"
          },
          "contact": {
            "type": "string",
            "description": "Contact method to use.",
            "enum": [
              "email",
              "phone"
            ]
          },
          "firstName": {
            "type": "string",
            "description": "First Name."
          },
          "lastName": {
            "type": "string",
            "description": "Last Name."
          },
          "accountGroupSid": {
            "type": "string",
            "description": "The account group to create the invite under. Returns a 400 when the group does not exist. Defaults to the group of the authenticated key or user."
          },
          "templateEmail": {
            "type": "string",
            "description": "The template to use for emails with variables $FIRST_NAME $LINK."
          },
          "titleEmail": {
            "type": "string",
            "description": "The title of the email."
          },
          "templateText": {
            "type": "string",
            "description": "The template to use for text messages with variables $FIRST_NAME $LINK."
          },
          "callbackURL": {
            "type": "string",
            "description": "Upon the job's completion, Vouched will POST the job results to the defined [webhook](https://docs.vouched.id/docs/webhooks) ."
          },
          "properties": {
            "type": "array",
            "description": "List of arbitrary customer supplied properties, echoed back on the job response and [webhook](https://docs.vouched.id/docs/webhooks) under `request.properties` so the result can be attributed in your own system.",
            "items": {
              "$ref": "#/components/schemas/apijobs_properties"
            }
          },
          "send": {
            "type": "boolean",
            "description": "Send a message via the contact method.",
            "default": true
          },
          "internalId": {
            "type": "string",
            "description": "Application Internal Id."
          },
          "dob": {
            "type": "string",
            "description": "The user's date of birth (MM/DD/YYYY) to verify."
          },
          "ial2CrossCheckId": {
            "type": "string",
            "description": "Reference ID for NIST IAL2 compliance verification."
          },
          "enableCrossCheck": {
            "type": "boolean",
            "description": "Used to enable/disable crosscheck."
          },
          "enableDarkWeb": {
            "type": "boolean",
            "description": "Used to enable/disable darkweb."
          },
          "enableIPAddress": {
            "type": "boolean",
            "description": "Used to enable/disable ip address search."
          },
          "enablePhysicalAddress": {
            "type": "boolean",
            "description": "Used to enable/disable address search."
          },
          "enableDriversLicenseValidation": {
            "type": "boolean",
            "description": "Used to enable/disable driver's license validation."
          },
          "enableAAMVA": {
            "type": "boolean",
            "deprecated": true,
            "description": "Still accepted for backwards compatibility but has no effect. Use `enableDriversLicenseValidation`."
          }
        }
      }
    },
    "responses": {
      "400": {
        "description": "InvalidRequestError - The request is invalid. An aborted or oversized request is answered with this status and an empty body instead of the envelope below.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errors"
            },
            "example": {
              "errors": [
                {
                  "type": "InvalidRequestError",
                  "message": "Invalid request"
                }
              ]
            }
          }
        }
      },
      "401": {
        "description": "The request could not be authenticated. Credential rejection returns an `AuthenticationError` envelope; a malformed or expired bearer token is rejected earlier by the JWT middleware and returns `{ \"error\": \"Token expired\" }` or `{ \"error\": \"Token malformed\" }` instead.",
        "content": {
          "application/json": {
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/errors"
                },
                {
                  "$ref": "#/components/schemas/token_error_response"
                }
              ]
            },
            "example": {
              "errors": [
                {
                  "type": "AuthenticationError",
                  "message": "Unauthorized access"
                }
              ]
            }
          }
        }
      },
      "404": {
        "description": "NotFoundError - The requested resource does not exist.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errors"
            },
            "example": {
              "errors": [
                {
                  "type": "NotFoundError",
                  "message": "job not found"
                }
              ]
            }
          }
        }
      },
      "500": {
        "description": "UnknownSystemError - A unknown system error occurred.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errors"
            },
            "example": {
              "errors": [
                {
                  "type": "UnknownSystemError",
                  "message": "Oops, we encountered a problem"
                }
              ]
            }
          }
        }
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "APIs",
      "tags": [
        "jobs",
        "invites",
        "crosscheck",
        "aml",
        "ssn",
        "tin",
        "dob",
        "documents"
      ]
    },
    {
      "name": "Internal",
      "tags": [
        "client",
        "digital-id",
        "admin",
        "webhooks"
      ]
    }
  ]
}
```