Skip to main content

Documentation Index

Fetch the complete documentation index at: https://documentation.theary.ai/llms.txt

Use this file to discover all available pages before exploring further.

Third-party ban

Download this guide

Use searchConfig.thirdPartyBan when your organization does not want a search routed to specific third-party verification vendors. When a banned vendor is detected during research or inbound processing, Theary suppresses third-party routing for that vendor and continues with manual/outbound verification attempts.

When to use it

ScenarioUse thirdPartyBan?Why
Your client does not allow The Work Number for a specific searchYesBan only TALX_WORK_NUMBER while leaving other vendors unchanged.
Your client does not allow several known vendors for every search in an orderYesPut multiple vendor codes in defaultSearchConfig.thirdPartyBan.
You want to suppress every third-party event, regardless of vendorPrefer escalation.disableThirdPartyEventthirdPartyBan is vendor-specific.
You want to ban an employer, school, routing id, or contact destinationNoBan matching only applies to canonical third-party vendor codes.
Research might pick vendor X, but the client must verify through vendor Y insteadYes, plus a contact hintBan X in thirdPartyBan and seed Y in outbound.contactHints[].thirdPartyVendor. See Use a different third-party instead.

Request shape

LocationApplies toNotes
defaultSearchConfig.thirdPartyBanEvery search in the order that does not define its own searchConfigUse for order-wide vendor restrictions.
searchTypes[i].searchConfig.thirdPartyBanOne specific searchFully replaces defaultSearchConfig for that search when searchConfig is present, even as {}.
Per-search searchConfig replaces defaultSearchConfig wholesale. If a search has its own searchConfig, include every search-level override that search needs inside that object.

Field rules

FieldTypeRequiredRules
thirdPartyBanstring[]NoCanonical vendor codes only. Max 50 entries. Values are trimmed, uppercased, and deduplicated. UNKNOWN, unknown codes, non-array values, and malformed values are rejected. Empty arrays are accepted and behave like omission.

Supported vendor codes

These are the canonical values accepted by thirdPartyBan.

Employment

Vendor codeCommon names
TALX_WORK_NUMBERTALX, The Work Number, INVerify, WNFE, Equifax
THOMAS_AND_COMPANYThomas and Company, Thomas & Co
PRECHECKPreCheck, EmpCheck, EmployCheck
VERIFYTODAYVerifyToday, Verify Today System
CCCVERIFYCCC Verify, CCCVerify
EXPERIANExperian Verify, uConfirm
QUICKCONFIRMQuickConfirm
ACT1ACT 1, ActOne
CERTREE_EMPCertree employment
DELTATDelta-T Group
DRIVERIQDriver IQ
EMERALD_HEALTH_SERVICESEmerald Health Services
EMPINFOEmpInfo
EVADVANTAGEEvAdvantage
GROUPONEGroupOne
TENSTREETTenstreet
TRUECONFIRMTrueConfirm
TRUEWORKTruework, True Work
VAULT_VERIFYVault Verify
VERIFENTVerifent
VERIFY_FASTVerify Fast, VerifyFast
VERIFY_ADVANTAGEVerifyAdvantage, VerifyDirect
VERISAFE_JOBSVeriSafe Jobs
VERIFICATION_MANAGERVerification Manager
JOBTRAXJobTrax

Education

Vendor codeCommon names
NSCHNational Student Clearinghouse, NSC, DegreeVerify, DiplomaVerify
NEED_MY_TRANSCRIPTNeed My Transcript, NeedMyTranscript
PARCHMENTParchment
SCRIBORDERScribOrder
AURADATAAuraData
DIPLOMA_SENDERDiploma Sender
CERTREE_EDUCertree education
CHICAGO_PUBLIC_SCHOOLSChicago Public Schools records portal
GRAMARCYGramarcy, Gramercy
IECIEC Corporation
INDIANA_ARCHIVESIndiana Archives
MERIDIAN_INSTITUTEMeridian Institute
OTTAWA_UNIVERSITYOttawa University
TCSGTechnical College System of Georgia
VERIF_Y_INCVerif-Y Inc.
UNKNOWN may appear in webhook metadata when a vendor could not be confidently recognized, but it is not accepted in thirdPartyBan.

Examples

{
  "searchTypes": [
    {
      "searchType": "EMPLOYMENT",
      "searchConfig": {
        "thirdPartyBan": ["TALX_WORK_NUMBER"]
      }
    }
  ]
}

Ban multiple vendors for all searches in an order

{
  "defaultSearchConfig": {
    "thirdPartyBan": [
      "TALX_WORK_NUMBER",
      "NSCH"
    ]
  },
  "searchTypes": [
    { "searchType": "EMPLOYMENT" },
    { "searchType": "EDUCATION" }
  ]
}
{
  "searchTypes": [
    {
      "searchType": "EMPLOYMENT",
      "searchConfig": {
        "thirdPartyBan": ["TALX_WORK_NUMBER", "TRUEWORK"]
      }
    },
    {
      "searchType": "EDUCATION",
      "searchConfig": {
        "thirdPartyBan": ["NSCH", "PARCHMENT"]
      }
    }
  ]
}

Combine ban with third-party deferral

{
  "searchTypes": [
    {
      "searchType": "EMPLOYMENT",
      "searchConfig": {
        "thirdPartyBan": ["TALX_WORK_NUMBER"],
        "outbound": {
          "thirdPartyDeferral": true,
          "thirdPartyDeferralHours": 72
        }
      }
    }
  ]
}
If TALX_WORK_NUMBER is detected, the ban wins immediately. No pending third-party timer is created, and no delayed third-party webhook is emitted later.

Use a different third-party instead

Use this pattern when research or inbound might surface one third-party vendor, but your client requires verification through a different service. Ban the vendor you do not want; seed the vendor you do want as a contact hint.
StepWhat to setWhy
1thirdPartyBan: ["VENDOR_TO_AVOID"]Suppresses third-party routing and webhooks for that vendor when it is detected. Outbound and manual handling can continue.
2outbound.contactHints[] with thirdPartyVendor: "VENDOR_TO_USE"Seeds the contact plan with your chosen vendor (usesThirdParty=true). Optional thirdPartyCode is the employer or school code at that vendor.
3Optional research.skipResearch: trueSkips automated discovery when you only want the hinted vendor and any direct destinations you list on the same hint.
thirdPartyBan and contactHints[].thirdPartyVendor must refer to different vendor codes. The API rejects a hint whose thirdPartyVendor also appears in thirdPartyBan for the same search — you cannot ban and seed the same vendor in one config.
Employment example: block The Work Number if research finds it, but route through Truework with a known employer code.
{
  "searchTypes": [
    {
      "searchType": "EMPLOYMENT",
      "searchConfig": {
        "thirdPartyBan": ["TALX_WORK_NUMBER"],
        "outbound": {
          "contactHints": [
            {
              "name": "Acme Corp",
              "thirdPartyVendor": "TRUEWORK",
              "thirdPartyCode": "ACME-EMP-001"
            }
          ]
        }
      }
    }
  ]
}
Education example: block National Student Clearinghouse if it appears, but use Parchment with a school identifier.
{
  "searchTypes": [
    {
      "searchType": "EDUCATION",
      "searchConfig": {
        "thirdPartyBan": ["NSCH"],
        "outbound": {
          "contactHints": [
            {
              "thirdPartyVendor": "PARCHMENT",
              "thirdPartyCode": "SCHOOL-ABC123"
            }
          ]
        }
      }
    }
  ]
}
Hints-only (no research): when the client supplies the vendor up front and you do not want Algolia or web research to run.
{
  "searchTypes": [
    {
      "searchType": "EMPLOYMENT",
      "searchConfig": {
        "thirdPartyBan": ["TALX_WORK_NUMBER"],
        "research": { "skipResearch": true },
        "outbound": {
          "contactHints": [
            {
              "thirdPartyVendor": "VERIFYTODAY",
              "thirdPartyCode": "12345"
            }
          ]
        }
      }
    }
  ]
}
At runtime:
  • If research or inbound detects a banned vendor, that vendor does not get third-party routing or a THIRD_PARTY_RECORD webhook; the search can still proceed on other contacts or on your hinted vendor.
  • The hinted vendor is merged into the contact plan per history item (deduplicated by vendor code and thirdPartyCode). It follows normal third-party precedence unless you set escalation.disableThirdPartyEvent: true to prefer direct channels on the same hint.
  • You may add email, phone, or fax on the same hint as a direct fallback alongside thirdPartyVendor.
For field-level rules on thirdPartyVendor and thirdPartyCode, see Search-level configuration and SearchConfigDto.

Normalization and deduping

{
  "thirdPartyBan": [
    " talx_work_number ",
    "TALX_WORK_NUMBER",
    "nsch"
  ]
}
This resolves to ["TALX_WORK_NUMBER", "NSCH"].

Runtime behavior

FlowWhat happens when the detected vendor is banned
Research finds a banned vendorThe third-party verification.action_required webhook is suppressed, no pendingThirdParty timer is stored, outbound is not cancelled, an audit notation is recorded, and manual/outbound handling continues.
Third-party deferral is enabledThe ban takes precedence over deferral. The search is not queued for delayed third-party emission.
Inbound redirects to a banned vendorThe search emits verification.action_required with reasonCode: "HUMAN_ESCALATION" and metadata.escalationSubtype: "THIRD_PARTY_BAN" instead of routing to the vendor.
An unbanned or unrecognized vendor is detectedExisting third-party routing, deferral, and webhook behavior is preserved.

Webhook expectations

When a vendor is banned, clients should not expect a THIRD_PARTY_RECORD action-required event for that vendor. For inbound redirects to a banned vendor, handle the human escalation event:
{
  "type": "verification.action_required",
  "reasonCode": "HUMAN_ESCALATION",
  "metadata": {
    "escalationSubtype": "THIRD_PARTY_BAN",
    "vendor": "TALX_WORK_NUMBER"
  }
}

Validation failures

Invalid ban lists are rejected when the order is created.
InputResult
"thirdPartyBan": "TALX_WORK_NUMBER"Rejected because the field must be an array.
"thirdPartyBan": ["UNKNOWN"]Rejected because UNKNOWN is not a supported ban value.
"thirdPartyBan": ["NOT_A_VENDOR"]Rejected because the code is not canonical.
More than 50 entriesRejected.
[] or omittedAccepted; no vendors are banned.