Skip to content

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-key

Monitor Object ​

FieldTypeDescription
idString (numeric)Unique monitor identifier
statusStringStatus of the monitor's underlying search (currently new)
titleStringMonitor name
descriptionString | nullOptional description
frequencyStringRun frequency code (e.g., month)
frequencyTitleStringHuman-readable frequency label
lastRunDateDateTime | nullWhen the monitor last executed
nextRunDateDateTime | nullWhen the monitor is next scheduled to run
createDateDateTimeWhen the monitor was created

Frequency Values ​

ValueDescription
dayDaily
weekWeekly
monthMonthly (default)
annualAnnual

List Monitors ​

GET /batch/

Returns a paginated list of all monitors for the authenticated account.

Query Parameters ​

ParameterTypeDefaultDescription
pageInteger1Page number
pageSizeInteger30Records per page
searchString—Filter monitors by title
orderByString—Sort field: createDate, lastRunDate, nextRunDate, title
orderDirectionStringascSort 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 ​

FieldTypeRequiredDescription
titleStringYesName for the monitor
descriptionStringNoOptional description
frequencyStringNoRun frequency. Default: month
optionsObjectNoInstant Criminal Search options applied to all subjects. See Search Options
clientRequestIdString (≤36)NoClient-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/:id

Returns details for a specific monitor.

Path Parameters ​

ParameterTypeDescription
idIntegerMonitor 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 ​

CodeDescription
200Monitor returned successfully
400Missing batch ID
404Monitor not found

Update a Monitor ​

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

Both 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 ​

CodeDescription
200Monitor updated successfully
404Monitor not found

Disable a Monitor ​

DELETE /batch/:id

Disables the monitor. Disabled monitors will no longer run on schedule.

Path Parameters ​

ParameterTypeDescription
idIntegerMonitor ID

Response ​

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

Response Codes ​

CodeDescription
200Monitor disabled
400Missing batch ID
404Monitor not found