# Report missing data

Canonical: https://aicdapi.com/help/data-reports
Content version: 2026-09-22.2
Reviewed: 2026-09-22
Reviewed against source commit: 901a9f3267a3f8d13a2396ba444af38bd17d9b43
Owner: AICD API

Send a public source link, keep a report ID, and check what we found.

## Availability and access

Pending launch acceptance. The report routes and tools are being prepared for paid customers. Public paid access is still closed.

After launch, use an active API key with the data:report scope. MCP also needs mcp:read. A workspace owner must choose the report scope when making the key. Existing read-only keys do not gain write access.

Report access requires a confirmed production API payment within the last 30 days. A key, a trial, a test payment, or an internal account exemption is not paid report access. No extra payment is taken when you send or check a report.

## Before you send a report

1. Check coverage for the place and record type. An empty search result alone does not prove that data is missing.
2. Check source health and remove optional search filters. Confirm the record date.
3. Open the public government source. Copy the record link and write one short sentence about what you expected to find.

### Links

- [Coverage and data limits](/help/api-and-data)

## Report a missing record

Send one sourceUrl and expectedRecord. The description can have up to 1,000 characters, and the whole request can be at most 8 KiB. Use a public record link, not a sign-in or temporary download link.

Do not send API keys, passwords, wallet secrets, personal details, attachments, page dumps, or instructions for an agent to run. A source link and short description are enough.

### Report a missing record

```bash
curl --request POST 'https://aicdapi.com/api/v1/data-reports' \
  --header "Authorization: Bearer $AICD_API_KEY" \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: 461d4ca8-19ee-4d71-a4b4-215e15b72f78' \
  --data '{"sourceUrl":"https://city.example.gov/agendas/2026-09-10","expectedRecord":"The city council agenda published for September 10, 2026."}'
```

> Replace the example source link with the real public record link. Use a new Idempotency-Key for a different report. A 202 response means the report was saved; it does not promise a fix.

## Keep the report ID

Save the report ID returned by the submit call. Use it to check progress. Follow the suggested next check time instead of polling in a loop.

If the submit response is lost, retry with the same Idempotency-Key and the same body. The retry returns the saved report without another job. A changed body with the same Idempotency-Key returns 409. Do not make a new report for the same gap just to get a faster result.

### Check your report

```bash
curl "https://aicdapi.com/api/v1/data-reports/$AICD_REPORT_ID" \
  --header "Authorization: Bearer $AICD_API_KEY"
```

## Use your agent

An enabled MCP client can call report_missing_data and get_data_report. The tools share the REST checks and report limits. Report submission is a write action; give the agent permission to use a key with data:report.

The report tool takes the same sourceUrl and expectedRecord, plus idempotencyToken for retries. The status tool takes reportId. Neither tool charges for a data query just to check a report.

When verifiedRecords contains a match, pass its itemId to get_agenda_item to read the record. That lookup uses the normal data-call access and payment rules. The apiUrl is a reference for a signed-in browser session; a report API key alone does not open that route.

MCP failures use a tool result with isError and error.code. When error.retryAfterSeconds is present, wait that many seconds before a bounded retry. The HTTP status codes below describe the REST routes.

## What happens next

Code checks run before any costly work. Unknown source sites and unclear records go to review. A report does not trigger an open web crawl, a model call, or an automatic production change.

A report can lead to a source fix, a search fix, or a clear reason why the record cannot be supplied. We do not promise a fix time or full coverage. Read the returned findings and next action.

- received or validating: the report is saved and code checks are pending or running.
- needs_review or investigating: the source needs review or the failed step needs to be found.
- fixing or verifying: a repair is in progress or being checked.
- resolved: the record can be found and a check is in place for the cause.
- not_missing: the data was present or the query did not match it.
- out_of_coverage: the place, record type, or date is outside supported coverage.
- unable_to_verify: the available source evidence did not prove the claim.

## Limits and errors

- Submit up to 5 attempts per minute, 20 new reports per day, and 20 unresolved reports per customer. These limits apply across all keys and both REST and MCP.
- Check status up to 30 times per minute per customer. Report limits are separate from paid data-call limits.
- The REST report routes also share a limit of 60 attempts per minute per client IP address. Each report accepts at most 32 distinct retry tokens. Keep and reuse your original token.
- 400 means the input is not valid. 401 means the key is not valid. 403 means the key or customer does not have report access.
- 404 means the report was not found for this customer. 409 means the Idempotency-Key was used with a different body. 413 means the request is too large.
- 429 means a limit was reached. Wait for Retry-After, then retry with the same Idempotency-Key and body.
- 503 means a required check or the report queue is unavailable. Wait and retry with bounded backoff. Keep the same Idempotency-Key if the save result is unknown.

## Privacy and other support

Only your customer account and authorized service staff can read your report. Reports are not added to public data feeds. Send only the public source and the short facts needed to check it.

For account trouble, payment trouble, or a report you cannot submit, email hello@aicdapi.com. Include the safe error code and report ID if you have one. Do not include a key or payment signature.

### Links

- [Trust and support](/help/trust-and-support)
- [Privacy](/privacy)
