Data API Documentation
Every endpoint below is a static file generated at build time and served from a CDN. There is no authentication, no API key, and no rate limit beyond the CDN’s own protections. U.S. government source documents are generally public domain (17 U.S.C. §105); this catalog’s metadata is provided as-is. Cataloged by the independent UAP Records Archive — not an official or government source.
Endpoints
| URL | Format | Contents | Count / source of truth |
|---|---|---|---|
| /uap/data/uap-records.json | application/json | Full record catalog: dataset name, license, disclaimer, count, records[] (fields below). | All published records — the payload’s own count field is the source of truth (80 at time of writing). |
| /uap/data/uap-records.csv | text/csv | Same catalog flattened to one row per record; header row id,title,agencyId,recordType,decade,status,topics,officialLandingUrl,sourceUrl,archiveUrls,disclaimer. Array fields are ;-joined. | All published records — one data row per record. |
| /uap/data/uap-records.bib | text/plain (BibTeX) | Bulk citation export: one BibTeX entry per record, linking the archive page and the source landing page. | All published records — one entry per record. |
| /uap/data/uap-records.ris | text/plain (RIS) | Bulk citation export in RIS, importable by Zotero / EndNote. | All published records — one entry per record. |
| /uap/data/uap-media.json | application/json | Inventory of media hosted on this site (videos, documents, images, audio): dataset name, license, disclaimer, count, media[] with type, record, url, label (and poster for video items). | All hosted media items — see the payload’s count field. |
| /uap/data/uap-media.csv | text/csv | Same inventory as CSV; header row type,record,url,label,disclaimer. | All hosted media items — one data row per item. |
| /uap/data/checksums.txt | text/plain (sha256sum) | SHA-256 checksums for every dataset artifact and feed above, regenerated on each build; sha256sum -c compatible. Also available as JSON at /uap/data/checksums.json ({ generated, algorithm, files }). | One line / entry per dataset artifact (12 files). |
| /feed.xml | application/rss+xml (RSS 2.0) | Site-wide feed: one item per published record (title, link, description). | All published records. |
| /feed.json | application/feed+json (JSON Feed 1.1) | Same feed as JSON Feed 1.1; items carry external_url pointing at the source landing page where available. | All published records. |
/feed/{agencyId}.xml | application/rss+xml (RSS 2.0) | Per-agency feed, filtered to one agency’s records. agencyId is one of: aaro, nara, nasa, odni (e.g. /feed/nara.xml). | Published records of that agency only. |
/uap/records/{id}.json | application/json | Single record by id: record (fields below), canonical page URL, license, disclaimer. See example payload below. | One endpoint per published record; ids match the id field in uap-records.json. |
| /search-index.json | application/json (array) | Build-time search index over catalog pages (records, agencies, timeline; en + zh): id, collection, title, slug, url, locale, description, agency, type, decade, status, topics. | One entry per searchable catalog page — the array length is the count. |
| /data.json | application/json (DCAT) | Project Open Data / DCAT catalog metadata describing the datasets above — discovery metadata for data portals, not record data itself. | One catalog document. |
| /pagefind/ | pagefind index (fragmented, on-demand) | Full-text inverted index over reviewed extracts and machine-extracted document texts, chunked per source page. Powers the site search; consumable from any page via the pagefind JS API (/pagefind/pagefind.js). Replaced the former monolithic /doc-search-index*.json endpoints (retired 2026-06-12). | Fragmented — the browser loads only the fragments a query needs. |
| /uap/data/cases.json | application/json | Case layer: verbatim official case designations (PURSUE file titles, quoted AARO record titles) with their grouped hosted assets (documents, videos, images, audio, records) and verbatim incident dates/locations from the official catalog. Groups by official designation only; asserts no conclusions. | The top-level "count" field (one entry per official case designation). |
Per-record endpoint
Each published record is also available as a standalone JSON file at
/uap/records/{id}.json.
Example — /uap/records/aaro-mission.json (truncated):
{
"record": {
"id": "aaro-mission",
"title": "AARO Mission & Agency Page",
"agencyId": "aaro",
"recordType": "agency_landing",
"decade": "2020s",
"status": "official_link_only",
"topics": [
"agency-position-page",
"aaro-case-resolution"
],
"officialLandingUrl": "https://www.aaro.mil/",
"sourceUrl": "https://www.aaro.mil/",
"archiveUrls": ["…"]
},
"canonical": "https://uap-archive.org/uap/records/aaro-mission/",
"license": "…",
"disclaimer": "…"
} Record field reference
The record object is identical in uap-records.json,
uap-records.csv, and the per-record endpoint.
- id
- Unique slug identifier for the record (also the {id} of the per-record endpoint).
- title
- Short descriptive title of the record.
- agencyId
- Identifier of the originating agency. One of: nara, nasa, odni, aaro.
- recordType
- Category of the record. One of: agency_landing, collection_landing, report_landing, imagery_landing.
- decade
- Decade of the source document. One of: 1940s, 1970s, 1980s, 2000s, 2010s, 2020s.
- status
- Verification status in this archive release. One of: official_link_only, needs_review.
- topics
- Topic tags from the archive’s controlled vocabulary (string array in JSON; ;-joined in CSV). May be empty.
- officialLandingUrl
- URL of the official landing page for the source document.
- sourceUrl
- Direct URL to the source document (PDF, video, or web page).
- archiveUrls
- Third-party archive copies, e.g. Wayback Machine (string array in JSON; ;-joined in CSV). May be empty.
Usage examples
curl
# Full record catalog (JSON; payload carries license, disclaimer, count, records[])
curl -s https://uap-archive.org/uap/data/uap-records.json
# One record by id
curl -s https://uap-archive.org/uap/records/aaro-mission.json
# RSS feed for one agency (aaro | nara | nasa | odni)
curl -s https://uap-archive.org/feed/nasa.xml JavaScript (fetch)
const res = await fetch('https://uap-archive.org/uap/data/uap-records.json');
const { count, records } = await res.json();
const reports = records.filter((r) => r.recordType === 'report_landing');
console.log(count, 'records total;', reports.length, 'report landing pages'); License & attribution
U.S. government source documents are generally public domain (17 U.S.C. §105); this catalog’s metadata is provided as-is.
Cataloged by the independent UAP Records Archive — not an official or government source.