/capturesWrite scopeCreate a capture. Send the thought as text; if you leave category out, the server classifies it: files it as a contact, event, to-do, idea, note, or link and extracts the useful parts (names, dates, places) into extractedData.
Body · application/json
| Field | Type | Description |
|---|---|---|
rawTextrequired | string | The thought, as text. Required unless transcription is present. |
transcription | string | Already-transcribed speech, if your device did the transcribing. Treated like rawText. |
category | string | One of contact event todo idea note link. Omit it and the server decides. |
capturedAt | ISO 8601 | When the thought happened. Defaults to arrival time. |
latitude, longitude | number | Where it happened. Send both or neither; captures with coordinates show up on the map. |
locationName | string | A human-readable place, e.g. “Grant Park”. |
Headers
| Header | Type | Description |
|---|---|---|
Authorizationrequired | string | Bearer bc_sk_… |
Idempotency-Key | string | Any unique string (up to 128 chars) per capture attempt. Retrying with the same key returns the original capture instead of creating a duplicate. Built for devices on flaky connections that retry until they hear back. |
{
"id": "5b21c6a5-8f4e-4c9a-9d3e-2f7a1c0b8d44",
"rawText": "Idea: braincrumb sticker on the coffee machine",
"category": "idea",
"confidence": 0.91,
"isProcessed": true,
"extractedData": { "title": "BrainCrumb sticker on the coffee machine" },
"capturedAt": "2026-08-05T14:31:07.412Z",
"locationName": null,
"updatedAt": "2026-08-05T14:31:07.412Z"
}Responses
201Created. The full capture, classified and filed.
200Replayed. This
Idempotency-Keyalready landed; you got the original capture back (with anIdempotency-Replayed: trueheader).401Unauthorized. Missing, malformed, or revoked key.
403Forbidden. The key exists but lacks write scope.
429Daily cap reached. Free keys get 50 captures a day, reset at midnight UTC. The response carries a
Retry-Afterheader (seconds). Back off, don’t hammer.