Skip to content

Military Search

Verified against source (20)

  • qbo4.ContactServices.QMS.WebApi/readme.md
  • Controllers/SCRAController.cs
  • Controllers/MLAController.cs
  • qbo4.ContactServices.QMS.WebApi/QMSInstantAPIOptions.cs
  • qbo4.ContactServices.QMS.WebApi/appsettings.json
  • CSharp/Models.cs
  • qbo4.ContactServices.QMS.Models/InstantSearchSCRAOptions.cs
  • qbo4.ContactServices.QMS.Models/InstantSearchMLAOptions.cs
  • qbo4.ContactServices.QMS.Models/InstantSearchSCRAResponse.cs
  • qbo4.ContactServices.QMS.Models/InstantSearchMLAResponse.cs
  • qbo4.ContactServices.QMS.Provider/SCRASingleSearchProvider.cs
  • qbo4.DMDC.Models/SCRARequest.cs
  • qbo4.DMDC.Models/MLARequest.cs
  • qbo4.DMDC.Models/SCRAResponse.cs
  • qbo4.DMDC.Models/MLAResponse.cs
  • Options/ParsePermutateOptions.cs
  • qbo4.DMDC/DMDC.cs
  • Extensions/ProcessExtensions.cs
  • Config/Setup.QmsIntegrationNearRealTime.xml
  • Process/QMSOrder.Request.xslt

The Military Search instant API runs one SCRA or MLA search per request and returns DMDC’s results in the response. It is a REST API with JSON bodies, documented by an OpenAPI specification and a ReDoc reference.

Environment Host
Production https://services.quandis.io
UAT (testing) https://uatservices.quandis.io

Quandis issues separate keys for testing and production. A Postman workspace has ready-made requests.

Check current API availability on the Quandis status page ↗.

Verb Path Purpose
POST /api/military/scra/instant/{clientID?} SCRA instant search
POST /api/military/mla/instant/{clientID?} MLA instant search
GET /api/military/scra/healthcheck SCRA service health (no authentication)
GET /api/military/mla/healthcheck MLA service health (no authentication)

{clientID} is optional: your own reference number for the search (up to 50 characters). You can pass it in the path or as clientID in the body; it’s returned in the response.

Send either:

  • an API key in the X-ApiKey header, or
  • a bearer token in the Authorization header. Exchange your access key and secret key for a token with the token operation in the API reference.
POST /api/military/scra/instant/LN-1001
X-ApiKey: {apiKey}
X-Request-ID: 6f1c2a90-3e1b-4c55-9a43-2d0d7f5f8c11
Content-Type: application/json

Send a unique X-Request-ID with each search. If you repeat a request with the same ID (for example after a timeout), you get the original response back instead of a second search. Responses are kept for 24 hours, per user and per search type (SCRA or MLA).

POST /api/military/scra/instant/LN-1001
X-ApiKey: {apiKey}
Content-Type: application/json
{
"firstName": "John",
"lastName": "Doe",
"ssn": "123456788",
"dateOfInterest": "2026-09-01",
"certificate": true
}
Field Type Notes
lastName string Required. Letters, spaces, hyphens, and apostrophes.
ssn string 123456789 or 123-45-6789. An SSN or a birthDate is required.
birthDate date On or after 1900-01-01; not in the future.
firstName string Up to 20 characters.
middleName string
dateOfInterest date The date status is checked for. On or after 1985-09-30; not in the future. Defaults to today.
certificate boolean Return DMDC certificates. Default false.
clientID string Your reference, up to 50 characters.
parsePermutateOptions object Name parsing and permutation settings. See Permutation options.
{
"id": 69629342,
"clientID": "LN-1001",
"covered": false,
"results": [
{
"id": "PQCZNKZHM36NKKS",
"personRequest": {
"firstName": "John",
"lastName": "Doe",
"activeDutyDate": "2026-09-01T00:00:00"
},
"eligibility": {
"dateOfInterest": "2026-09-01T00:00:00",
"covered": false,
"activeDutyCovered": false,
"earlyIndicationCovered": false,
"heraCovered": false,
"matchReasonCode": "NO_MATCH",
"transactionId": "PQCZNKZHM36NKKS"
}
}
]
}
Field Meaning
id Quandis order ID for the search.
covered true if any result is covered.
results[] One entry per name variation searched.
results[].eligibility.activeDuty* Active-duty coverage on the date of interest: …Covered, …StartDate, …EndDate, …ServiceComponentCode, …ServiceComponentString.
results[].eligibility.earlyIndication* Notification of a future call-up, with the same set of fields.
results[].eligibility.hera* Service that ended within the lookback window before the date of interest, with the same set of fields.
results[].eligibility.matchReasonCode DMDC’s match reason, such as NO_MATCH.
results[].eligibility.content The certificate, base64-encoded, when certificate is true.
POST /api/military/mla/instant/LN-1001
X-ApiKey: {apiKey}
Content-Type: application/json
{
"firstName": "John",
"lastName": "Doe",
"ssn": "123456788",
"birthDate": "2000-12-07"
}
Field Type Notes
lastName string Required.
birthDate date Required. Not in the future.
ssn or itin string One is required. 123456789 or 123-45-6789. If both are sent, the SSN is used. An ITIN must start with 9.
firstName, middleName, certificate, clientID, parsePermutateOptions As for SCRA.

The response has the same shape as SCRA. Each result’s eligibility has covered and certificateType, and person.pnIdTypCd shows the identifier used (S for SSN, I for ITIN).

Code When
200 Search complete (check covered and results)
401 Missing or invalid API key or token
417 Declared by the search operations; see the API reference
429 Rate limit reached; retry later with the same X-Request-ID

The health checks return 200 when healthy and 503 when not.

parsePermutateOptions controls how the name is parsed and expanded before searching. Every variation is searched and returned as its own result. Property names are camelCase and enum values are strings:

"parsePermutateOptions": {
"transpose": true,
"forceHyphen": true,
"toggleMiddleName": true,
"includeSuffix": "OriginalOnly",
"middleNameParse": "AppendMiddleInitialAll"
}

Set "parseModel": "None" to search the name exactly as sent. What each option does, with examples, is in Permutations in the Power user view.

QBO’s near real-time integration sends an XML order (options, user-defined options such as SourceReferenceNumber, and contacts) to:

POST /api/military/search
X-ApiKey: {apiKey}
Content-Type: application/xml

When the order is ready, Military Search resumes the waiting QBO workflow by calling /api/process/qmsbatchorderproductready/{processID} on your QBO host, as a user in the QDS role. QBO then downloads and imports the results. The setup is described in the Power user view.