Skip to content

Batches API: Subjects ​

Subjects are the individuals being monitored within a monitor (batch). Each subject runs through Instant Criminal Search whenever the monitor runs.

Authentication ​

All requests require an API key passed as a Bearer token in the Authorization header:

Authorization: Bearer your-api-key

Subject Object ​

FieldTypeDescription
idString (numeric)Unique subject identifier
firstNameStringFirst name
middleNameString | nullMiddle name
lastNameStringLast name
birthYearString (numeric) | nullYear of birth
birthMonthString (numeric) | nullMonth of birth (1–12)
birthDayString (numeric) | nullDay of birth (1–31)
aliasArray | nullStored alternate names; included in create, detail, and update responses, but not list responses
createDateDateTimeWhen the subject was added; included in list responses only

List Subjects ​

GET /batch/:id/subject

Returns a paginated list of all subjects in a monitor.

Path Parameters ​

ParameterTypeDescription
idIntegerMonitor ID

Query Parameters ​

ParameterTypeDefaultDescription
pageInteger1Page number
pageSizeInteger30Records per page
searchString—Filter by name
orderByStringfirstNameSort field: firstName, lastName, birthDay, birthMonth, birthYear, createDate
orderDirectionStringascSort direction: asc or desc

Response ​

json
{
  "success": true,
  "paging": {
    "size": "30",
    "num": "1",
    "hasMore": false
  },
  "data": [
    {
      "id": "501",
      "firstName": "Jane",
      "middleName": null,
      "lastName": "Doe",
      "birthYear": "1990",
      "birthMonth": "8",
      "birthDay": "22",
      "createDate": "2026-03-01T09:00:00"
    }
  ]
}

Response Codes ​

CodeDescription
200Subjects returned successfully
400Missing batch ID
500Server error

Add a Subject ​

POST /batch/:id/subject

Adds a new subject to the monitor.

Path Parameters ​

ParameterTypeDescription
idIntegerMonitor ID

Request Body ​

FieldTypeRequiredDescription
name.firstNameStringYesFirst name
name.lastNameStringYesLast name
name.middleNameStringNoMiddle name
name.suffixStringNoName suffix (e.g., Jr, III)
birthDate.yearIntegerNoBirth year
birthDate.monthIntegerNoBirth month (1–12)
birthDate.dayIntegerNoBirth day (1–31)
aliasArrayNoAlternate names. Each entry has the same structure as name
bash
curl -X POST "https://api.infocusinfo.com/batch/101/subject" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
  "name": {
    "firstName": "Jane",
    "lastName": "Doe"
  },
  "birthDate": {
    "year": 1990,
    "month": 8,
    "day": 22
  }
}'
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

var request = HttpRequest.newBuilder(URI.create("https://api.infocusinfo.com/batch/101/subject"))
    .header("Content-Type", "application/json")
    .header("Authorization", "Bearer your-api-key")
    .method("POST", HttpRequest.BodyPublishers.ofString("""
        {
          "name": {
            "firstName": "Jane",
            "lastName": "Doe"
          },
          "birthDate": {
            "year": 1990,
            "month": 8,
            "day": 22
          }
        }
        """))
    .build();

var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
csharp
using System.Net.Http;
using System.Text;

using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.infocusinfo.com/batch/101/subject");
request.Headers.Add("Authorization", "Bearer your-api-key");
request.Content = new StringContent("""
    {
      "name": {
        "firstName": "Jane",
        "lastName": "Doe"
      },
      "birthDate": {
        "year": 1990,
        "month": 8,
        "day": 22
      }
    }
    """, Encoding.UTF8, "application/json");

using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");
http
POST https://api.infocusinfo.com/batch/101/subject
Content-Type: application/json
Authorization: Bearer your-api-key

{
  "name": {
    "firstName": "Jane",
    "lastName": "Doe"
  },
  "birthDate": {
    "year": 1990,
    "month": 8,
    "day": 22
  }
}

Response ​

json
{
  "success": true,
  "data": {
    "id": "501",
    "firstName": "Jane",
    "middleName": null,
    "lastName": "Doe",
    "birthYear": "1990",
    "birthMonth": "8",
    "birthDay": "22",
    "alias": []
  }
}

Response Codes ​

CodeDescription
200Subject added successfully
400Missing batch ID
404Monitor not found

Get a Subject ​

GET /batch/:id/:subjectId

Returns details for a specific subject within a monitor.

Path Parameters ​

ParameterTypeDescription
idIntegerMonitor ID
subjectIdIntegerSubject ID

Response ​

json
{
  "success": true,
  "data": {
    "id": "501",
    "firstName": "Jane",
    "middleName": null,
    "lastName": "Doe",
    "birthYear": "1990",
    "birthMonth": "8",
    "birthDay": "22",
    "alias": null
  }
}

Response Codes ​

CodeDescription
200Subject returned
400Missing batch ID or subject ID
403Permission denied
404Subject not found

Update a Subject ​

POST /batch/:id/:subjectId
PUT  /batch/:id/:subjectId

Both POST and PUT update an existing subject. The request body is the same as Add a Subject.

bash
curl -X PUT "https://api.infocusinfo.com/batch/101/501" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
  "name": {
    "firstName": "Jane",
    "middleName": "M",
    "lastName": "Doe"
  },
  "birthDate": {
    "year": 1990,
    "month": 8,
    "day": 22
  },
  "alias": [
    {
      "firstName": "Jenny",
      "lastName": "Doe"
    }
  ]
}'
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

var request = HttpRequest.newBuilder(URI.create("https://api.infocusinfo.com/batch/101/501"))
    .header("Content-Type", "application/json")
    .header("Authorization", "Bearer your-api-key")
    .method("PUT", HttpRequest.BodyPublishers.ofString("""
        {
          "name": {
            "firstName": "Jane",
            "middleName": "M",
            "lastName": "Doe"
          },
          "birthDate": {
            "year": 1990,
            "month": 8,
            "day": 22
          },
          "alias": [
            {
              "firstName": "Jenny",
              "lastName": "Doe"
            }
          ]
        }
        """))
    .build();

var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
csharp
using System.Net.Http;
using System.Text;

using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Put, "https://api.infocusinfo.com/batch/101/501");
request.Headers.Add("Authorization", "Bearer your-api-key");
request.Content = new StringContent("""
    {
      "name": {
        "firstName": "Jane",
        "middleName": "M",
        "lastName": "Doe"
      },
      "birthDate": {
        "year": 1990,
        "month": 8,
        "day": 22
      },
      "alias": [
        {
          "firstName": "Jenny",
          "lastName": "Doe"
        }
      ]
    }
    """, Encoding.UTF8, "application/json");

using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");
http
PUT https://api.infocusinfo.com/batch/101/501
Content-Type: application/json
Authorization: Bearer your-api-key

{
  "name": {
    "firstName": "Jane",
    "middleName": "M",
    "lastName": "Doe"
  },
  "birthDate": {
    "year": 1990,
    "month": 8,
    "day": 22
  },
  "alias": [
    {
      "firstName": "Jenny",
      "lastName": "Doe"
    }
  ]
}

Response ​

json
{
  "success": true,
  "data": {
    "id": "501",
    "firstName": "Jane",
    "middleName": "M",
    "lastName": "Doe",
    "birthYear": "1990",
    "birthMonth": "8",
    "birthDay": "22",
    "alias": [
      {
        "firstName": "Jenny",
        "middleName": null,
        "lastName": "Doe",
        "suffix": null
      }
    ]
  }
}

Response Codes ​

CodeDescription
200Subject updated
400Missing batch ID
404Monitor or subject not found

Disable a Subject ​

DELETE /batch/:id/:subjectId

Disables a subject within the monitor. Disabled subjects will no longer be searched on future runs.

Path Parameters ​

ParameterTypeDescription
idIntegerMonitor ID
subjectIdIntegerSubject ID

Response ​

json
{
  "success": true,
  "message": "Subject was disabled successfully"
}

Response Codes ​

CodeDescription
200Subject disabled
400Missing batch ID or subject ID
404Subject not found for this batch