---
title: "Capture into a project"
method: POST
path: "/v1/projects/{slug}/captures"
tags: ["context"]
---

# Capture into a project

`POST /v1/projects/{slug}/captures`

## Request

- Base URL: `https://innernet.live/api`
- URL: `https://innernet.live/api/v1/projects/{slug}/captures`
- Auth: HTTP bearer

Append a note/decision/insight to the project commit log. The background consolidator folds captures into dimensions on the next sync. Send an `idempotency_key` and a retry is safe: the repeat answers 200 with `dedup: true` and the first capture’s hash, and writes nothing. A slug that is a room you stand in (and not one of your own projects) captures into the room: it must pass the room's threshold first, and a note the room keeps back answers 200 with `held: true` and a coarse `reason` — nothing is written, and the words are not repeated.

## Path parameters

- `slug` string, required

## Request body

- object
  - `content` string, required
  - `tags` string[]
  - `user_words` string: The person's own words, copied exactly from their message — never your summary. Only these are kept as theirs; content is kept as your note.
  - `room` string: Name a room outright (its slug, from GET /v1/rooms) — for a person whose own project and a room share a slug. Only an owner or editor of the room may add to it.
  - `idempotency_key` string: A retry of the same capture carries the same key, so it lands once. Reusing a key for different words is a 400.
  - `event_at` string, date-time: When it happened, if not now (a capture replayed after being offline). Kept only within 30 days back and 5 minutes ahead; otherwise ignored.

## Response `200`

Nothing new written: already received (a repeated idempotency_key, `dedup: true`), or a room kept the note back (`held: true`, with a coarse `reason`)

## Other responses

- `201`: Captured
- `400`: Error
- `404`: Error

---

[API](https://skmtc.dev/innernet/apis/innernet-api.md) · [All operations](https://skmtc.dev/innernet/apis/innernet-api/llms.txt) · [OpenAPI document](https://skmtc.dev/innernet/apis/innernet-api/revisions/1ee09aec71a9?raw)
