Captures
Create capture
Section titled “Create capture”POST /api/v1/capturesContent-Type: application/jsonRequest body
Section titled “Request body”{ "title": "Article title", "url": "https://example.com/article", "content_type": "article", "why": "Relevant to current project", "selected_text": "Key passage from the page", "raw_content": "<html>...</html>", "source": "cli"}| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Capture title |
url | string | No | Source URL |
content_type | string | Yes | tweet, video, repo, article, pdf, audio, note, image |
why | string | No | Reason for capturing |
selected_text | string | No | Highlighted text from the page |
raw_content | string | No | Raw HTML content |
source | string | Yes | browser-extension, cli, api, or mcp |
Returns 201 with capture ID and status: "pending". The capture is queued for processing.
Upload file
Section titled “Upload file”POST /api/v1/captures/uploadContent-Type: multipart/form-data| Field | Type | Required | Description |
|---|---|---|---|
file | binary | Yes | The file to upload |
title | string | No | Override title |
why | string | No | Reason for capturing |
Supported types: PDF, PNG, JPEG, GIF, WebP, Word (.doc/.docx), plain text, markdown
Max size: 25 MB
File type is verified using magic bytes, not just the extension.
Returns 201 with capture ID.
Check URL
Section titled “Check URL”GET /api/v1/captures/check?url=https://example.comCheck if a URL has already been captured. Returns 200 if found, 404 if not.
List captures
Section titled “List captures”GET /api/v1/captures| Parameter | Type | Default | Description |
|---|---|---|---|
page | number | 1 | Page number |
per_page | number | 20 | Results per page (max 100) |
status | string | — | Filter by status |
Get capture
Section titled “Get capture”GET /api/v1/captures/:idReturns capture details including metadata and processing status.
Get capture content
Section titled “Get capture content”GET /api/v1/captures/:id/content| Parameter | Type | Default | Description |
|---|---|---|---|
format | string | — | markdown for processed content, omit for raw |
Returns the capture content with appropriate Content-Type header.
Capture lifecycle
Section titled “Capture lifecycle”Retry processing
Section titled “Retry processing”POST /api/v1/captures/:id/retryRe-queue a failed capture for processing. Returns 409 if already processing.
Reingest
Section titled “Reingest”POST /api/v1/captures/:id/reingestFull reprocessing through the entire pipeline.
Archive
Section titled “Archive”POST /api/v1/captures/:id/archiveUnarchive
Section titled “Unarchive”POST /api/v1/captures/:id/unarchiveDismiss
Section titled “Dismiss”POST /api/v1/captures/:id/dismissDelete
Section titled “Delete”DELETE /api/v1/captures/:idActivity log
Section titled “Activity log”GET /api/v1/captures/:id/activityReturns the timeline of events for a capture (created, retried, archived, etc.).
Provenance
Section titled “Provenance”GET /api/v1/captures/:id/provenanceReturns the full processing chain with timestamps, AI model used, and outputs at each stage.