Appearance
Batches API: Monitors
The Batches API lets you create monitors, named collections of subjects that periodically run through Instant Criminal Search. Each monitor runs on a configurable schedule and stores results over time.
Current search support
The Batches API currently supports only Instant Criminal Search. County Verification Search and Person Search are not yet available for batch monitoring.
See Subjects for managing the individuals within a monitor and Results for reviewing completed monitor searches.
Authentication
All requests require an API key passed as a Bearer token in the Authorization header:
Authorization: Bearer your-api-keyMonitor Object
| Field | Type | Description |
|---|---|---|
id | String (numeric) | Unique monitor identifier |
status | String | Status of the monitor's underlying search (currently new) |
title | String | Monitor name |
description | String | null | Optional description |
frequency | String | Run frequency code (e.g., month) |
frequencyTitle | String | Human-readable frequency label |
lastRunDate | DateTime | null | When the monitor last executed |
nextRunDate | DateTime | null | When the monitor is next scheduled to run |
createDate | DateTime | When the monitor was created |
Frequency Values
| Value | Description |
|---|---|
day | Daily |
week | Weekly |
month | Monthly (default) |
annual | Annual |
List Monitors
GET /batch/Returns a paginated list of all monitors for the authenticated account.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | Integer | 1 | Page number |
pageSize | Integer | 30 | Records per page |
search | String | — | Filter monitors by title |
orderBy | String | — | Sort field: createDate, lastRunDate, nextRunDate, title |
orderDirection | String | asc | Sort direction: asc or desc |
Response
json
{
"success": true,
"paging": {
"size": "30",
"num": "1",
"hasMore": false
},
"data": [
{
"id": "101",
"status": "new",
"title": "Employee Background Checks",
"description": "Monthly checks for all active employees",
"frequency": "month",
"frequencyTitle": "Monthly",
"lastRunDate": "2026-03-01T00:00:00",
"nextRunDate": "2026-04-01T00:00:00",
"createDate": "2025-01-15T10:30:00"
}
]
}Create a Monitor
POST /batch/Creates a new monitor.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | String | Yes | Name for the monitor |
description | String | No | Optional description |
frequency | String | No | Run frequency. Default: month |
options | Object | No | Instant Criminal Search options applied to all subjects. See Search Options |
clientRequestId | String (≤36) | No | Client-supplied correlation ID |
bash
curl -X POST "https://api.infocusinfo.com/batch/" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"title": "Employee Background Checks",
"description": "Monthly checks for all active employees",
"frequency": "month",
"options": {
"birthDate": {
"includePartial": true
}
}
}'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/"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your-api-key")
.method("POST", HttpRequest.BodyPublishers.ofString("""
{
"title": "Employee Background Checks",
"description": "Monthly checks for all active employees",
"frequency": "month",
"options": {
"birthDate": {
"includePartial": true
}
}
}
"""))
.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/");
request.Headers.Add("Authorization", "Bearer your-api-key");
request.Content = new StringContent("""
{
"title": "Employee Background Checks",
"description": "Monthly checks for all active employees",
"frequency": "month",
"options": {
"birthDate": {
"includePartial": true
}
}
}
""", 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/
Content-Type: application/json
Authorization: Bearer your-api-key
{
"title": "Employee Background Checks",
"description": "Monthly checks for all active employees",
"frequency": "month",
"options": {
"birthDate": {
"includePartial": true
}
}
}Response
json
{
"success": true,
"message": "Batch was saved successfully.",
"data": {
"id": "101",
"status": "new",
"title": "Employee Background Checks",
"description": "Monthly checks for all active employees",
"frequency": "month",
"frequencyTitle": "Monthly",
"lastRunDate": null,
"nextRunDate": "2026-04-01T00:00:00",
"createDate": "2026-03-26T12:00:00"
}
}Get a Monitor
GET /batch/:idReturns details for a specific monitor.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | Integer | Monitor ID |
Response
json
{
"success": true,
"data": {
"id": "101",
"status": "new",
"title": "Employee Background Checks",
"description": "Monthly checks for all active employees",
"frequency": "month",
"frequencyTitle": "Monthly",
"lastRunDate": null,
"nextRunDate": "2026-04-01T00:00:00",
"createDate": "2026-03-26T12:00:00"
}
}Response Codes
| Code | Description |
|---|---|
200 | Monitor returned successfully |
400 | Missing batch ID |
404 | Monitor not found |
Update a Monitor
POST /batch/:id
PUT /batch/:idBoth POST and PUT update an existing monitor. The request body is the same as Create a Monitor.
bash
curl -X PUT "https://api.infocusinfo.com/batch/101" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"title": "Employee Background Checks - Annual",
"frequency": "annual"
}'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"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your-api-key")
.method("PUT", HttpRequest.BodyPublishers.ofString("""
{
"title": "Employee Background Checks - Annual",
"frequency": "annual"
}
"""))
.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");
request.Headers.Add("Authorization", "Bearer your-api-key");
request.Content = new StringContent("""
{
"title": "Employee Background Checks - Annual",
"frequency": "annual"
}
""", 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
Content-Type: application/json
Authorization: Bearer your-api-key
{
"title": "Employee Background Checks - Annual",
"frequency": "annual"
}Response
The response has the same structure as the Create a Monitor response, including the updated monitor object.
Response Codes
| Code | Description |
|---|---|
200 | Monitor updated successfully |
404 | Monitor not found |
Disable a Monitor
DELETE /batch/:idDisables the monitor. Disabled monitors will no longer run on schedule.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | Integer | Monitor ID |
Response
json
{
"success": true,
"message": "Batch was disabled successfully"
}Response Codes
| Code | Description |
|---|---|
200 | Monitor disabled |
400 | Missing batch ID |
404 | Monitor not found |