Data Export API request and response examples
About these examples
- The examples use placeholder hostnames, API keys, and printer IDs. Substitute the values for your own environment when you adapt them.
- Date and time values are formatted as local times in the timezone supplied with the
request, in the pattern
YYYY-MM-DDTHH:MM:SS.sss. - All durations are in milliseconds. All ink and flushing values are in cubic centimeters (cc).
- Examples are illustrative. Numeric values such as ink usage, page counts, and durations represent plausible operational data, not measurements from a specific printer.
GET /printers
Retrieves the printers available to the supplied API key. The endpoint takes no parameters.
Request:
GET https://rpi-data-export.app-devricohsoftware.com/api/v1/printers x-api-key: YOUR_API_KEY
Response (200 OK):
[
{
"printerName": "VC60000_Line1",
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"engines": 2,
"manufacturer": "Ricoh",
"model": "RICOH Pro VC60000",
"printerMode": "duplex",
"printerType": "continuous_feed",
"serialNumber": "Printer 1: 10-11111 and Printer 2: 10-22222",
"connectionStatus": "connected"
},
{
"printerName": "VC80_2",
"printerId": "0bc6b7b3-8df9-4293-cdd4-5ae3162c4d4c",
"engines": 2,
"manufacturer": "Ricoh",
"model": "RICOH Pro VC80000",
"printerMode": "duplex",
"printerType": "continuous_feed",
"serialNumber": "Printer 1: 10-33333 and Printer 2: 10-33334",
"connectionStatus": "not_connected"
},
{
"printerName": "IP 5000",
"printerId": "0f8726da-8a37-4c3b-8710-065d7c265122",
"engines": 1,
"manufacturer": "InfoPrint",
"model": "InfoPrint 5000 GP v3.17.129",
"printerMode": "simplex",
"printerType": "continuous_feed",
"serialNumber": "10-1111111",
"connectionStatus": "connected"
}
]
GET /jobs
Retrieves jobs processed by one or more printers within a time range. The example
requests a single printer for an eight-hour window in America/Denver local time, restricted to jobs that finished printing successfully.
Request:
GET https://rpi-data-export.app-devricohsoftware.com/api/v1/jobs
?printerId=f7932e31-6545-4bff-8971-f84ef5f5b3dc
&timezone=America/Denver
&startDateTime=2026-03-15T08:00:00
&endDateTime=2026-03-15T16:00:00
&jobState=printed
x-api-key: YOUR_API_KEY
Response (200 OK):
[
{
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"jobId": "5ae3162c4d4c-1771233448485-Cust_MH_Arena.pdf-13925",
"jobName": "Cust_MH_Arena.pdf",
"jobPrintingSide": "duplex",
"jobAction": "printed",
"jobStartTime": "2026-03-15T08:14:22.000",
"jobEndTime": "2026-03-15T08:47:51.000",
"jobDuration": 2009000,
"printedCopies": 1,
"printedPages": 4800,
"printedImpressions": 4800,
"printedSheets": 2400,
"printedRollFeet": 1640.5,
"printedRollMeters": 500.02,
"inkC": 184.6,
"inkM": 172.3,
"inkY": 198.1,
"inkK": 245.7,
"flushingC": 2.4,
"flushingM": 2.4,
"flushingY": 2.4,
"flushingK": 2.4
},
{
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"jobId": "5ae3162c4d4c-1771237012003-DM_Spring_Promo.pdf-13926",
"jobName": "DM_Spring_Promo.pdf",
"jobPrintingSide": "duplex",
"jobAction": "printed",
"jobStartTime": "2026-03-15T09:22:10.000",
"jobEndTime": "2026-03-15T11:05:44.000",
"jobDuration": 6214000,
"printedCopies": 25000,
"printedPages": 50000,
"printedImpressions": 50000,
"printedSheets": 25000,
"printedRollFeet": 17082.0,
"printedRollMeters": 5206.9,
"inkC": 1923.4,
"inkM": 1810.7,
"inkY": 2055.2,
"inkK": 2540.8,
"flushingC": 12.6,
"flushingM": 12.6,
"flushingY": 12.6,
"flushingK": 12.6
}
]
An empty array ([]) is a valid response and means that no jobs matched the request.
GET /printer-states (aggregated history)
The default response mode returns one row per state interval per engine, with full duration and history fields. The example requests a four-hour window for one printer.
Request:
GET https://rpi-data-export.app-devricohsoftware.com/api/v1/printer-states
?printerId=f7932e31-6545-4bff-8971-f84ef5f5b3dc
&timezone=America/Denver
&startDateTime=2026-03-15T08:00:00
&endDateTime=2026-03-15T12:00:00
x-api-key: YOUR_API_KEY
Response (200 OK):
[
{
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"engine": "engine_1",
"stateCategory": "idle",
"printerState": "ready",
"printerStateDuration": 854000,
"historyStartTime": "2026-03-15T08:00:00.000",
"historyEndTime": "2026-03-15T08:14:14.000"
},
{
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"engine": "engine_1",
"stateCategory": "up",
"printerState": "printing",
"printerStateDuration": 2017000,
"historyStartTime": "2026-03-15T08:14:14.000",
"historyEndTime": "2026-03-15T08:47:51.000"
},
{
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"engine": "engine_1",
"stateCategory": "down",
"printerState": "maintenance",
"printerStateDuration": 1980000,
"historyStartTime": "2026-03-15T08:47:51.000",
"historyEndTime": "2026-03-15T09:20:51.000"
},
{
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"engine": "engine_2",
"stateCategory": "idle",
"printerState": "sleeping",
"printerStateDuration": 14400000,
"historyStartTime": "2026-03-15T08:00:00.000",
"historyEndTime": "2026-03-15T12:00:00.000"
}
]
GET /printer-states (current state only)
When you set currentState=true, the response includes one row per engine with the current state. Duration and history
fields are omitted.
Request:
GET https://rpi-data-export.app-devricohsoftware.com/api/v1/printer-states
?printerId=f7932e31-6545-4bff-8971-f84ef5f5b3dc
&timezone=America/Denver
¤tState=true
x-api-key: YOUR_API_KEY
Response (200 OK):
[
{
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"engine": "engine_1",
"stateCategory": "up",
"printerState": "printing"
},
{
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"engine": "engine_2",
"stateCategory": "idle",
"printerState": "ready"
}
]
GET /printer-states (state category only)
When you set stateCategoryOnly=true, the response omits the raw printerState field and reports only the high-level category. Duration and history fields are retained.
Request:
GET https://rpi-data-export.app-devricohsoftware.com/api/v1/printer-states
?printerId=f7932e31-6545-4bff-8971-f84ef5f5b3dc
&timezone=America/Denver
&startDateTime=2026-03-15T08:00:00
&endDateTime=2026-03-15T12:00:00
&stateCategoryOnly=true
x-api-key: YOUR_API_KEY
Response (200 OK):
[
{
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"engine": "engine_1",
"stateCategory": "idle",
"printerStateDuration": 854000,
"historyStartTime": "2026-03-15T08:00:00.000",
"historyEndTime": "2026-03-15T08:14:14.000"
},
{
"printerId": "f7932e31-6545-4bff-8971-f84ef5f5b3dc",
"engine": "engine_1",
"stateCategory": "up",
"printerStateDuration": 2017000,
"historyStartTime": "2026-03-15T08:14:14.000",
"historyEndTime": "2026-03-15T08:47:51.000"
}
]
Example error responses
Every error response uses the same structure: a JSON object with a code, a message, and a numeric statusCode. Some error codes include additional fields, as noted.
400 Bad Request—invalid timezone:
{
"code": "ERR_INVALID_TIMEZONE",
"message": "The supplied timezone is not a valid IANA timezone identifier.",
"statusCode": 400
}
400 Bad Request—missing required parameter:
{
"code": "ERR_MISSING_PRINTER_ID",
"message": "At least one printerId value is required.",
"statusCode": 400
}
400 Bad Request—date range exceeds the maximum allowed:
{
"code": "ERR_DATE_RANGE_EXCEEDED",
"message": "The requested date range exceeds the maximum allowed range.",
"statusCode": 400
}
401 Unauthorized—invalid API key:
{
"code": "ERR_INVALID_APIKEY",
"message": "Failed to validate API key.",
"statusCode": 401
}
403 Forbidden—request includes a printer the API key cannot access:
{
"code": "ERR_UNAUTHORIZED_PRINTERS",
"message": "Unauthorized printers.",
"statusCode": 403
}
413 Payload Too Large—response would exceed the size limit:
{
"code": "ERR_RESPONSE_LIMIT_EXCEEDED",
"message": "The response would exceed the maximum allowed size. Narrow the date range or request fewer printers.",
"statusCode": 413,
"maxJobs": 8000
}
500 Internal Server Error:
{
"code": "ERR_INTERNAL_SERVER_ERROR",
"message": "An internal server error occurred.",
"statusCode": 500
}