---
title: "Create or fully replace a company"
method: PUT
path: "/v1/admin/companies"
tags: ["Admin"]
---

# Create or fully replace a company

`PUT /v1/admin/companies`

## Request

- Base URL: `http://api.technooptimist.io`
- URL: `http://api.technooptimist.io/v1/admin/companies`
- Auth: HTTP bearer

Full upsert from a SeedCompany (same shape as seed files). Everything under the company is replaced, except existing updates (news is append-only). Programs missing from the payload are deleted. `?onlyNew=1` (routines that add companies): 409 and nothing written when the company exists; keep existing ones current with PATCH /admin/companies/{company} and PUT …/items.

## Query parameters

- `onlyNew` '1' | 'true': Create only: 409 if it already exists

## Headers

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

## Request body

- object
  - `frontier` string, required
  - `company` object, required
    - `slug` string, required
    - `name` string, required
    - `keywords` string, required
    - `description` string, required
    - `website` string, uri
    - `hq` string[], required
    - `founded` integer
    - `status` 'private' | 'public' | 'subsidiary' | 'acquired' | 'defunct' | 'government' | 'nonprofit', required
    - `parent` string
    - `ticker` string
    - `exchange` string
    - `employees` integer
    - `employeesAsOf` string
    - `valuation` object
      - `usd` number, required
      - `kind` 'market_cap' | 'private_valuation' | 'deal_value' | 'none', required
      - `asOf` string, required
      - `provenance` 'reported' | 'estimated' | 'sample', required
    - `fields` string[], required
    - `alsoFrontiers` string[]
    - `brief` string[]
    - `technicalApproach` object[]
      - `label` string, required
      - `title` string, required
      - `body` string, required
    - `openProblems` object[]
      - `title` string, required
      - `body` string, required
      - `status` 'open' | 'active_research' | 'partially_solved' | 'solved'
    - `people` object[]
      - `name` string, required
      - `role` string, required
      - `url` string, uri
    - `funding` object[]
      - `date` string, required
      - `round` string, required
      - `amountUsd` number
      - `postMoneyUsd` number
      - `leads` string[]
      - `provenance` 'reported' | 'estimated' | 'sample'
    - `relationships` object[]
      - `name` string, required
      - `kind` 'customer' | 'investor' | 'supplier' | 'partner' | 'acquirer', required
      - `note` string
      - `companySlug` string
      - `url` string, uri
    - `research` object[]
      - `date` string, required
      - `kind` 'paper' | 'blog' | 'demo' | 'talk' | 'dataset' | 'code', required
      - `title` string, required
      - `why` string, required
      - `programSlug` string
      - `url` string, uri
    - `instruments` object[]
      - `symbol` string, required
      - `kind` 'stock' | 'preipo_perp', required
    - `programs` object[], required
      - `slug` string, required
      - `name` string, required
      - `keywords` string, required
      - `statusLine` string, required
      - `description` string, required
      - `goal` string, required
      - `stage` 'research' | 'proto' | 'pilot' | 'deploy' | 'scaling', required
      - `isFlagship` boolean
      - `frontier` string
      - `field` string
      - `previousGeneration` string
      - `milestones` object[]
        - `title` string, required
        - `date` string
        - `status` 'done' | 'current' | 'planned' | 'missed', required
        - `originalTarget` string
        - `note` string
      - `specs` object[]
        - `key` string, required
        - `label` string, required
        - `value` string, required
        - `numeric` number
        - `unit` string
        - `previous` string
        - `provenance` 'reported' | 'estimated' | 'sample', required
      - `howItWorks` object[]
        - `label` string, required
        - `title` string, required
        - `body` string, required
      - `obstacles` object[]
        - `title` string, required
        - `body` string, required
        - `status` 'open' | 'active_research' | 'partially_solved' | 'solved'
      - `limits` object[]
        - `title` string, required
        - `body` string, required
      - `catalysts` object[]
        - `title` string, required
        - `date` string, required
        - `kind` string
      - `checkedAt` string
    - `updates` object[]
      - `date` string, required
      - `headline` string, required
      - `programSlug` string
      - `kind` 'test' | 'hardware' | 'software' | 'manufacturing' | 'regulatory' | 'funding' | 'hiring' | 'commercial' | 'research' | 'partnership' | 'people' | 'other', required
      - `importance` 'major' | 'minor', required
      - `sourceType` 'x' | 'blog' | 'filing' | 'press' | 'livestream' | 'paper' | 'job' | 'regulator' | 'interview' | 'other', required
      - `sourceUrl` string, uri
      - `summary` string
      - `points` string[]
      - `alsoFrontiers` string[]
      - `verified` boolean
    - `checkedAt` string

## Response `200`

Company page

- CompanyWriteResult
  - `ok` true, required
  - `company` CompanyPage, required
    - `company` object, required
      - `slug` string, required
      - `name` string, required
      - `keywords` string, required
      - `description` string, required
      - `website` string, nullable, required
      - `hq` string[], required
      - `foundedYear` number, nullable, required
      - `status` string, required
      - `parent` string, nullable, required
      - `ticker` string, nullable, required
      - `exchange` string, nullable, required
      - `employees` number, nullable, required
      - `employeesAsOf` string, date, nullable, required
      - `valuationUsd` number, nullable, required
      - `valuationKind` 'market_cap' | 'private_valuation' | 'deal_value' | 'none', required
      - `valuationAsOf` string, date, nullable, required
      - `valuationProvenance` 'reported' | 'estimated' | 'sample', nullable, required
      - `score` number, nullable, required
      - `logoUrl` string, nullable, required
      - `brief` string[], required
      - `lastUpdateAt` string, date-time, nullable, required
      - `checkedAt` string, date-time, nullable, required: When we last verified these facts (null = never stamped).
    - `frontiers` object[], required
      - `slug` string, required
      - `name` string, required
      - `field` object, nullable, required
        - `slug` string, required
        - `name` string, required
      - `isPrimary` boolean, required
    - `programs` object[], required
      - `slug` string, required
      - `name` string, required
      - `keywords` string, required
      - `description` string, required
      - `statusLine` string, required
      - `stage` 'research' | 'proto' | 'pilot' | 'deploy' | 'scaling', required
      - `isFlagship` boolean, required
      - `imageUrl` string, nullable, required
      - `frontier` object, required
        - `slug` string, required
        - `name` string, required
      - `path` string, required: Canonical site path. Programs live under their frontier.
      - `milestones` object, required
        - `done` integer, required
        - `total` integer, required
      - `next` object, nullable, required
        - `title` string, required
        - `status` 'done' | 'current' | 'planned' | 'missed', required
        - `date` LooseDate, nullable, required
          - `date` string, date, required
          - `precision` 'day' | 'month' | 'quarter' | 'year', required
        - `slipMonths` number, nullable, required
      - `lastUpdateAt` string, date-time, nullable, required
    - `approach` object[], required
      - `label` string, nullable, required
      - `title` string, required
      - `body` string, required
    - `problems` object[], required
      - `title` string, required
      - `body` string, required
      - `status` 'open' | 'active_research' | 'partially_solved' | 'solved', nullable, required
    - `people` object[], required
      - `name` string, required
      - `role` string, required
      - `url` string, uri, nullable, required
    - `funding` object[], required
      - `date` string, date, required
      - `precision` 'day' | 'month' | 'quarter' | 'year', required
      - `round` string, required
      - `amountUsd` number, nullable, required
      - `postMoneyUsd` number, nullable, required
      - `leads` string[], required
      - `provenance` 'reported' | 'estimated' | 'sample', required
    - `relationships` object[], required
      - `name` string, required
      - `kind` 'customer' | 'investor' | 'supplier' | 'partner' | 'acquirer', required
      - `note` string, nullable, required
      - `url` string, uri, nullable, required
      - `companySlug` 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
      - `program` object, nullable, required
        - `slug` string, required
        - `name` string, required
        - `frontier` string, required
        - `path` string, required: Canonical site path. Programs live under their frontier.
    - `catalysts` object[], required
      - `title` string, required
      - `date` string, date, required
      - `precision` 'day' | 'month' | 'quarter' | 'year', required
      - `kind` string, nullable, 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.
    - `instruments` object[], required
      - `symbol` string, required
      - `kind` 'stock' | 'preipo_perp', required
      - `price` number, nullable, required
      - `changePct` number, nullable, required
    - `peers` object[], required
      - `slug` string, required
      - `name` string, required
      - `hq` string[], required
      - `valuationUsd` number, nullable, required
      - `valuationKind` string, required
      - `flagship` object, nullable, required
        - `slug` string, required
        - `name` string, required
        - `stage` 'research' | 'proto' | 'pilot' | 'deploy' | 'scaling', 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)
