1 FOIAXpress API Introduction
1.1 About the API
Weāve created the FOIAXpress API to allow for integration with external data monitoring applications. This is a standalone API that is included in the FOIAXpress installation package. This API must be installed separately from the FOIAXpress application, and users of the API must be authenticated application users with permissions to access the data being queried.
1.2 About this Manual
This manual covers instructions on accessing and using the included API methods. The following major topics are included:
Accessing the FOIAXpress API: Token creation, accessing the API, and viewing logs
Request Methods: Methods to query Request data
Audit Methods: Methods to query user actions and logins
2 Authentication using Access Token Tool
Each API user must be authenticated before they are able to use the API. Your administrator has an Access Token Tool which can be used to create a token for you as an API user. These tokens are time limited and must be provisioned again after expiration. Please contact your administrator to request an access token.
2.1 How to Access the FOIAXpress API
If you have been provided with a valid access token, you can access the FOIAXpress API from your desktop search bar. Search for FOIAXpress API in your program files and select this program to open the FOIAXpress API application.
The methods available in the API are described in the Request Methods and Audit Methods sections of this document.
NOTE: You must have Request Type or Audit permissions within the application to use the Request and Audit methods, respectively.
The following sections provide details and steps to use the Request methods to query request data.
3 Request Methods
3.1 Get Request Status
You can use the Get Request Status method to retrieve the status of a specific request. This requires the exact ID of the request you are querying.
NOTE: You must have Request Type permissions within the application to access this method.
To use the Get Request Status function:
Under Requests, locate the id string field and enter the Request ID exactly as it appears in the application, then click Execute:

After clicking Execute, the request data appears in the Response Body as shown below.

There are options to (A) Copy this to your clipboard, or (B) Download the response body.
To use this function via URL, use the following string with the application URL in place of <fx-api-url>, and replacing the {id} with the request ID you are querying:
<fx-api-url>/requests/{id}/status An example URL is shown below:
3.2 Get Request
You can use the Get Request API to query for data on a specific request. This requires the exact Request ID.
NOTE: You must have Request Type permissions within the application to access this method.
This method returns the following Request details:
visibleRequestID: ID of the request
requestStatus: Status of the request
receivedDate: Date when the request was received.
closedDate: Date when the request was closed. It is null if request is active
requestTypeName: Request Type
actionOffice: Action Office
deliveryMode: Mode of delivery of response to the requester
feeWaiverStatus: Fee waiver status of the request
paymentStatus: Payment Status of the request
priority: Priority of the request
receivedMode: How the request was received
requesterCategory: Category to which the requester belongs to
reviewStatus: Review status of the request
targetDate: Target date to close the request
To use the Get Request Status function:
Under Requests, locate the id string field and enter the Request ID exactly as it appears in the application, then click Execute:

After clicking Execute, the request data appears in the Response Body as shown below.
.jpg?sv=2022-11-02&spr=https&st=2026-03-10T06%3A44%3A35Z&se=2026-03-10T07%3A04%3A35Z&sr=c&sp=r&sig=Zl9K2N%2FtwPLn5YWGhV9bTyQrEqVSol6rRTLo82ryg6k%3D)
There are options to (A) Copy this to your clipboard, or (B) Download the response body.
3.3 Get Requests
You can use the Get Requests API to query for requests with matching attributes.
NOTE: You must have Request Type permissions within the application to access this method.
3.3.1 Parameters
The parameters available within the Get Requests method are outlined in the following tables. Request Status parameter options:
Parameter | Attribute |
|---|---|
Need | On Hold-Need Info/Clarification |
CWithheld | On Hold-Fee Related |
DAdded | Documents Added |
DD | Documents Delivered |
DF | Delivery Failed |
DP | Delivery Pending |
Amended | Amended |
Assigned | Assigned |
Canceled | Canceled |
Closed | Closed |
Completed | Disposition Accepted |
Received | Received |
Screened | Perfected |
Parameter | Attribute |
|---|---|
ReqforDocs | Request for Docs Sent |
RvwPending | Review Pending |
RvwAprvd | Review Approved |
RvwDisApvd | Review Disapproved |
DAddRvwLog | Documents Added to Review Log |
Request Type Name Parameters:
Parameter | Example |
|---|---|
Request Type name, as found in Administration > Request Management | āFOIAā, āFOIA,APPā |
Action Office parameter options:
Parameter | Example |
|---|---|
Office Codes, as found in Administration > Organization Setup | āHQā, āHQ,DCā |
3.3.2 Using the Get Requests Method
Follow the steps below to use the Get Requests method:
Under Post/requests, use the Request body to customize the query. Beside each parameter you are using, enter the Request data that you would like returned in the results:

The pageSize and pageNumber fields are required and configure the formatting for the returned results. pageSize indicates the number of items returned per page, and pageNumber dictates the current page number.
If you are using the receivedDateFrom or closedDateFrom fields, you must also use the receivedDateTo and closedDateTo fields, respectively.
NOTE: Dates follow UTC format and will take the hours and minutes as 00:00 unless specified. To fetch values for a specific date, either specify the time or use the following date. For example, to fetch values for 11/1/2023, use either 2023-11-01T23:59Z or 2023-11-02.
For details on each parameter, see the Get Request Parameters section. Remove any parameters you are not using in the query.
After executing the method, the output returns all Requests matching the parameters used in the Request Body.
3.4 Requests Count
This method returns the total number of requests found for the requested ID.
3.4.1 Parameters
{
"visibleRequestIDs": [ "string"
],
"receivedDateFrom": "2024-04-09T15:56:23.647Z", "receivedDateTo": "2024-04-09T15:56:23.647Z", "closedDateFrom": "2024-04-09T15:56:23.647Z", "closedDateTo": "2024-04-09T15:56:23.647Z",
"requestStatus": [ "string"
],
"requestTypeName": [ "string"
],
"actionOffice": [ "string"
]}
3.4.2 Output
The number of requests that match with the filter

3.5 Request/Update request
Update a request with the information that the user sent via JSON.
3.5.1 Parameters
{
"description": "string",
"requestedDate": "2024-04-09T15:57:02.503Z", "receivedDate": "2024-04-09T15:57:02.503Z",
"officeCode": "string", "requesterFirstName": "string", "requesterLastName": "string", "requesterEmail": "string",
"requesterCountry": "string", "requesterZipCode": "string", "requestUserEmail": "string", "priority": "string", "deliveryMode": "string", "receiveMode": "string", "requesterCategory": "string", "address1": "string", "address2": "string",
"city": "string",
"state": "string", "homePhone": "string", "workPhone": "string", "requestCustomFields": [
{
"fieldName": "string", "dataType": "string", "value": "string"
}
],
"requestDescriptionAttachments": [
{
"contentType": "string", "fileData": "string", "fileName": "string", "fileSize": "string"
}
],
"expediteRequested": true, "expediteDescription": "string",
"expediteStartDate": "2024-04-09T15:57:02.503Z", "expediteDescriptionAttachments": [
{
"contentType": "string", "fileData": "string", "fileName": "string", "fileSize": "string"
}
],
"feeWaiverRequested": true, "feeWaiverDescription": "string", "feeWaiverStart": "2024-04-09T15:57:02.503Z",
"feeWaiverDescriptionAttachments": [
{
"contentType": "string", "fileData": "string", "fileName": "string", "fileSize": "string"
}
],
"linkedRequests": [
{
"id": 0,
"visibleRequestID": "string",
"requestStatus": "string", "requestDisplayStatus": "string", "linkedRequestId": 0,
"linkedAction": 0
}
],
"sentToCommissioner": { "requestId": 0, "isSentToCommissioner": "string",
"sentDate": "2024-04-09T15:57:02.503Z", "responseDate": "2024-04-09T15:57:02.503Z",
"approvalStatus": "string", "sentReason": "string", "section32Notice": "string", "subsectionCeased": "string", "section35Formal": "string", "section37Reports": "string", "recommendations": "string", "orders": "string", "paSection31": "string", "paSection33": "string", "paSection35": "string", "paCourtAction": "string"
},
"requestType": "string", "visibleRequestId": "string",
"feeWaiverEnd": "2024-04-09T15:57:02.503Z",
"expediteEndDate": "2024-04-09T15:57:02.503Z",
"lastPerfectedDate": "2024-04-09T15:57:02.503Z", "perfectedDate": "2024-04-09T15:57:02.503Z",
"originalReceivedDate": "2024-04-09T15:57:02.503Z", "shippingAddress1": "string",
"shippingAddress2": "string", "shippingCity": "string", "shippingState": "string", "shippingCountry": "string", "shippingZipCode": "string", "billingAddress1": "string", "billingAddress2": "string", "billingCity": "string", "billingState": "string", "billingCountry": "string", "billingZipCode": "string"
}
3.5.2 Output


3.6 Request/Create request
Create a request with the information that the user has specified.
3.6.1 Parameters
{
"requestType": "string", "description": "string",
"requestedDate": "2024-04-09T16:01:59.757Z", "receivedDate": "2024-04-09T16:01:59.757Z",
"officeCode": "string", "requesterFirstName": "string",
"requesterLastName": "string", "requesterEmail": "string", "requesterCountry": "string", "requesterZipCode": "string", "requestUserEmail": "string", "priority": "string", "deliveryMode": "string", "receiveMode": "string", "requesterCategory": "string", "address1": "string", "address2": "string",
"city": "string",
"state": "string", "homePhone": "string", "workPhone": "string", "requestCustomFields": [
{
"fieldName": "string", "dataType": "string", "value": "string"
}
],
"requestDescriptionAttachments": [
{
"contentType": "string", "fileData": "string", "fileName": "string",
"fileSize": "string"
}
],
"expediteRequested": true, "expediteDescription": "string",
"expediteStartDate": "2024-04-09T16:01:59.757Z", "expediteDescriptionAttachments": [
{
"contentType": "string", "fileData": "string", "fileName": "string", "fileSize": "string"
}
],
"feeWaiverRequested": true, "feeWaiverDescription": "string", "feeWaiverStart": "2024-04-09T16:01:59.757Z",
"feeWaiverDescriptionAttachments": [
{
"contentType": "string", "fileData": "string", "fileName": "string", "fileSize": "string"
}
],
"linkedRequests": [
{
"id": 0,
"visibleRequestID": "string", "requestStatus": "string", "requestDisplayStatus": "string", "linkedRequestId": 0,
"linkedAction": 0
}
],
"sentToCommissioner": { "requestId": 0, "isSentToCommissioner": "string",
"sentDate": "2024-04-09T16:01:59.757Z", "responseDate": "2024-04-09T16:01:59.757Z",
"approvalStatus": "string", "sentReason": "string", "section32Notice": "string", "subsectionCeased": "string", "section35Formal": "string", "section37Reports": "string", "recommendations": "string", "orders": "string", "paSection31": "string", "paSection33": "string", "paSection35": "string", "paCourtAction": "string"
}
}
3.6.2 Output
.jpg?sv=2022-11-02&spr=https&st=2026-03-10T06%3A44%3A35Z&se=2026-03-10T07%3A04%3A35Z&sr=c&sp=r&sig=Zl9K2N%2FtwPLn5YWGhV9bTyQrEqVSol6rRTLo82ryg6k%3D)

4 Requesters Methods
4.1 Requesters/get/requesterId/LocaleId
Retrieve the requester's information based on the ID and the requested language.
.jpg?sv=2022-11-02&spr=https&st=2026-03-10T06%3A44%3A35Z&se=2026-03-10T07%3A04%3A35Z&sr=c&sp=r&sig=Zl9K2N%2FtwPLn5YWGhV9bTyQrEqVSol6rRTLo82ryg6k%3D)
4.1.1 Parameters
RequesterID: Requester ID localeID: Locale ID(language)
4.1.2 Output
{
"requesterTypeId": 0, requester type "prefix": 0, prefix type
"suffix": 0, sufix type
"lastName": "Default", requester last name "firstName": "Default", requester first name "middleName": "", requester middle name "jobTitle": "", requester tittle job
"workPhone1": "", requester phone "workPhone2": "", requester phone "homePhone": "", requester phone "mobile": "", requester phone
"fax": "", requester fax
"email": default@example.com, requester email "company": "", requester company
"login": "default", requester login "notes": null, requester notes
"loginActive": true, status of requester login active or not "isLoginActive": true, status of requester login active or not "deactiveReason": 0, reason of being deactivate the login "createdById": 0, requester created by
"modifiedById": 0, requester modified by "address1": "Default Address", requester address "address2": "", requester address
"city": "Default City", requester city "stateId": 0, requester state "countryId": 0, requester country "zipCode": "00000", requester zip code
"createdBy": "Default", requester created by name "modifiedBy": "Default", requester modified by name "delinquent": false, requester is delinquent "isDelinquent": false, requester is delinquent "syncFlag": true, requester is sync flag on "isSyncFlag": true, requester is sync flag on "createdDate": "0000-00-00T00:00:00.000",
"modifiedDate": "0000-00-00T00:00:00.000",
"requesterType": "Default", requester type "stateName": "Default State", requester state name
"countryName": "Default Country", requester country name "prefixName": null, requester prefix name
"sufixName": null, requester suffix name "localeId": 0, requester language
"updateRequestAddresses": 0, requester update address "updateAddresses": 0, requester update address "otherState": null, requester has another state "customFields": [], requester has custom fields
"id": 0 requester id
}
4.2 Requesters/create
Create a requester based on the information provided by the user.
4.2.1 Parameters
{
"id": 0,
"requesterTypeId": 0,
"prefix": 0,
"suffix": 0, "lastName": "string", "firstName": "string",
"middleName": "string", "jobTitle": "string",
"workPhone1": "string", "workPhone2": "string", "homePhone": "string", "mobile": "string",
"fax": "string",
"email": "string",
"company": "string",
"login": "string",
"notes": "string", "address1": "string", "address2": "string", "city": "string", "stateId": 0,
"countryId": 0, "zipCode": "string", "localeId": 0,
"createdDate": "2024-04-09T16:05:22.627Z", "modifiedDate": "2024-04-09T16:05:22.627Z",
"createdById": 0,
"modifiedById": 0, "stateName": "string", "otherState": "string", "customFields": [
{
"customFieldId": "string", "customFieldValue": "string", "customFieldType": 1
}
]
}
4.2.2 Output
After executing the method the requester is created, and an output appears as shown below:
.jpg?sv=2022-11-02&spr=https&st=2026-03-10T06%3A44%3A35Z&se=2026-03-10T07%3A04%3A35Z&sr=c&sp=r&sig=Zl9K2N%2FtwPLn5YWGhV9bTyQrEqVSol6rRTLo82ryg6k%3D)
4.3 Requesters/Update
Update a requester based on the information provided by the user
4.3.1 Parameters
{
"id": 0,
"requesterTypeId": 0,
"prefix": 0,
"suffix": 0, "lastName": "string", "firstName": "string",
"middleName": "string", "jobTitle": "string", "workPhone1": "string", "workPhone2": "string", "homePhone": "string", "mobile": "string",
"fax": "string",
"email": "string",
"company": "string",
"login": "string",
"notes": "string", "address1": "string", "address2": "string", "city": "string", "stateId": 0,
"countryId": 0, "zipCode": "string", "localeId": 0,
"createdDate": "2024-04-09T16:05:55.310Z", "modifiedDate": "2024-04-09T16:05:55.310Z",
"createdById": 0,
"modifiedById": 0, "stateName": "string", "otherState": "string",
"customFields": [
{
"customFieldId": "string", "customFieldValue": "string", "customFieldType": 1
}
]
}
4.3.2 Output
After executing the requesters/update method, an output appears as shown in the following example:

5 Audit Methods
You can use the Audit Methods to query for User Actions and User Logins in the application.
5.1 User Actions
The UserActions method gets all user actions between two dates.
NOTE: You must have Audit permissions within the application to access this method.
To audit user actions using the API:
Locate the UserActions section of the API, as shown below:

Enter the dates youād like to audit User Actions between using the FromDate and ToDatefields.
NOTE: Dates follow UTC format and will take the hours and minutes as 00:00 unless specified. To fetch values for a specific date, either specify the time or use the following date. For example, to fetch values for 11/1/2023, use either 2023-11-01T23:59Z or 2023-11-02.
The pageSize and pageNumber fields are required and configure the formatting for the returned results. pageSize indicates the number of items returned per page, and pageNumber dictates the current page number.
Execute the method to view matching results, which display in the Response body field. There are options to (A) Copy this to your clipboard, or (B) Download the response body

5.2 User Logins
You can use the UserLogins method to gets all user logins between two dates.
NOTE: Users utilizing Audit methods must have Audit permissions within the application.
To audit user logins using the API:
Locate the UserActions section of the API, as shown below:

Enter the dates youād like to audit User Logins between using the FromDate and ToDatefields.
NOTE: Dates follow UTC format and will take the hours and minutes as 00:00 unless specified. To fetch values for a specific date, either specify the time or use the following date. For example, to fetch values for 11/1/2023, use either 2023 -11-01T23:59Z or 2023-11-02.
The pageSize and pageNumber fields are required and configure the formatting for the returned results. pageSize indicates the number of items returned per page, and pageNumber dictates the current page number.
Execute the method to view matching results, which display in the Response body field. There are options to (A) Copy this to your clipboard, or (B) Download the response body.

6 EmailService API
6.1 Mail/api/getmail
Search the email inbox and return the information requested in the query.
6.1.1 Parameters
{
"hasWords": [ "string"
],
"from": [ "string"
],
"to": [ "string"
],
"dateFrom": "2024-04-09T16:07:35.291Z", "dateTo": "2024-04-09T16:07:35.291Z",
"hasAttachment": true
}
6.1.2 Output
[
{
"id": "Random Text",
"from": "email",
"to": "email", "cc": null,
"bcc": null, "subject": "test",
"shortBody": "html code", "body": "html code",
"receivedDateTime": "2023-12-04T22:27:28", "hasAttachments": false,
"attachments": "plus.png"
},

6.2 Mail/api/getmailcontent
Search the email inbox and return the requested information in the query in MIME format.
6.2.1 Parameters
{
"mailId": [
"string"
]
6.2.2 Output
[āHTML MIME formatā]

7 EntityRecognition API
7.1 Comprehend/api/detectentities
Perform a Named Entity Recognition (NER) process using AWS Comprehend according to the specified language and entity type for the requested text
7.1.1 Parameters
lang: Text language
EntityType: Name entities, PII or both
7.1.2 Output
{"Entities":[
{"BeginOffset":0, initial position "EndOffset":13 final position
,"Score":0.9925614 score from aws
,"Text":"test", text reviewed "Type":{"Value":"OTHER"}}] name entity
}

7.2 Comprehend/api/detectentities
Perform a Named Entity Recognition (NER) process using Core NLP according to the specified language and entity type for the requested text.
7.2.1 Parameters
lang: Text language
7.2.2 Output
{
"sentences": [
{
"index": 0, "entitymentions": [
{
"docTokenBegin": 0, token start position "docTokenEnd": 1, token end position "tokenBegin": 0, token start position "tokenEnd": 1, token end position
"text": "Yesterday", text reviewed "characterOffsetBegin": 0, token start position "characterOffsetEnd": 9, token end position "ner": "DATE", name entity
"normalizedNER": "OFFSET P-1D", "nerConfidences": {
"DATE": -1 name entity confidence
}}

8 MediaRedactions API
8.1 Mediaredactions/apiex/mediafile/getsignedurl
Obtains a signed URL which will be used to download a media file.
8.1.1 Parameters
{
"uniqueId": "string", "folderId": 0,
"reviewLayerId": 0,
"pageId": 0,
"createdBy": 0,
"createdDate": "2024-04-09T16:11:28.623Z",
"declassInfo": "string", "reviewLayerName": "string", "tokenHash": "string", "downLoadedFilePath": "string"
}
Output: string text

8.2 Mediaredactions/apiex/mediafile/getsignedurl/sig nedToken
Retrieves the file with the signed URL obtained from the getSignedUrl method
8.2.1 Parameters
signedToken :URL obtained from the getSignedUrl method to get a file
8.2.2 Output
.png?sv=2022-11-02&spr=https&st=2026-03-10T06%3A44%3A35Z&se=2026-03-10T07%3A04%3A35Z&sr=c&sp=r&sig=Zl9K2N%2FtwPLn5YWGhV9bTyQrEqVSol6rRTLo82ryg6k%3D)
9 Reports API
9.1 Report/api/isaccuratexml
Checks if the user's XML has a valid format for the annual report submission.
9.1.1 Parameters
XML file
9.1.2 Output
{
"accurate": true, if is accurate "differencesCount": 0, differences count "differences": null list of differences
}
