v1 modals

Learn from Context (Ingest Messages)

Ingests a list of messages (conversation history) into long-term memory.

The system automatically handles different modalities embedded in the messages:
- **Text** is embedded directly
- **Images/Video** are captioned/described by vision models, then embedded
- **Audio** is transcribed, then embedded

**Universal Base Params:**
- user_id (str, required): The user these memories belong to
- project_id (str, optional): The project bucket (optional)
- persona_id (str, optional): Link these memories to a specific persona

**Input (Multimodal):**
- messages (array, required): A standard chat history list. Can contain Text, Image, Video, and Audio.
- session_id (str, optional): Optional session identifier for conversation context

**Example:**
```json
{
    "user_id": "user_123",
    "project_id": "proj_ABC",
    "session_id": "session_123",
    "messages": [
        {"role": "user", "type": "image", "content": "<base64 encoded image data>"},
        {"role": "assistant","type": "text", "content": "The animation is too slow"},
        {"role": "user", "content": "Good catch. Let's speed it up to 200ms."}
        ],
        "timestamp": "2026-02-07T12:00:00Z"
    }
    ```
post/v1/modal/learn

Request body

user_idstring required

The user these memories belong to (required)

project_idstring nullable

The project bucket (optional)

persona_idstring nullable

Optional persona ID. Link these memories to a specific persona.

session_idstring nullable

Optional session identifier for conversation context

timestampstring nullable

ISO format datetime string for the message timestamp

Example request

{
  "messages": [
    {
      "content": "job_id_123",
      "type": "image"
    },
    {
      "content": "The animation is too slow",
      "type": "feedback"
    },
    {
      "content": "Good catch. Let's remember to speed it up to 200ms for the next sprint.",
      "role": "user"
    }
  ],
  "project_id": "proj_ABC",
  "session_id": "session_123",
  "timestamp": "2026-02-07T12:00:00Z",
  "user_id": "user_123"
}

Response

Successful Response

session_idstring required

Session identifier used for the learning

successboolean

Whether the learning was processed successfully

Example response

{
  "session_id": "session_123",
  "success": true
}

Changes

Changed in 6 of the 29 revisions of this API.3317

  • bb6f89ac9cd3222See the full diff
    • added the new required request property messages

      new-required-request-property

    • removed the required property message from the response with the 200 status

      response-required-property-removed

    • removed the request property message

      request-property-removed

    • removed the optional property job_id from the response with the 200 status

      response-optional-property-removed

    • api tag v1 modals added

      api-tag-added

    • api tag v1 modal removed

      api-tag-removed

    This revision also has 20 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • added the new optional request property persona_id

      new-optional-request-property

    • added the new optional request property project_id

      new-optional-request-property

  • 5a9a6b9cb07a111See the full diff
    • removed the request property datetime_input

      request-property-removed

    • added the new optional request property timestamp

      new-optional-request-property

    • added the non-success response with the status 404

      response-non-success-status-added

    • added the optional property details to the response with the 400 status

      response-optional-property-added

    • added the optional property details to the response with the 401 status

      response-optional-property-added

    • added the optional property details to the response with the 500 status

      response-optional-property-added

    • added the optional property request_id to the response with the 400 status

      response-optional-property-added

    • added the optional property request_id to the response with the 401 status

      response-optional-property-added

    • added the optional property request_id to the response with the 500 status

      response-optional-property-added

    • added the required property error_code to the response with the 400 status

      response-required-property-added

    • added the required property error_code to the response with the 401 status

      response-required-property-added

    • added the required property error_code to the response with the 500 status

      response-required-property-added

    This revision also has 7 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • endpoint added

      endpoint-added

    This revision also has 6 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • api path removed without deprecation

      api-path-removed-without-deprecation

    This revision also has 5 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • endpoint added

      endpoint-added

    This revision also has 16 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog