Get the data
The full dataset, published in three formats to GitHub Releases. Exports are triggered
on demand by the curator and tagged in CalVer format (YYYY.MM.DD), not
scheduled—a snapshot of an unchanged dataset adds noise without value. Internet Archive
and Hugging Face mirrors are a planned growth path, not yet active. Data license:
CDLA-Sharing-1.0.
pa-incidents.jsonl The canonical download format. One incident per line, all fields, all sources included. Suitable for analysis, import, or direct use. No credentials required.
Download JSONLpa-incidents.tsv Column headers in row 1. Designed for spreadsheet tools, R, pandas. Fields that contain arrays are JSON-encoded strings in the TSV cells.
Download TSVpa-incidents.sqlite
Full dataset in one file—open with sqlite3, DuckDB, pandas, or R.
Generated by the export script and attached to each CalVer release tag on GitHub.
There is no live /export/incidents.sqlite server endpoint; downloads
are published alongside each milestone release.
Each release is published to GitHub Releases (tagged, immutable CalVer). A checksum manifest (SHA-256) is published alongside every release so you can verify the file you downloaded is the same file we published. The Internet Archive and Hugging Face are a planned growth path for additional independence; activating either requires no schema change.
Schema
Schema version 1. The public schema is immutable: fields are never renamed or removed,
only added (see Methodology). Every record carries schema_version so pipelines can branch on format changes. Breaking
changes, should one ever become necessary, get 90 days notice and 12 months of
parallel publication.
| Field | Type | Meaning |
|---|---|---|
id | string | Permanent identifier. PA-YYYY-NNNN. Year is the intake year;
counter never reused, never renumbered. |
status | enum | DRAFT · PUBLISHED · REJECTED. Rejected
records keep their IDs and remain in exploratory state. |
reported_by | string | Who publicly reported the incident (handle or publication). Required on every documentary record. |
platform | string | Controlled vocabulary, extensible without schema change. Values expand as new platforms are documented. |
enforcement_action_type | enum | Terminal: account-disable · account-ban · account-termination · channel-termination · server-termination · account-deletion · deplatformingRestrictive: account-suspend · account-restriction · account-lock · demonetizationPlatform-specific slugs are automatically classified via keyword patterns. |
platform_policy_cited | string? | The policy the platform cited, verbatim. null means no policy was
cited—a research signal, not missing data. |
ai_system_involvement | enum | DETECTION · CLASSIFICATION · EXECUTION ·
APPEALS · UNKNOWN. Curator inference from documented
signal rules—never a verified fact. |
date_from / date_to | date? | ISO 8601 bounds of the plausible action date. Equal when exact; range when approximate. |
sources | array | [{ url, archive_url }]—live source plus independent archive,
one pair per source. Never empty on published records; every element
archive-anchored. |
enforcement_screenshot_url | string? | Project-hosted screenshot of the platform's enforcement notification. Cleared on verified subject erasure request. |
verification_level | enum | UNVERIFIED · SOURCE_CONFIRMED · PLATFORM_CONFIRMED |
platform_acknowledged | boolean | True only when the platform has publicly confirmed the action. |
confidence_score | int 1–5 | Curator's rubric-anchored reliability assessment. Supplementary signal only. Required, no default. Assigned by curator at intake. |
summary | string | Curator-written summary in schema-enforced reportedly-speech framing. |
curator_commentary | string? | Labeled analytical interpretation. Public, clearly separated from the documentary record. |
created_at | datetime | Intake timestamp (UTC). |
erasure_note | string? | Public annotation set when a verified erasure request is granted:
screenshot cleared, record retained under GDPR Art 17(3)(d).
null on most records. |
schema_version | int | Monotonic schema version; branch on it for format handling. |
Consume via API
Three programmatic surfaces, in increasing order of structure:
MCP / natural language
Connect any MCP client to https://platformactions.org/mcp and ask
analytical questions. See the Ask page.
REST
Paginated JSON endpoints for incidents and findings; stable cursor pagination;
read-only without authentication. Planned for v0.2 release.
Bulk
The milestone releases above, for reproducible analysis. If you are publishing
research, cite the release tag (e.g. 2026.06.12) so your numbers are
reproducible.
License: CDLA-Sharing-1.0
Use the data for anything. Articles, papers, statistics, and models trained on it carry
no obligations (the license's Results exemption). Republishing a modified dataset
requires the same license, attribution to platformactions.org, and prominent change
notices—an altered copy cannot be silently presented as the original. A party that
initiates litigation based on the data loses its license to use it (§5.2).