Appearance
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-keySubject Object
| Field | Type | Description |
|---|---|---|
id | String (numeric) | Unique subject identifier |
firstName | String | First name |
middleName | String | null | Middle name |
lastName | String | Last name |
birthYear | String (numeric) | null | Year of birth |
birthMonth | String (numeric) | null | Month of birth (1–12) |
birthDay | String (numeric) | null | Day of birth (1–31) |
alias | Array | null | Stored alternate names; included in create, detail, and update responses, but not list responses |
createDate | DateTime | When the subject was added; included in list responses only |
List Subjects
GET /batch/:id/subjectReturns a paginated list of all subjects in a monitor.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | Integer | Monitor ID |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | Integer | 1 | Page number |
pageSize | Integer | 30 | Records per page |
search | String | — | Filter by name |
orderBy | String | firstName | Sort field: firstName, lastName, birthDay, birthMonth, birthYear, createDate |
orderDirection | String | asc | Sort 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
| Code | Description |
|---|---|
200 | Subjects returned successfully |
400 | Missing batch ID |
500 | Server error |
Add a Subject
POST /batch/:id/subjectAdds a new subject to the monitor.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | Integer | Monitor ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name.firstName | String | Yes | First name |
name.lastName | String | Yes | Last name |
name.middleName | String | No | Middle name |
name.suffix | String | No | Name suffix (e.g., Jr, III) |
birthDate.year | Integer | No | Birth year |
birthDate.month | Integer | No | Birth month (1–12) |
birthDate.day | Integer | No | Birth day (1–31) |
alias | Array | No | Alternate 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
| Code | Description |
|---|---|
200 | Subject added successfully |
400 | Missing batch ID |
404 | Monitor not found |
Get a Subject
GET /batch/:id/:subjectIdReturns details for a specific subject within a monitor.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | Integer | Monitor ID |
subjectId | Integer | Subject ID |
Response
json
{
"success": true,
"data": {
"id": "501",
"firstName": "Jane",
"middleName": null,
"lastName": "Doe",
"birthYear": "1990",
"birthMonth": "8",
"birthDay": "22",
"alias": null
}
}Response Codes
| Code | Description |
|---|---|
200 | Subject returned |
400 | Missing batch ID or subject ID |
403 | Permission denied |
404 | Subject not found |
Update a Subject
POST /batch/:id/:subjectId
PUT /batch/:id/:subjectIdBoth 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
| Code | Description |
|---|---|
200 | Subject updated |
400 | Missing batch ID |
404 | Monitor or subject not found |
Disable a Subject
DELETE /batch/:id/:subjectIdDisables a subject within the monitor. Disabled subjects will no longer be searched on future runs.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | Integer | Monitor ID |
subjectId | Integer | Subject ID |
Response
json
{
"success": true,
"message": "Subject was disabled successfully"
}Response Codes
| Code | Description |
|---|---|
200 | Subject disabled |
400 | Missing batch ID or subject ID |
404 | Subject not found for this batch |