---
title: "Add, update or remove one person, funding round, relationship, approach block or open problem"
method: PUT
path: "/v1/admin/companies/{company}/items"
tags: ["Admin"]
---

# Add, update or remove one person, funding round, relationship, approach block or open problem

`PUT /v1/admin/companies/{company}/items`

## Request

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

`kind`: person (matched by name) | funding (round name + year) | relationship (counterparty name) | approach (technical-approach block, by title) | problem (open problem, by title), case-insensitive. A match is updated, otherwise added; `remove: true` deletes the match (404 when none). Stamps `checkedAt`.

## Path parameters

- `company` string, required

## Headers

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

## Request body

- union
  - object
    - `kind` 'person', required
    - `remove` boolean
    - `item` object, required
      - `name` string, required
      - `role` string, required
      - `url` string, uri
  - object
    - `kind` 'funding', required
    - `remove` boolean
    - `item` object, required
      - `date` string, required
      - `round` string, required
      - `amountUsd` number
      - `postMoneyUsd` number
      - `leads` string[]
      - `provenance` 'reported' | 'estimated' | 'sample'
  - object
    - `kind` 'relationship', required
    - `remove` boolean
    - `item` object, required
      - `name` string, required
      - `kind` 'customer' | 'investor' | 'supplier' | 'partner' | 'acquirer', required
      - `note` string
      - `companySlug` string
      - `url` string, uri
  - object
    - `kind` 'approach', required
    - `remove` boolean
    - `item` object, required
      - `label` string, required
      - `title` string, required
      - `body` string, required
  - object
    - `kind` 'problem', required
    - `remove` boolean
    - `item` object, required
      - `title` string, required
      - `body` string, required
      - `status` 'open' | 'active_research' | 'partially_solved' | 'solved'

## 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)
