Objects
An object is any item you've saved to your mind — a URL, note, image, or document. Every object has a type, optional content, and metadata like tags, spaces, and AI-generated fields.
The object model
| Property | Type | Description |
|---|---|---|
| id | Uid | Unique identifier for the object. |
| title | string | Display title. Set by the user, extracted from the source URL or content, or generated by AI. |
| blob? | BlobReference | The underlying media for the object — present for uploaded files (images, video, PDFs) and similar binary content. |
| content? | Content | The content body, if the object carries inline content. |
| embeddings? | ObjectEmbedding[] | Vector embeddings for the object. Only present when requested with ?include=embeddings on List objects or Get an object. |
| mainEntity? | Entity | The primary entity this object is about; its kind is given by mainEntity.@type. Discovered during analysis, so it may not be available right away. |
| summary | string | AI generated summary of the object. |
| screenshot? | BlobReference | Screenshot captured at save time — typically the rendered view of a saved web page. Bytes can also be fetched directly via Get object screenshot. |
| spaces? | ObjectSpace[] | Spaces this object belongs to. |
| tags | ObjectTag[] | Tags associated with this object. |
| notes? | ObjectNote[] | Notes attached to this object. |
| source? | ObjectSource | The original source of the content. |
| bumped | Timestamp | When the object was last bumped. Defaults to created, then updates whenever the same content is saved again — re-posting the URL, re-uploading the blob, or otherwise resolving to an existing object (see Create an object). |
| created | Timestamp | When the object was created. |
| modified | Timestamp | When the object was last modified. |
| deleted? | Timestamp | Present only when the object has been soft-deleted. Deleted objects remain available for 30 days — they're excluded from list and search results, can still be retrieved by ID, and are permanently destroyed when the window expires. See Restore an object. |
The entities array has been replaced by a single mainEntity — objects now expose only their primary entity rather than a list. If you're relying on the undocumented object.entityType property, migrate to mainEntity.@type as soon as possible — that property is being removed imminently.
ObjectSource
| Property | Type | Description |
|---|---|---|
| url | string | The original source URL. |
ObjectSpace
| Property | Type | Description |
|---|---|---|
| id | Uid | The space's unique identifier. |
ObjectNote
| Property | Type | Description |
|---|---|---|
| id | Uid | Unique identifier for the note. |
| content | Content | The note's body. |
ObjectTag
| Property | Type | Description |
|---|---|---|
| id? | Uid | Identifier for the tag as applied to this object, assigned by the server — standalone tags are global and keyed by name, with no id of their own. Only exists once the tag has been created, so it's absent when you add a tag by name. Reference it when removing tags by id. |
| name | string | The tag label. |
| flags | TagFlag | How the tag was applied. |
ObjectEmbedding
By default, an object's embedding is an interleaved representation of the object and its attachments — its own content and attached media encoded together. The exact representation may change over time, so treat the vector as opaque rather than depending on a specific encoding.
| Property | Type | Description |
|---|---|---|
| id | Uid | Unique identifier for the embedding. |
| vector | number[] | The embedding — an array of 32-bit floats, up to 3,072 dimensions. |
| modelId | number | Identifier of the model that produced the vector. |
Actions
List objects
Returns all objects belonging to the authenticated user. Objects outside the access key's content scope are silently omitted from results.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| q | string | — | Search query. See syntax. |
| id | Uid | — | Object IDs to fetch. Repeatable: ?id=…&id=…. |
| spaceId | Uid | — | Restrict results to objects belonging to the given space. |
| similarTo Mastermind | Uid | — | Return objects related to the given object ID, ranked by similarity. |
| contentAs | string | native | Format for content body. Currently text/markdown. |
| limit | integer | 10000 |
Max results. Capped at 10000 — the cap is removed when streaming with Accept: application/jsonl. |
| include | string | — | Include fields omitted by default. Currently embeddings — adds the ObjectEmbedding[] array to each object. |
When q is provided, results are capped at 1000 and search costs apply. The cap is lifted in streaming mode.
Headers
| Header | Description |
|---|---|
| Accept required | Either application/json (returns a single array) or application/jsonl (streaming mode — every matching object as newline-delimited JSON). |
[
{
"id": "a1B2c3D4e5F6g7H8i9J0k1",
"title": "The Art of Plain Text",
"url": "https://example.com/plain-text",
"content": {
"type": "text/markdown",
"body": "# The Art of Plain Text\n\nPlain text is the most portable, future-proof format..."
},
"tags": [
{ "name": "writing" },
{ "name": "tools" }
],
"created": "2024-03-01T12:00:00Z",
"modified": "2024-03-01T12:00:00Z",
"bumped": "2024-03-01T12:00:00Z"
}
]
{"id":"a1B2c3D4e5F6g7H8i9J0k1","title":"The Art of Plain Text",…}
{"id":"z9Y8x7W6v5U4t3S2r1Q0p9","title":"Meeting notes",…}
{"id":"m5N6o7P8q9R0s1T2u3V4w5","title":"Reading list",…}
Create an object
Creates a new object from a URL, inline content, or uploaded file.
Request body
| Property | Type | Description |
|---|---|---|
| title | string | Display title. If omitted, it's extracted from the url or content. |
| spaces | ObjectSpace[] | Spaces to add the object to on creation. |
| tags | ObjectTag[] | Tags to attach on creation. |
| notes | ObjectNote[] | Notes to attach on creation. Provide only the content — e.g. [{ "content": { "type": "text/markdown", "body": "…" } }]; note ids are assigned by the server. Same limits as Create an object note. |
| One of provide exactly one — combining them returns 400 | ||
| blob multipart only | binary | Raw file bytes sent alongside the metadata. Only valid when the request is multipart/form-data — encode the metadata JSON as the metadata part and the bytes as the blob part. The filename parameter of the blob part's Content-Disposition header is captured as the blob's name. Capped at 64 MB. See supported formats. |
| content | string | Content | The content body. Pass a plain string or a structured Content object. |
| url | string | A remote URL to save. |
{
"id": "a1B2c3D4e5F6g7H8i9J0k1",
"title": "Example Article",
"url": "https://example.com/article",
"tags": [
{ "name": "reading" }
],
"created": "2024-04-08T09:00:00Z",
"modified": "2024-04-08T09:00:00Z",
"bumped": "2024-04-08T09:00:00Z"
}
{
"id": "a1B2c3D4e5F6g7H8i9J0k1",
"title": "Example Article",
"url": "https://example.com/article",
"tags": [
{ "name": "reading" }
],
"created": "2024-04-08T09:00:00Z",
"modified": "2024-04-08T09:00:00Z",
"bumped": "2024-04-08T15:30:00Z"
}
If the request body resolves to a blob that already exists in your mind — the same URL, the same content body, or a byte-identical upload — the API returns the existing object instead of creating a duplicate, refreshes its bumped timestamp, and responds with 200 OK rather than 201 Created.
Get an object
Retrieves a single object by its ID.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to retrieve. |
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| contentAs | string | native | Format for content body. Currently text/markdown. |
| include | string | — | Include fields omitted by default. Currently embeddings — adds the ObjectEmbedding[] array to the object. |
{
"id": "a1B2c3D4e5F6g7H8i9J0k1",
"title": "The Art of Plain Text",
"url": "https://example.com/plain-text",
"content": {
"type": "text/markdown",
"body": "# The Art of Plain Text\n\nPlain text is the most portable, future-proof format..."
},
"tags": [
{ "name": "writing" },
{ "name": "tools" }
],
"created": "2024-03-01T12:00:00Z",
"modified": "2024-03-01T12:00:00Z",
"bumped": "2024-03-01T12:00:00Z"
}
Get object blob
Returns the original blob that was uploaded to the object — no transcoded or derived variants. Only works for objects with a single uploaded attachment (e.g. an image, video, or PDF); returns 422 otherwise. The response may be a 302 redirect to a CDN URL, so your client must follow redirects.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to fetch. |
<original blob bytes>
Location: https://mymind.media/...
Get object content
Returns the content of a text-based object. Set the Accept header to pick a format, or omit it to receive the content in its native format. Only works for text-based objects (e.g. article, note). Returns 422 for non-text types, and 406 if the requested format isn't supported.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to read. |
Headers
| Header | Description |
|---|---|
| Accept | One of text/markdown, application/prose+json, or text/html. Omit to receive the content in its native format. |
# The Art of Plain Text
Plain text is the most portable, future-proof format for writing...
Get object screenshot
Returns the screenshot captured at save time — typically the rendered view of a saved web page or article. Returns 422 for objects without a screenshot. The response may be a 302 redirect to a CDN URL, so your client must follow redirects.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to fetch. |
<screenshot image bytes>
Location: https://mymind.media/...
Get object thumbnail
Returns a thumbnail image for the object. Useful for previews, lists, and grids. Available for any object with a renderable thumbnail (images, videos, articles with cover images, etc.).
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to preview. |
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| size | string | full | Containment box as WxH (e.g. 100x100). The thumbnail is scaled to fit inside this box, preserving aspect ratio — equivalent to CSS object-fit: contain. Omit for the default, pre-rendered thumbnail. |
<image bytes>
Location: https://mymind.media/...
// signed URL, valid for ~5 minutes
Update an object
Updates an object's metadata. Only include the fields you want to change — omitted fields are left untouched.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to update. |
Request body
| Property | Type | Description |
|---|---|---|
| title | string | New display title for the object. |
| summary | string | New summary for the object. |
| completed | boolean | Mark the object as completed, or pass false to clear it. |
{}
Create an object note
Appends a new note to the object's notes array and returns its assigned id. Send Markdown for a simple note, or Prose to preserve rich formatting.
Objects can hold up to 100 notes via the API, but the mymind app currently surfaces only the first one (notes[0]). Additional notes are stored and returned by the API, but won't be visible in the app until multi-note UI ships.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to attach the note to. |
Headers
| Header | Description |
|---|---|
| Content-Type required | Either text/markdown or application/prose+json. |
Request body
The note body, in the format declared by Content-Type.
Reminders for later:
- [ ] Follow up with Sam
- [ ] Check on the proofs
{
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [{ "type": "text", "text": "Reminders for later:" }]
},
{
"type": "taskList",
"content": [
{
"type": "taskItem",
"attrs": { "checked": false },
"content": [
{
"type": "paragraph",
"content": [{ "type": "text", "text": "Follow up with Sam" }]
}
]
},
{
"type": "taskItem",
"attrs": { "checked": false },
"content": [
{
"type": "paragraph",
"content": [{ "type": "text", "text": "Check on the proofs" }]
}
]
}
]
}
]
}
{
"id": "n4K8m2N6p9Q3r5T7v1X0z2"
}
Update an object note
Replaces the body of an existing note. Returns 404 if the note doesn't exist on the object. This is a full replace — not a patch.
Delete an object note
Removes a note from the object's notes array. Idempotent — deleting a note that's already gone is a no-op.
Update object content
Replaces the entire content body of a Note. Returns 422 for any other object type. This is a full replace — not a patch. Send Markdown for a simple rewrite, or Prose to preserve rich formatting.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to update. |
Headers
| Header | Description |
|---|---|
| Content-Type required | Either text/markdown or application/prose+json. |
{}
Add tags to an object
Adds tags to an object.
Remove tags from an object
Removes one or more tags from an object. Tags can be referenced by name or by id — mix and match within the same request. Removing a tag that isn't on the object is a no-op.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to untag. |
Request body
An array of tag references. Each entry must contain either name or id.
[
{ "name": "design" },
{ "name": "inspiration" }
]
[
{ "id": "t8R3p9K2m5N7q1V4x6L0z8" }
]
{}
Add an object to spaces
Adds an object to one or more spaces. Objects may belong to a maximum of 100 spaces.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to add. |
Request body
[
{ "id": "j5K6l7M8n9O0p1Q2r3S4t5" }
]
{}
Pin an object
Pins an object to your top of mind. Pass an optional position in the body to control ordering — omit it to append to the end.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| id | Uid | Object to pin. |
Request body
| Property | Type | Description |
|---|---|---|
| position | number | Zero-based slot in your top of mind. Omit to append to the end. |
{}
Unpin an object
Removes an object from your top of mind. Idempotent — unpinning an object that isn't pinned is a no-op.
Delete an object
Soft-deletes an object. Deleted objects are recoverable for 30 days, after which they are permanently destroyed.
Restore an object
Restores a deleted object. Objects can be restored within 30 days of deletion.