inite-ai Memory files API

File-shaped memory — the storage behind Anthropic’s memory tool (`memory_20250818`). A model’s own notes, kept in the tenant’s database behind the same fences as every other memory rather than in a directory on one machine. `str_replace` and `insert` are absent by design: they are read-modify-write on exact text, performed by the adapter against what these routes return.

Operations 5

PUT /v1/memory-files Create or replace a memory file #
POST /v1/memory-files/delete Delete a memory file or directory #
POST /v1/memory-files/list List memory files under a prefix #
POST /v1/memory-files/read Read one memory file #
POST /v1/memory-files/rename Move a memory file #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/inite-ai:inite-ai-memory-files-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

inite-ai-memory-files-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'Generated from the zod wire contracts (`pnpm openapi:build` — scripts/build-openapi.ts); do not edit by hand. Excluded on purpose: the operator/ops surface (jobs, leases, policy, stats, maintenance, GDPR cascades), which is indexed in docs/api.md, and the MCP transport `ALL /mcp/{companyId}`, which is JSON-RPC over Streamable HTTP rather than REST — MCP clients discover it through `tools/list` (docs/mcp.md). Scopes are plain bearer-key grants, not OAuth flows — each operation states its required scope.'
  license:
    identifier: AGPL-3.0-or-later
    name: AGPL-3.0-or-later
  summary: 'The community-facing platform surface: the memory core (fact ingest, search, multi-hop, synthesize, entity and fact reads), the Domain Pack registry and tenant pack admin, the document pipeline, the external-indexer work protocol, the raw-substrate driver, the evidence substrate, and source reputation reads.'
  title: INITE Brain — Platform Memory files API
  version: 2.6.0
servers:
- description: Hosted instance (placeholder — self-hosted deployments serve the same paths on their own origin).
  url: https://brain.inite.ai
security:
- bearerAuth: []
tags:
- description: 'File-shaped memory — the storage behind Anthropic’s memory tool (`memory_20250818`). A model’s own notes, kept in the tenant’s database behind the same fences as every other memory rather than in a directory on one machine. `str_replace` and `insert` are absent by design: they are read-modify-write on exact text, performed by the adapter against what these routes return.'
  name: Memory files
paths:
  /v1/memory-files:
    put:
      description: 'Stores `content` verbatim at `path`. No normalisation of any kind: the memory tool’s `str_replace` is a string operation against exactly these bytes, so re-wrapping or trimming would corrupt the model’s own notes in a way that reads as hallucination. A second write to the same path replaces. `userId` scopes the file to one end user — two people sharing a workspace key get separate files at the same path, which is deliberate. Source: src/memory-files/memory-file.controller.ts.


        Required scope: `brain:write`.'
      operationId: writeMemoryFile
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemoryFileWriteRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemoryFile'
          description: The stored file.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      summary: Create or replace a memory file
      tags:
      - Memory files
  /v1/memory-files/delete:
    post:
      description: 'Removes the file at `path` and everything beneath it, and reports how many rows went. Only the asking scope’s copies: a workspace-wide delete does not touch a user’s personal file at the same path.


        Required scope: `brain:write`.'
      operationId: deleteMemoryFile
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemoryFileReadRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemoryFileDeleteResponse'
          description: How many rows were removed.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      summary: Delete a memory file or directory
      tags:
      - Memory files
  /v1/memory-files/list:
    post:
      description: 'Paths under `prefix` (default `/memories`), in path order, capped at 1000. This is what the memory tool’s `view` on a directory becomes.


        Required scope: `brain:read`.'
      operationId: listMemoryFiles
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemoryFileListRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemoryFileListResponse'
          description: Matching paths.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      summary: List memory files under a prefix
      tags:
      - Memory files
  /v1/memory-files/read:
    post:
      description: 'Returns the file verbatim, or 404. The path travels in the body rather than the URL because it carries slashes, and with the row fence keyed on (path, userId) an encoding ambiguity would be an access-control question.


        Required scope: `brain:read`.'
      operationId: readMemoryFile
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemoryFileReadRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemoryFile'
          description: The file.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      summary: Read one memory file
      tags:
      - Memory files
  /v1/memory-files/rename:
    post:
      description: 'Copies the content to `newPath` and removes the old row. The destination is overwritten if it exists, matching the memory tool’s own semantics. A destination that fails the path rules leaves the source untouched — a rejected move is not a delete.


        Required scope: `brain:write`.'
      operationId: renameMemoryFile
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemoryFileRenameRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemoryFile'
          description: The file at its new path.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      summary: Move a memory file
      tags:
      - Memory files
components:
  schemas:
    MemoryFileRenameRequest:
      additionalProperties: false
      properties:
        newPath:
          description: Absolute path under /memories, e.g. /memories/user_prefs.md
          maxLength: 512
          minLength: 1
          type: string
        path:
          description: Absolute path under /memories, e.g. /memories/user_prefs.md
          maxLength: 512
          minLength: 1
          type: string
        userId:
          maxLength: 200
          type: string
      required:
      - path
      - newPath
      type: object
    ErrorResponse:
      description: Standard NestJS error envelope.
      properties:
        error:
          type: string
        message:
          anyOf:
          - type: string
          - items:
              type: string
            type: array
        statusCode:
          type: integer
      required:
      - statusCode
      - message
      type: object
    MemoryFileListResponse:
      additionalProperties: false
      properties:
        paths:
          items:
            type: string
          type: array
      required:
      - paths
      type: object
    MemoryFileDeleteResponse:
      additionalProperties: false
      properties:
        deleted:
          type: number
      required:
      - deleted
      type: object
    MemoryFileWriteRequest:
      additionalProperties: false
      properties:
        content:
          maxLength: 100000
          type: string
        path:
          description: Absolute path under /memories, e.g. /memories/user_prefs.md
          maxLength: 512
          minLength: 1
          type: string
        userId:
          maxLength: 200
          type: string
      required:
      - path
      - content
      type: object
    MemoryFileReadRequest:
      additionalProperties: false
      properties:
        path:
          description: Absolute path under /memories, e.g. /memories/user_prefs.md
          maxLength: 512
          minLength: 1
          type: string
        userId:
          maxLength: 200
          type: string
      required:
      - path
      type: object
    MemoryFile:
      additionalProperties: false
      properties:
        content:
          type: string
        path:
          type: string
        updatedAt:
          type: string
      required:
      - path
      - content
      - updatedAt
      type: object
    MemoryFileListRequest:
      additionalProperties: false
      properties:
        prefix:
          description: Absolute path under /memories, e.g. /memories/user_prefs.md
          maxLength: 512
          minLength: 1
          type: string
        userId:
          maxLength: 200
          type: string
      type: object
  responses:
    Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: The key lacks the required scope.
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Missing or unknown bearer key.
    NotFound:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: No such resource in this tenant.
    BadRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Validation failed.
  securitySchemes:
    bearerAuth:
      description: 'API key (`Authorization: Bearer <key>`); its SHA-256 must be registered in BRAIN_API_KEYS. Keys carry scopes (`brain:read`, `brain:write`, `brain:admin`, `brain:read_pii`, `registry:publish`, `registry:curate`, `indexer:write`) — each operation states the scope it requires. Not an OAuth flow.'
      scheme: bearer
      type: http