Every API here is available over the APIs.io API and to AI agents over MCP.
{
"swagger": "2.0",
"info": {
"description": "<p>This Swagger Page is for the <a href=\"/developer/\">FOIA Request Portal</a>. Information about the <a href=\"/developer/agency-api/\">FOIA Agency API</a> can be found on the <a href=\"/developer/agency-api/\">API Specs page</a>.</p><h5>Authorization with API Key</h5><p>Use the Authorize button below to enter your <code>api_key</code> if you have one. You can<a href=\"/developer/#api-key-signup\"> signup for an API key</a> or use the following <code>api_key</code> for testing. <br><br> <code>N4aCuDuJO8Ucf1FTR2EzVPZqo8NsSl1c7YLYOk8N</code></p><h5>Agency Component Entity ID</h5><p>You can use the Entity ID for <b>Office of Information Policy</b> in the examples below:</p><code>8216158f-8089-431d-b866-dc334e8d4758</code>",
"title": "National FOIA Portal - JSON API",
"version": "Versioning not supported"
},
"host": "api.foia.gov",
"basePath": "/api",
"securityDefinitions": {
"APIKeyHeader": {
"type": "apiKey",
"in": "header",
"name": "X-API-Key"
}
},
"security": [{
"APIKeyHeader": []
}],
"schemes": ["https"],
"consumes": ["application\/vnd.api+json"],
"produces": ["application\/vnd.api+json"],
"paths": {
"/agency_components": {
"get": {
"summary": "Get a List of Agency Components",
"description": "<p>Request a list of Agency Components. The ID returned can be used to get more details about the Agency Component. Using parameters such as <code>include</code> and <code>fields</code> allow you to request complex data.</p><h4>For Example:</h4><p>A list of agency components with their parent agency.</p><code>https://api.foia.gov/api/agency_components?&include=agency&fields[agency]=name,abbreviation&fields[agency_component]=title,abbreviation,agency</code>",
"security": [{
"APIKeyHeader": []
}],
"parameters": [{
"name": "fields[agency_component]",
"required": false,
"in": "query",
"type": "string",
"description": "You can choose which fields to include by using comma separated values in this parameter.</p><h5>For Example:</h5><p>This endpoint will return only the title and description. <br> https://api.foia.gov/api/agency_components?fields[agency_component]=title,description&api_key=N4aCuDuJO8Ucf1FTR2EzVPZqo8NsSl1c7YLYOk8N</p><h5>Possible values:</h5><code>title, status, abbreviation, moderation_state, description, email, submission_address</code>"
},
{
"name": "fields[agency]",
"required": false,
"in": "query",
"type": "string",
"description": "You can choose which fields to include by using comma separated values in this parameter.</p><h5>For Example:</h5><p>This endpoint will return only the title and description. <br> https://api.foia.gov/api/agency_components?fields[agency_component]=title,description&api_key=N4aCuDuJO8Ucf1FTR2EzVPZqo8NsSl1c7YLYOk8N</p><h5>Possible values:</h5><code>title, status, abbreviation, moderation_state, description, email, submission_address</code>"
},
{
"name": "page[limit]",
"in": "query",
"type": "number",
"required": false,
"description": "You can use <code>page[limit]</code> to return a maximum number of results. <p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/pagination\" target=\"_blank\">Learn more about Pagination in the Drupal documentation</a>.</p>"
},
{
"name": "page[offset]",
"in": "query",
"type": "string",
"required": false,
"description": "<p>The offset is the result you want to start with. An offset of 3 and a <code>page[limit]</code> of 10 will list ten items starting from item 3. Each JSON response from the API will have built in pagination under <code>links</code>.</p><p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/pagination\" target=\"_blank\">Learn more about Pagination in the Drupal documentation</a>.</p>"
},
{
"name": "include",
"in": "query",
"type": "string",
"required": false,
"description": "Embed related entities in the JSON response under <code>relationships</code>. <p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/includes\" target=\"_blank\">Learn more in the documentation</a>.</p><p><h5>Possible values:</h5><code>agency, foia_officers, field_misc, public_liaisons, paper_receiver, request_form, service_centers</code></p>"
}
],
"tags": ["Agency Component"],
"responses": {
"200": {
"description": "Successful Operation",
"schema": {
"title": "paragraph:admin_app_via Schema",
"description": "Describes the payload for 'paragraph' entities of the 'admin_app_via' bundle.",
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/paragraph--admin_app_via/properties/data"
}
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
},
"links": {
"type": "object",
"additionalProperties": {
"description": "A link **MUST** be represented as either: a string containing the link's URL or a link object . ",
"type": "object",
"required": [
"href"
],
"properties": {
"href": {
"description": "A string containing the link's URL . ",
"type": "string",
"format": "uri - reference"
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
}
}
}
},
"jsonapi": {
"description": "An object describing the server's implementation",
"type": "object",
"properties": {
"version": {
"type": "string"
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
}
},
"additionalProperties": false
}
},
"additionalProperties": true
}
},
"400": {
"description": "Syntax error"
},
"403": {
"description": "Forbidden: The api_key is missing"
},
"404": {
"description": "Not Found"
}
}
}
},
"/agency_components/{entity}": {
"get": {
"summary": "Get Agency Component Details",
"description": "<p>Request details for an Agency Component by UUID.</p>",
"parameters": [{
"name": "entity",
"required": true,
"in": "path",
"type": "string",
"description": "The uuid of the node agency_component"
}],
"tags": ["Agency Component"],
"responses": {
"200": {
"description": "Successful Operation",
"schema": {
"$ref": "#/definitions/node--agency_component"
}
},
"400": {
"description": "Syntax error"
},
"403": {
"description": "Forbidden: The api_key is missing"
},
"404": {
"description": "Agency Component Not Found"
}
}
}
},
"/agency": {
"get": {
"summary": "List Taxonomy: Agency",
"description": "Endpoint for listing the agency taxonomy type. The ID returned can be used to get details on the term.",
"parameters": [
{
"name": "page[limit]",
"in": "query",
"type": "number",
"required": false,
"description": "You can use <code>page[limit]</code> to return a maximum number of results. <p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/pagination\" target=\"_blank\">Learn more about Pagination in the Drupal documentation</a>.</p>"
},
{
"name": "page[offset]",
"in": "query",
"type": "string",
"required": false,
"description": "<p>The offset is the result you want to start with. An offset of 3 and a <code>page[limit]</code> of 10 will list ten items starting from item 3. Each JSON response from the API will have built in pagination under <code>links</code>.</p><p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/pagination\" target=\"_blank\">Learn more about Pagination in the Drupal documentation</a>.</p>"
},
{
"name": "include",
"in": "query",
"type": "string",
"required": false,
"description": "Embed related entities in the JSON response under <code>relationships</code>. <p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/includes\" target=\"_blank\">Learn more in the documentation</a>.</p><p><h5>Possible values:</h5><code>revision_user, category</code></p>"
}
],
"tags": [
"Agency Taxonomy"
],
"responses": {
"200": {
"description": "successful operation",
"schema": {
"title": "taxonomy_term:agency Schema",
"description": "Describes the payload for 'taxonomy_term' entities of the 'agency' bundle.",
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/taxonomy_term--agency/properties/data"
}
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
},
"links": {
"type": "object",
"additionalProperties": {
"description": "A link **MUST** be represented as either: a string containing the link's URL or a link object . ",
"type": "object",
"required": [
"href"
],
"properties": {
"href": {
"description": "A string containing the link's URL . ",
"type": "string",
"format": "uri - reference"
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
}
}
}
},
"jsonapi": {
"description": "An object describing the server's implementation",
"type": "object",
"properties": {
"version": {
"type": "string"
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
}
},
"additionalProperties": false
}
},
"additionalProperties": true
}
}
}
}
},
"/agency/{entity}": {
"get": {
"summary": "Get Taxonomy Details: Agency",
"description": "Endpoint for the agency taxonomy type. The individual endpoint contains details on the Agency Taxonomy Type.",
"parameters": [{
"name": "entity",
"required": true,
"in": "path",
"type": "string",
"description": "The uuid of the taxonomy_term agency which can be found using the List Agency endpoint above. You can use the ID <code>0562281a-9b9f-4f43-89c3-d1661841d5a4</code> as an example."
}],
"tags": [
"Agency Taxonomy"
],
"responses": {
"200": {
"description": "successful operation",
"schema": {
"$ref": "#/definitions/taxonomy_term--agency"
}
}
}
}
},
"/agency_components/{entity}/request_form": {
"get": {
"summary": "Get Agency Component Request Form",
"description": "Get a Request Form for an Agency by UUID. A Request Form is necessary for submitting a FOIA Request using the webform/submit endpoint. <h5>For Example:</h5> <p>https://api.foia.gov/api/agency_components/8216158f-8089-431d-b866-dc334e8d4758/request_form</p><p>You will get back the UUID 3d10c8bd-b803-467d-a9a3-797cf8c760a7 for the NARA-WJCPL form.<p/>",
"parameters": [{
"name": "entity",
"required": true,
"in": "path",
"type": "string",
"description": "The uuid of the node agency_component"
}],
"tags": ["Agency Component"],
"responses": {
"200": {
"description": "Successful Operation"
},
"400": {
"description": "Syntax error"
},
"403": {
"description": "Forbidden: The api_key is missing"
},
"404": {
"description": "Not Found"
}
}
}
},
"/annual_foia_report": {
"get": {
"summary": "List Annual FOIA Reports",
"description": "Endpoint for listing Annual Reports. You must restrict the results returned when using this endpoint due to the high number of reports.<p>offset results.</p>",
"parameters": [{
"name": "page[limit]",
"in": "query",
"type": "number",
"required": true,
"minimum": 1,
"maximum": 10,
"description": "Limiting the result set to 10 reports is necessary due to the high number of Annual Reports. <p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/pagination\" target=\"_blank\">Learn more about Pagination in the Drupal documentation</a>.</p>"
},
{
"name": "page[offset]",
"in": "query",
"type": "string",
"required": false,
"description": "<p>The offset is the result you want to start with. An offset of 3 and a <code>page[limit]</code> of 10 will list ten items starting from item 3. Each JSON response from the API will have built in pagination under <code>links</code>.</p><p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/pagination\" target=\"_blank\">Learn more about Pagination in the Drupal documentation</a>.</p>"
},
{
"name": "sort",
"in": "query",
"type": "array",
"required": false,
"description": "<p>You can sort results in alphabetical order by multiple fields such as <code>title</code> or by author <code>uid.name</code>.</p><p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/sorting\" target=\"_blank\">Learn more about sorting in the Drupal documentation</a>.</p>"
},
{
"name": "include",
"in": "query",
"type": "string",
"required": false,
"description": "Embed related entities in the JSON response under <code>relationships</code>. <p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/includes\" target=\"_blank\">Learn more in the documentation</a>.</p><p><h5>Possible values:</h5><code>field_admin_app_via, field_admin_app_vib, field_admin_app_vic1, field_admin_app_vic2, field_admin_app_vic3, field_admin_app_vic4, field_admin_app_vic5, field_admin_app_viie, field_agency, field_agency_components, field_fees_x, field_foia_pers_costs_ix, field_foia_requests_va, field_foia_requests_vb1, field_foia_requests_vb2, field_foia_requests_vb3, field_foia_xiia, field_foia_xiib, field_foia_xiic, field_foia_xiid1, field_foia_xiid2, field_foia_xiie1, field_foia_xiie2, field_pending_requests_vii_d_, field_proc_req_viia, field_proc_req_viib, field_proc_req_viic1, field_proc_req_viic2, field_proc_req_viic3, field_report_files, field_req_viiia, field_req_viiib, field_statute_iv, field_sub_xia, field_sub_xib</code></p>"
}
],
"tags": [
"Annual FOIA Report Data"
],
"responses": {
"200": {
"description": "successful operation",
"schema": {
"title": "node:annual_foia_report_data Schema",
"description": "Annual total data report given by an agency.",
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/node--annual_foia_report_data/properties/data"
}
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
},
"links": {
"type": "object",
"additionalProperties": {
"description": "A link **MUST** be represented as either: a string containing the link's URL or a link object . ",
"type": "object",
"required": [
"href"
],
"properties": {
"href": {
"description": "A string containing the link's URL . ",
"type": "string",
"format": "uri - reference"
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
}
}
}
},
"jsonapi": {
"description": "An object describing the server's implementation",
"type": "object",
"properties": {
"version": {
"type": "string"
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
}
},
"additionalProperties": false
}
},
"additionalProperties": true
}
}
}
}
},
"/annual_foia_report/fiscal_years": {
"get": {
"summary": "Get Annual Report: Fiscal Years",
"description": "Request Fiscal Years for Annual Reports.",
"security": [{
"APIKeyHeader": []
}],
"parameters": [],
"tags": ["Annual FOIA Report Data"],
"responses": {
"200": {
"description": "Successful Operation"
},
"400": {
"description": "Syntax error"
},
"403": {
"description": "Forbidden: The api_key is missing"
},
"404": {
"description": "Not Found"
}
}
}
},
"/quarterly_foia_report": {
"get": {
"summary": "List Quarterly FOIA Reports",
"description": "Endpoint for the quarterly_foia_report_data resource type.",
"parameters": [{
"name": "page[limit]",
"in": "query",
"type": "number",
"required": true,
"minimum": 1,
"maximum": 10,
"description": "Limiting the result set to 10 reports is necessary due to the high number of Annual Reports. <p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/pagination\" target=\"_blank\">Learn more about Pagination in the Drupal documentation</a>.</p>"
},
{
"name": "page[offset]",
"in": "query",
"type": "string",
"required": false,
"description": "<p>The offset is the result you want to start with. An offset of 3 and a <code>page[limit]</code> of 10 will list ten items starting from item 3. Each JSON response from the API will have built in pagination under <code>links</code>.</p><p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/pagination\" target=\"_blank\">Learn more about Pagination in the Drupal documentation</a>.</p>"
},
{
"name": "sort",
"in": "query",
"type": "array",
"required": false,
"description": "<p>You can sort results in alphabetical order by multiple fields such as <code>title</code> or by author <code>uid.name</code>.</p><p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/sorting\" target=\"_blank\">Learn more about sorting in the Drupal documentation</a>.</p>"
},
{
"name": "include",
"in": "query",
"type": "string",
"required": false,
"description": "Embed related entities in the JSON response under <code>relationships</code>. <p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/includes\" target=\"_blank\">Learn more in the documentation</a>.</p><p><h5>Possible values:</h5><code>field_agency, field_agency_components, field_quarterly_component_data</code></p>"
}
],
"tags": [
"Quarterly FOIA Report Data"
],
"responses": {
"200": {
"description": "Successful Operation",
"schema": {
"title": "node:quarterly_foia_report_data Schema",
"description": "Quarterly total data report given by an agency.",
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/node--quarterly_foia_report_data/properties/data"
}
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
},
"links": {
"type": "object",
"additionalProperties": {
"description": "A link **MUST** be represented as either: a string containing the link's URL or a link object . ",
"type": "object",
"required": [
"href"
],
"properties": {
"href": {
"description": "A string containing the link's URL . ",
"type": "string",
"format": "uri - reference"
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
}
}
}
},
"jsonapi": {
"description": "An object describing the server's implementation",
"type": "object",
"properties": {
"version": {
"type": "string"
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
}
},
"additionalProperties": false
}
},
"additionalProperties": true
}
}
}
}
},
"/quarterly_foia_report/fiscal_years": {
"get": {
"summary": "Get Quarterly Report: Fiscal Years",
"description": "Request Fiscal Years for Quarterly Reports.",
"security": [{
"APIKeyHeader": []
}],
"parameters": [],
"tags": ["Quarterly FOIA Report Data"],
"responses": {
"200": {
"description": "Successful Operation"
},
"400": {
"description": "Syntax error"
},
"403": {
"description": "Forbidden: The api_key is missing"
},
"404": {
"description": "Not Found"
}
}
}
},
"/annual-report-xml/{agency}/{year}": {
"get": {
"summary": "Individual Annual Reports in XML format are available via the Annual Report XML Endpoint.",
"description": "<p>Annual Report XML</p>",
"parameters": [{
"name": "agency",
"in": "path",
"type": "string",
"required": true,
"description": "<p>Agency Abbreviation such as <code>DOJ</code>.</p>"
},
{
"name": "year",
"in": "path",
"type": "number",
"required": true,
"description": "<p>The four digit year to return data from.</p>"
}
],
"tags": [
"Annual FOIA Report Data"
],
"produces": [
"application/xml"
],
"responses": {
"200": {
"description": "successful operation",
"content": {
"text/plain": {
"schema": {
"type": "string"
}
}
}
},
"403": {
"description": "Forbidden: The api_key is missing"
}
}
}
},
"/node/cfo_meeting": {
"get": {
"summary": "List CFO Meetings",
"description": "Endpoint for listing node--cfo_meeting resource type. The ID returned can be used to get details for the CFO Meeting.",
"parameters": [{
"name": "page[limit]",
"in": "query",
"type": "number",
"required": false,
"description": "Limiting the result set to 10 reports is necessary due to the high number of Annual Reports. <p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/pagination\" target=\"_blank\">Learn more about Pagination in the Drupal documentation</a>.</p>"
},
{
"name": "page[offset]",
"in": "query",
"type": "string",
"required": false,
"description": "<p>The offset is the result you want to start with. An offset of 3 and a <code>page[limit]</code> of 10 will list ten items starting from item 3. Each JSON response from the API will have built in pagination under <code>links</code>.</p><p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/pagination\" target=\"_blank\">Learn more about Pagination in the Drupal documentation</a>.</p>"
},
{
"name": "sort",
"in": "query",
"type": "array",
"required": false,
"description": "<h5>For Example:</h5><p>You can sort results in alphabetical order by multiple fields such as <code>title</code>. You can also sort by other useful fields such as the author name <code>uid.name</code>.</p> <code>field_meeting_date, changed, created, moderation_state</code></p><p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/sorting\" target=\"_blank\">Learn more about sorting in the Drupal documentation</a>.</p>"
},
{
"name": "sort[sort-created][direction]",
"in": "query",
"type": "string",
"required": false,
"description": "You can change the sorting direction by using either <code>DESC</code> and <code>ASC</code>."
},
{
"name": "include",
"in": "query",
"type": "string",
"required": false,
"description": "Embed related entities in the JSON response under <code>relationships</code>. <p><a href=\"https://www.drupal.org/docs/8/modules/jsonapi/includes\" target=\"_blank\">Learn more in the documentation</a>.</p><p><h5>Possible values:</h5><code>node_type, revision_uid, uid, menu_link, field_meeting_agenda, field_meeting_documents, field_meeting_materials</code></p>"
}
],
"tags": [
"CFO Meeting"
],
"responses": {
"200": {
"description": "successful operation",
"schema": {
"title": "node:cfo_meeting Schema",
"description": "Meetings for the Chief FOIA Officers Council. Contains the date, body, heading, agenda, and links to meeting related documents and information.",
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/definitions/node--cfo_meeting/properties/data"
}
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
},
"links": {
"type": "object",
"additionalProperties": {
"description": "A link **MUST** be represented as either: a string containing the link's URL or a link object . ",
"type": "object",
"required": [
"href"
],
"properties": {
"href": {
"description": "A string containing the link's URL . ",
"type": "string",
"format": "uri - reference"
},
"meta": {
"description": "Non-standard meta-information that can not be represented as an attribute or relationship.",
"type": "object",
"additionalProperties": true
}
}
}
},
"jsonapi": {
"description": "An object describing the server's implementation",
"type": "object",
"properties": {
"version": {
"type": "string"
},
"meta": {
"description": "Non-standard meta-information that can no
# --- truncated at 32 KB (374 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/department-of-justice/refs/heads/main/openapi/department-of-justice-foia-api-swagger.json