Member Validation API Documentation v2.0.5
GET /validate

Combined Validation — Validates membership for either a travel agent or a travel agency.

The membership type is determined by the required membertype parameter. This endpoint is intended for integrations that can only be configured with a single API URL; responses are identical to the dedicated endpoints.

For integrations targeting only agents or only agencies, consider using the dedicated endpoints instead: GET /agent-validate or GET /agency-validate.
Base URL https://api-membervalidation.cruising.org

Parameters

The API key is supplied via the x-api-key request header — see Authentication.

Required for all requests

ParameterDescription
membertypeMembership type to validate: agent or agency

Additional parameters — Agent (when membertype=agent)

ParameterRequiredDescriptionValidation Rules
personalID Required The agent's personal ID Max 10 digits, numbers only
firstName Required The agent's first name (collected but not used for record matching) Cannot be empty
lastName Required The agent's last name Cannot be empty; must match the record (case-insensitive)

Additional parameters — Agency (when membertype=agency)

ParameterRequiredDescriptionValidation Rules
agencyIndustryID Required The agency's industry ID Exactly 8 digits, numbers only

Response Fields

Common Fields

FieldTypeDescription
SuccessBooleanIndicates whether the request was processed successfully
ResponseCodeIntegerMembership validity status: 0 = no valid record, 1 = expired or non-member, 2 = fully valid
MessageStringA human-readable description of the validation result
MembershipTypeStringAgent or Agency when a Travel-Trade member record is found (valid or expired); Non-Member when the record is not a Travel-Trade member or no record is found. See Response Conventions.

Agent-Specific Fields

FieldTypeDescription
FirstNameStringAgent's first name (valid and expired membership responses)
LastNameStringAgent's last name (valid and expired membership responses)
PersonalIDStringAgent's personal ID (mirrors the value sent in the request)
DuesPaidThruString or nullDate through which dues are paid (YYYY-MM-DD). null when the record has no dues date — treated as expired.
MemberTypeIDStringInternal CLIA member type identifier; included in all responses where a record is found

Agency-Specific Fields

FieldTypeDescription
NameStringAgency name
CLIA_CompanyIDStringCLIA's internal company ID
IndustryIDStringAgency's industry ID (mirrors the value sent in the request)
CityStringAgency's city (member responses only)
StateStringAgency's state (member responses only)
ZipCodeStringAgency's postal code (member responses only)
DuesPaidThruString or nullDate through which dues are paid (YYYY-MM-DD). null when the record has no dues date — treated as expired. Member responses only.
MemberTypeIDStringInternal CLIA member type identifier. Contact CLIA if your integration needs a key to these values. Member responses only.

Response Codes

CodeDescription
0No valid record found (includes last name mismatch)
1Record found but with limitations (expired dues, missing dues date, or not a Travel-Trade member)
2Valid, active membership

Example Requests and Responses

Agent Validation

Request

HTTP Request
GET /validate?membertype=agent&personalID=00002595&firstName=Jane&lastName=Doe
Headers:
  x-api-key: your-api-key

Valid Membership

200 OK — ResponseCode 2
{
  "Success": true,
  "ResponseCode": 2,
  "Message": "Valid membership",
  "FirstName": "Jane",
  "LastName": "Doe",
  "PersonalID": "00002595",
  "DuesPaidThru": "2026-12-31",
  "MembershipType": "Agent",
  "MemberTypeID": "5"
}

Expired Dues

200 OK — ResponseCode 1
{
  "Success": true,
  "ResponseCode": 1,
  "Message": "Dues are expired",
  "FirstName": "Jane",
  "LastName": "Doe",
  "PersonalID": "00002595",
  "DuesPaidThru": "2024-12-31",
  "MembershipType": "Agent",
  "MemberTypeID": "5"
}

Expired — Expired Travel-Trade Member Type

The record carries CLIA's expired Travel-Trade member type; the membership is expired regardless of dues date. The response carries the same full payload as other member outcomes.

200 OK — ResponseCode 1
{
  "Success": true,
  "ResponseCode": 1,
  "Message": "Dues are expired",
  "FirstName": "Jane",
  "LastName": "Doe",
  "PersonalID": "00002595",
  "DuesPaidThru": "2025-12-31",
  "MembershipType": "Agent",
  "MemberTypeID": "53"
}

Not a Travel-Trade Member

200 OK — ResponseCode 1
{
  "Success": true,
  "ResponseCode": 1,
  "Message": "Agent/Individual is not a Travel-Trade Member.",
  "PersonalID": "00002595",
  "MembershipType": "Non-Member",
  "MemberTypeID": "10"
}

Agency Validation

Request

HTTP Request
GET /validate?membertype=agency&agencyIndustryID=12345678
Headers:
  x-api-key: your-api-key

Valid Membership

200 OK — ResponseCode 2
{
  "Success": true,
  "ResponseCode": 2,
  "Message": "Valid membership",
  "MembershipType": "Agency",
  "Name": "Global Travel Agency",
  "CLIA_CompanyID": "98765",
  "IndustryID": "12345678",
  "City": "Miami",
  "State": "FL",
  "ZipCode": "33101",
  "DuesPaidThru": "2026-12-31",
  "MemberTypeID": "17"
}

Expired Dues

200 OK — ResponseCode 1
{
  "Success": true,
  "ResponseCode": 1,
  "Message": "Dues are expired",
  "MembershipType": "Agency",
  "Name": "Global Travel Agency",
  "CLIA_CompanyID": "98765",
  "IndustryID": "12345678",
  "City": "Miami",
  "State": "FL",
  "ZipCode": "33101",
  "DuesPaidThru": "2024-12-31",
  "MemberTypeID": "53"
}

Not a Travel-Trade Member

Address and dues fields are not included for non-member records.

200 OK — ResponseCode 1
{
  "Success": true,
  "ResponseCode": 1,
  "Message": "Agency/Company is not a Travel-Trade Member",
  "MembershipType": "Non-Member",
  "Name": "Global Travel Agency",
  "CLIA_CompanyID": "98765",
  "IndustryID": "12345678"
}

Error Responses

Authentication Error

401 Unauthorized
{
  "Success": false,
  "Message": "Invalid or missing API Key"
}

Missing or Invalid Parameters

400 Bad Request
{
  "Success": false,
  "Message": "membertype parameter is required and must be either 'agent' or 'agency'."
}
400 Bad Request
{
  "Success": false,
  "Message": "personalID must be at most 10 digits and contain only numbers."
}

Not Found

404 Not Found
{
  "Success": false,
  "ResponseCode": 0,
  "Message": "No valid record found.",
  "MembershipType": "Non-Member"
}
404 Not Found — Name Mismatch (agent only)
{
  "Success": false,
  "ResponseCode": 0,
  "Message": "No valid record found - Name Lookup Incorrect.",
  "MembershipType": "Agent"
}

Quota Limit Reached

429 Too Many Requests
{
  "Success": false,
  "Message": "Quota limit reached"
}

Server Error

Error details are captured in CLIA's server-side logs and are not exposed in the response. MembershipType reflects the entity type being validated (Agent or Agency).

500 Internal Server Error
{
  "Success": false,
  "Message": "An error occurred while processing the request.",
  "MembershipType": "Agent"
}

Notes