---
title: "Mark a program as checked"
method: POST
path: "/v1/admin/programs/{company}/{program}/checked"
tags: ["Admin"]
---

# Mark a program as checked

`POST /v1/admin/programs/{company}/{program}/checked`

## Request

- Base URL: `http://api.technooptimist.io`
- URL: `http://api.technooptimist.io/v1/admin/programs/{company}/{program}/checked`
- Auth: HTTP bearer

Stamps the program's `checkedAt` ("last checked") without changing anything else: call it after re-verifying a program page when nothing changed. Body: `at` (ISO datetime or YYYY-MM-DD) defaults to now; `sources` (the pages checked) is required from routines. Program writes (patch, milestones, specs, full upsert) stamp it themselves.

## Path parameters

- `company` string, required
- `program` string, required

## Headers

- `x-routine-name` string: Name of the routine making the write; recorded as `routine:<name>` in the audit log.

## Request body

- object
  - `at` union
    - string, date-time
    - string
  - `sources` string[]

## Response `200`

Updated program page

- ProgramWriteResult
  - `ok` true, required
  - `program` ProgramPage, required
    - `company` object, required
      - `slug` string, required
      - `name` string, required
      - `hq` string[], required
      - `logoUrl` string, nullable, required
      - `keywords` string, required
      - `description` string, required
      - `brief` string[], required
      - `foundedYear` number, nullable, required
      - `status` string, required
      - `parent` string, nullable, required
      - `employees` number, nullable, required
      - `valuationUsd` number, nullable, required
      - `valuationKind` 'market_cap' | 'private_valuation' | 'deal_value' | 'none', required
      - `people` object[], required
        - `name` string, required
        - `role` string, required
        - `url` string, uri, nullable, required
      - `checkedAt` string, date-time, nullable, required: When we last verified these facts (null = never stamped).
    - `program` object, required
      - `slug` string, required
      - `name` string, required
      - `keywords` string, required
      - `description` string, required
      - `goal` string, nullable, required: What the program is trying to achieve and why it matters.
      - `statusLine` string, required
      - `stage` 'research' | 'proto' | 'pilot' | 'deploy' | 'scaling', required
      - `isFlagship` boolean, required
      - `previousGeneration` string, nullable, required
      - `imageUrl` string, nullable, required
      - `frontier` object, required
        - `slug` string, required
        - `name` string, required
      - `field` object, nullable, required
        - `slug` string, required
        - `name` string, required
      - `lastUpdateAt` string, date-time, nullable, required
      - `path` string, required: Canonical site path. Programs live under their frontier.
      - `checkedAt` string, date-time, nullable, required: When we last verified these facts (null = never stamped).
    - `milestones` object[], required
      - `title` string, required
      - `status` 'done' | 'current' | 'planned' | 'missed', required
      - `date` LooseDate, nullable, required
        - `date` string, date, required
        - `precision` 'day' | 'month' | 'quarter' | 'year', required
      - `originalTarget` LooseDate, nullable, required
        - `date` string, date, required
        - `precision` 'day' | 'month' | 'quarter' | 'year', required
      - `note` string, nullable, required
    - `specs` object[], required
      - `key` string, required
      - `label` string, required
      - `value` string, required
      - `numeric` number, nullable, required
      - `unit` string, nullable, required
      - `previous` string, nullable, required
      - `provenance` 'reported' | 'estimated' | 'sample', required
    - `howItWorks` object[], required
      - `label` string, nullable, required
      - `title` string, required
      - `body` string, required
    - `obstacles` object[], required: The program's own current obstacles.
      - `title` string, required
      - `body` string, required
      - `status` 'open' | 'active_research' | 'partially_solved' | 'solved', nullable, required
    - `limits` object[], required: Fundamental physics/technology limits of this kind of technology: why it can't simply be made better.
      - `title` string, required
      - `body` string, required
    - `important` object, required: Most important updates: the top-ranked of the last 3 months, topped up with the most important older ones to at least 5.
      - `items` FeedItem[], required
        - `id` string, uuid, required
        - `occurredAt` string, date-time, required
        - `precision` 'day' | 'month' | 'quarter' | 'year', required
        - `headline` string, required
        - `kind` 'test' | 'hardware' | 'software' | 'manufacturing' | 'regulatory' | 'funding' | 'hiring' | 'commercial' | 'research' | 'partnership' | 'people' | 'other', required
        - `importance` 'major' | 'minor', required
        - `rank` integer, required
        - `sourceType` 'x' | 'blog' | 'filing' | 'press' | 'livestream' | 'paper' | 'job' | 'regulator' | 'interview' | 'other', required
        - `sourceUrl` string, uri, nullable, required: Link to the original story (article, press release, filing, video). Null when unknown.
        - `summary` string, nullable, required: The story in our words: 2–4 sentences on what happened and why it matters, written from the source. Null when not written yet.
        - `company` object, required
          - `slug` string, required
          - `name` string, required
        - `program` object, nullable, required
          - `slug` string, required
          - `name` string, required
          - `frontier` string, required
          - `path` string, required: Canonical site path. Programs live under their frontier.
        - `frontiers` string[], required
        - `createdAt` string, date-time, required
      - `recentOnly` boolean, required: True when every item is from the last 3 months; false when older items were added to reach at least 5.
    - `events` object, required: Important events (at most 20 per list).
      - `upcoming` ProgramEvent[], required: Catalysts and planned/current milestones with a date, soonest first.
        - `title` string, required
        - `date` object, nullable, required
          - `date` string, date, required
          - `precision` 'day' | 'month' | 'quarter' | 'year', required
        - `source` 'catalyst' | 'milestone' | 'update', required
        - `status` 'done' | 'current' | 'planned' | 'missed', nullable, required: Milestones only.
        - `originalTarget` object, nullable, required: Milestones only: the original target when the date slipped.
          - `date` string, date, required
          - `precision` 'day' | 'month' | 'quarter' | 'year', required
        - `slipMonths` integer, nullable, required
        - `kind` string, nullable, required: Catalyst kind or update kind.
        - `update` object, nullable, required: The story behind the event (updates, and milestones matched to the update that reported them).
          - `id` string, uuid, required
          - `headline` string, required
          - `sourceType` 'x' | 'blog' | 'filing' | 'press' | 'livestream' | 'paper' | 'job' | 'regulator' | 'interview' | 'other', required
          - `sourceUrl` string, nullable, required
      - `past` ProgramEvent[], required: Done/missed milestones and major updates, newest first. A milestone and the update reporting it appear once.
        - `title` string, required
        - `date` object, nullable, required
          - `date` string, date, required
          - `precision` 'day' | 'month' | 'quarter' | 'year', required
        - `source` 'catalyst' | 'milestone' | 'update', required
        - `status` 'done' | 'current' | 'planned' | 'missed', nullable, required: Milestones only.
        - `originalTarget` object, nullable, required: Milestones only: the original target when the date slipped.
          - `date` string, date, required
          - `precision` 'day' | 'month' | 'quarter' | 'year', required
        - `slipMonths` integer, nullable, required
        - `kind` string, nullable, required: Catalyst kind or update kind.
        - `update` object, nullable, required: The story behind the event (updates, and milestones matched to the update that reported them).
          - `id` string, uuid, required
          - `headline` string, required
          - `sourceType` 'x' | 'blog' | 'filing' | 'press' | 'livestream' | 'paper' | 'job' | 'regulator' | 'interview' | 'other', required
          - `sourceUrl` string, nullable, required
    - `catalysts` object[], required
      - `title` string, required
      - `date` string, date, required
      - `precision` 'day' | 'month' | 'quarter' | 'year', required
      - `kind` string, nullable, required
    - `research` object[], required
      - `date` string, date, required
      - `precision` 'day' | 'month' | 'quarter' | 'year', required
      - `kind` 'paper' | 'blog' | 'demo' | 'talk' | 'dataset' | 'code', required
      - `title` string, required
      - `why` string, required
      - `url` string, uri, nullable, required
    - `siblings` object[], required
      - `slug` string, required
      - `name` string, required
      - `stage` 'research' | 'proto' | 'pilot' | 'deploy' | 'scaling', required
      - `frontier` string, required
      - `path` string, required: Canonical site path. Programs live under their frontier.
    - `peers` object[], required
      - `company` object, required
        - `slug` string, required
        - `name` string, required
      - `slug` string, required
      - `name` string, required
      - `stage` 'research' | 'proto' | 'pilot' | 'deploy' | 'scaling', required
      - `path` string, required: Canonical site path. Programs live under their frontier.
      - `specs` object, required

## Other responses

- `401`: Missing or invalid credentials
- `403`: Credential lacks the required scope
- `404`: Not found
- `409`: Conflict
- `422`: Validation failed

---

[API](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api.md) · [All operations](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api/llms.txt) · [OpenAPI document](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api/revisions/b7bcde6a0f30?raw)
