> ## Documentation Index
> Fetch the complete documentation index at: https://docs.memmachine.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Project

> Create a new project.

This endpoint creates a new project with the given identifier and
configuration. The `project_id` follows the rules: no slashes; only
letters, numbers, underscores, hyphens, colon, and Unicode characters.

Each project acts as an isolated memory namespace. All memories (episodes)
inserted into a project belong exclusively to that project. Queries,
listings, and any background operations such as memory summarization or
knowledge extraction only access data within the same project. No
cross-project memory access is allowed.

If a project with the same ID already exists, the request will fail
with an error.

Returns the fully resolved project record, including configuration defaults
applied by the system.




## OpenAPI

````yaml /platform.openapi.json post /v2/projects
openapi: 3.0.4
info:
  description: >-
    Public REST API for the MemMachine memory system. Manages projects and
    memories.
  title: MemMachine Public API
  version: 0.1.0
servers:
  - url: https://api.memmachine.ai
security:
  - BearerAuth: []
tags:
  - name: Projects
  - name: Memories
  - name: Metrics
  - name: Health
paths:
  /v2/projects:
    post:
      tags:
        - Projects
      summary: Create Project
      description: >
        Create a new project.


        This endpoint creates a new project with the given identifier and

        configuration. The `project_id` follows the rules: no slashes; only

        letters, numbers, underscores, hyphens, colon, and Unicode characters.


        Each project acts as an isolated memory namespace. All memories
        (episodes)

        inserted into a project belong exclusively to that project. Queries,

        listings, and any background operations such as memory summarization or

        knowledge extraction only access data within the same project. No

        cross-project memory access is allowed.


        If a project with the same ID already exists, the request will fail

        with an error.


        Returns the fully resolved project record, including configuration
        defaults

        applied by the system.
      operationId: CreateProject
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
          description: Successful Response
        default:
          $ref: '#/components/responses/UnexpectedError'
components:
  schemas:
    CreateProjectSpec:
      allOf:
        - $ref: '#/components/schemas/ProjectScope'
        - properties:
            description:
              default: ''
              description: |
                A human-readable description of the project.
                Used for display purposes in UIs and dashboards.
                Optional; defaults to an empty string.
              example: Test project for RAG pipeline
              title: Description
              type: string
          type: object
      description: |
        Specification model for creating a new project.

        The project ID must be unique for the authenticated user.
      title: CreateProjectSpec
    ProjectResponse:
      description: >
        Response model returned after project operations (e.g., creation,
        update, fetch).


        Contains the resolved identifiers and configuration of the project as
        stored

        in the system. Field formats follow the same validation rules as in

        `CreateProjectSpec`.
      properties:
        config:
          $ref: '#/components/schemas/ProjectConfig'
        description:
          default: ''
          description: |
            A human-readable description of the project.
            Used for display purposes in UIs and dashboards.
            Optional; defaults to an empty string.
          title: Description
          type: string
        org_id:
          description: |
            The unique identifier of the organization this project belongs to.

            Returned exactly as stored by the system.
          maxLength: 255
          title: Org Id
          type: string
        project_id:
          description: |
            The identifier of the project.

            This value uniquely identifies the project within the organization.
          maxLength: 255
          title: Project Id
          type: string
      required:
        - org_id
        - project_id
      title: ProjectResponse
      type: object
    ProjectScope:
      properties:
        project_id:
          default: ''
          description: >-
            The identifier of the project. If empty, the user's default project
            is used.
          maxLength: 255
          pattern: ^[\p{L}\p{N}_:-]*$
          title: Project Id
          type: string
          x-go-type-skip-optional-pointer: true
      type: object
    ProjectConfig:
      description: >
        Project configuration model.


        This section defines which reranker and embedder models should be used
        for

        the project.  If any field is left empty (""), the system automatically
        falls

        back to the globally configured defaults in the server configuration
        file.
      properties:
        embedder:
          default: ''
          description: >
            The name of the embedder model to use for this project.


            - Must refer to an embedder model defined in the system
            configuration.

            - If set to an empty string (default), the globally configured
            embedder will
              be used.

            Embedders generate vector embeddings for text to support semantic
            search and

            similarity operations.
          example: bge-base-en
          title: Embedder
          type: string
        reranker:
          default: ''
          description: >
            The name of the reranker model to use for this project.


            - Must refer to a reranker model defined in the system
            configuration.

            - If set to an empty string (default), the globally configured
            reranker will
              be used.

            Rerankers typically re-score retrieved documents to improve result
            quality.
          example: bge-reranker-large
          title: Reranker
          type: string
      title: ProjectConfig
      type: object
    Error:
      properties:
        code:
          description: Error code.
          format: int32
          type: integer
        message:
          description: Error message.
          type: string
      required:
        - code
        - message
      type: object
  responses:
    UnexpectedError:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Unexpected error.
  securitySchemes:
    BearerAuth:
      scheme: bearer
      type: http

````