Sending
It sends to about half of them,
and it says so about the other half.
Roughly half of these agencies require submission through their own portal with an account. The send endpoint cannot reach them, so it returns 409 with the portal URL and marks the request awaiting manual submission. It never reports success for a message it could not send.
The rule
A tracker that silently drops half your requests is worse than no tracker, because you would believe they were filed.
Every agency in the dispatch table carries a channel, and the channel decides what the send endpoint is allowed to do.
email— the agency publishes a FOIA mailbox- The request is sent. The date it went becomes
filedOn, the deadline clock starts from it, and the status becomessent. portal— submission requires an account on the agency's own systemPOST /api/requests/:id/sendreturns 409 with the portal URL, the postal address where one is published, and the full request body ready to paste. The request is markedawaiting-manual-submission. Nothing was sent and nothing pretends otherwise.none— the body is not subject to a records law at all- The request cannot be created.
POST /api/requestsreturns 422 with the reason and the workaround, rather than accepting a request that can never be filed.
The dispatch table
Twenty-two agencies are configured. Twelve publish a mailbox and can be sent to; nine are portal-only; one is subject to no records law.
| Agency | Channel | Response standard as configured |
|---|---|---|
| DOJ Office of Justice Programs | 20 business days, 5 U.S.C. § 552(a)(6)(A)(i) | |
| Federal Bureau of Investigation | portal | 20 business days — the FBI publishes no FOIA mailbox; eFOIA or post |
| U.S. Marshals Service | 20 business days | |
| Federal Bureau of Prisons | 20 business days to determine; BOP's own published processing runs far longer | |
| ICE / Department of Homeland Security | 20 business days; appeal window 60 days, not DOJ's 90 | |
| Government Accountability Office | No statutory deadline — GAO is not subject to FOIA and follows 4 C.F.R. Part 81 | |
| Administrative Office of the U.S. Courts | none | Not subject to any public records law — 5 U.S.C. § 551(1) excludes the courts |
| California — CDCR | 10 calendar days to determine, Cal. Gov't Code § 7922.535(a) | |
| Texas — TDCJ | Promptly; 10 business days to certify delay, Tex. Gov't Code § 552.221 | |
| Florida — FDLE / FDC | No fixed deadline, Fla. Stat. ch. 119 | |
| New York — DOCCS | portal | 5 business days to acknowledge, N.Y. Pub. Off. Law § 89(3)(a) |
| Illinois — IDOC | 5 business days, 5 ILCS 140/3(d) | |
| Michigan — MDOC | 5 business days, MCL 15.235 | |
| North Carolina — NCDAC | portal | No fixed deadline, N.C.G.S. ch. 132 |
| Pennsylvania — DOC | 5 business days, 65 P.S. § 67.901 | |
| Ohio — ODRC | portal | No fixed deadline, R.C. 149.43 |
| Georgia — DCS / Pardons and Paroles | portal | 3 business days, O.C.G.A. § 50-18-71(b) |
| Washington — DOC | portal | 5 business days, RCW 42.56.520 |
| Massachusetts — DOC | 10 business days to respond, G.L. c. 66, § 10 | |
| Minnesota — DOC | portal | No deadline for public data; 10 business days if you are the data subject |
| Wisconsin — DOC | portal | No fixed deadline, Wis. Stat. § 19.35(4)(a) |
| New Jersey — State Parole Board | portal | 7 business days, N.J.S.A. 47:1A-5(i)(1) |
Channels, addresses, standards and appeal routes are read from the server's own dispatch table. Agencies change their intake arrangements without notice; verify before relying on any row.
What a 409 actually gives you
The refusal is not an error page. It is the rest of the work, handed over:
HTTP/1.1 409 Conflict
{
"error": "This agency does not accept email requests",
"channel": "portal",
"portal": "https://efoia.fbi.gov/",
"mail": "FBI, Record/Information Dissemination Section, …",
"guidance": "Copy the request text and submit it through the agency's
own system, then POST /api/requests/<id>/mark-submitted
with the date and any tracking number so the deadline
clock starts.",
"body": "…the full request text…"
}
The request is stored, not discarded. When you have submitted it by hand, POST /api/requests/:id/mark-submitted records the real submission date and starts the clock from there. That is the one field nobody else can supply, and it is why the endpoint exists.
Record the date the portal received it, not the date you remembered to type it in
Deadlines are computed from the date you record. For an emailed request the server records it for you. For a portal submission it cannot, so a day of carelessness there is a day of deadline you have given away.
Warnings that travel with the agency
Some of these requests cannot be made by the person who most wants to make them.
The dispatch table carries agency-specific warnings and returns them with the created request, because they are the sort of thing you need to know before you file rather than after you are denied.
A few examples of what comes back attached to a created request:
- Michigan. MCL 15.232 excludes incarcerated people from the definition of "person". A prisoner has no Michigan FOIA rights and there is no workaround in the statute.
- Texas. Tex. Gov't Code § 552.028 — an agency need not comply with a request from an imprisoned person. Their attorney may still file.
- Wisconsin. Wis. Stat. §§ 19.32(1b)–(1e) — an incarcerated or civilly committed person may request only records that specifically reference them or their minor children.
- Illinois. The recurrent-requester rule, 5 ILCS 140/3.2: more than 50 requests a year, 15 a month, or 7 in seven days moves you to a 21-business-day window. Pace your filings.
- New Jersey. Since the 2024 amendments an anonymous requester may not bring a Government Records Council proceeding. If you might appeal, do not file anonymously.
- Massachusetts. GPS monitoring runs through the Probation Service, which is judicial branch and not covered by the public records law. DOC, Parole and SORB are covered; Probation is a discretionary request with no appeal right.
- Washington. The only state with a statutory index requirement, RCW 42.56.070. Request the index first — it tells you what exists before you ask for it.
These are the warnings configured in the dispatch table, reproduced here so they can be read before a request is drafted. They are a summary of statutes, not legal advice, and statutes change.
How this works
0:47 · narrated · captioned · served from this site, and nothing is sent anywhere when you press play. Prefer to read it? The transcript is below.
Transcript
| At | Section | What it says |
|---|---|---|
| 0:02 | The rule | A tracker that silently drops half your requests is worse than no tracker, because you would believe they had been filed. |
| 0:08 | What it sends | Twelve of the twenty-two agencies configured here publish a records mailbox. Those are sent for you, and the date the message went starts the clock. |
| 0:17 | What it refuses | Nine require an account on their own system. The send endpoint returns a conflict, with the portal address and your full request text ready to paste. |
| 0:27 | No records law | One body is subject to no records law at all. A request against it is refused outright, with the reason and the agency that does hold copies. |
| 0:35 | Then tell it | When you have filed through a portal by hand, record the real submission date. That date is the whole basis of every deadline computed afterwards. |