Skip to main content
These endpoints add data to your Cognee Cloud tenant. All require authentication via API key. For the underlying concepts, see Remember and Add.

Remember

POST /api/v1/remember — Ingest data and build the knowledge graph in a single call. Combines the add and cognify steps. Equivalent to calling cognee.remember() in the Python SDK. Accepts multipart form data. For most workflows, remember is the simplest entry point; use the lower-level add + cognify operations separately when you need to upload multiple files before triggering processing.
On a completed run, the response includes items_processed — the count of successfully ingested items (entries whose pipeline run did not error).

Error responses

A graph_model that is invalid JSON or cannot be converted to a schema is now rejected with 400 rather than being silently ignored. Empty optional fields (content_type, graph_model, session_id, node_set entries) are treated as omitted.

How per-file labels and metadata work

POST /api/v1/remember and POST /api/v1/add both accept two optional form fields that attach a label and arbitrary metadata to each uploaded file. They are the HTTP equivalent of the Python SDK’s DataItem(label=..., external_metadata=...). Each field is sent as a single JSON part, not one part per file, because multipart clients cannot reliably repeat an array form field. Entries pair positionally with the uploaded files: the Nth entry applies to the Nth file.
When either field carries at least one non-empty entry, it must have exactly one entry per uploaded file — a partial list is ambiguous and returns 400. external_metadata is merged into the file’s stored metadata, with your keys taking precedence over loader-derived ones; node_set is reserved and rejected, so use the node_set form field instead. Saved values are returned by GET /api/v1/datasets/{dataset_id}/data as label and externalMetadata.
Swagger UI caveat. Typing a JSON array of strings into the labels field in Swagger UI sends it as a comma-joined string (finance,people,). The endpoint accepts that form equivalently, so try-it-out works — but it means a label cannot contain a comma unless your client sends real JSON. external_metadata has no comma-separated fallback: it must always be valid JSON.

Lower-level operations

The following endpoints provide more granular control over data ingestion. Most users should prefer remember above.

Add

POST /api/v1/add — Upload files to a dataset without processing. Accepts multipart form data. Files are stored in the dataset but not yet processed into the knowledge graph — call cognify separately.
Unlike remember, add has no session_id or content_type, so labels and external_metadata are always available here. Supported file types:
  • Documents — PDF, TXT, Markdown, CSV, JSON, DOCX, PPTX
  • Images — PNG, JPG, JPEG, GIF, WEBP, TIFF, BMP, and more, extracted via the tenant’s configured vision model
  • Audio — MP3, WAV, M4A, OGG, FLAC, and more, transcribed to text
Images and audio are converted to text using the tenant’s configured LLM before the knowledge graph is built, so they are ingested the same way as text documents. The same file types apply to POST /api/v1/remember.

Update

PATCH /api/v1/update — Replace an existing document in a dataset. Accepts multipart form data. Requires both the data item ID and dataset ID as query parameters.