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

# Create Base Project

> Creates a building project from the smallest set of fields the platform needs, and returns the new project's id along with the id of its initial revision. Everything else — areas, calculation type, classification, site and operational energy, transport, and members — is configured afterwards.

Use this rather than **Create Project** when you want the project to exist first and be filled in later.

**Method:** `POST`  
**URL:** `{{lcabaseUrl}}/BuildingProject/base`  
**Authentication:** Bearer Token (`{{BearerToken}}`)  
**Permission:** the caller needs the `CreateProject` tenant permission.



## OpenAPI

````yaml /api-reference/realtime-lca-openapi.yaml post /BuildingProject/base
openapi: 3.0.0
info:
  title: Real-Time LCA REST Documentation
  version: 1.0.0
  description: >-
    ### Description 📝


    This collection contains a set of REST API requests for the Real-Time LCA
    (Life Cycle Assessment) service.


    ### Authenticate user 👤🔑


    In the `Auth` folder there's a `POST` request for authenticating the user.


    In this request body you can type in the user RTLCA user credentials
    (username & password) and a succesfull (`200 OK`) response will set the
    collection `BearerToken` variable which is then inherited by all other
    requests.
servers:
  - url: https://api.realtimelca.com/rest/api
    description: REST API.
  - url: https://api.realtimelca.com/epd/api
    description: EPD API.
  - url: https://auth.realtimelca.com/frontegg/identity/resources/auth/v1
    description: Authentication API (Frontegg identity v1).
  - url: https://realtimelca-prod.hasura.app
    description: GraphQL API (Hasura).
security:
  - BearerAuth: []
tags:
  - name: Auth
  - name: User
  - name: Overview
  - name: Project
  - name: Dashboard
  - name: Mapping
  - name: Automapping
  - name: Transport
  - name: Waste
  - name: Inspect
  - name: Report
  - name: Images
  - name: Library
  - name: Datasource
  - name: Owner
  - name: Material
  - name: Constructions
  - name: Enums
paths:
  /BuildingProject/base:
    servers:
      - url: https://api.realtimelca.com/rest/api
    post:
      tags:
        - Project
        - Create Base Project
      summary: Create Base Project
      description: >-
        Creates a building project from the smallest set of fields the platform
        needs, and returns the new project's id along with the id of its initial
        revision. Everything else — areas, calculation type, classification,
        site and operational energy, transport, and members — is configured
        afterwards.


        Use this rather than **Create Project** when you want the project to
        exist first and be filled in later.


        **Method:** `POST`  

        **URL:** `{{lcabaseUrl}}/BuildingProject/base`  

        **Authentication:** Bearer Token (`{{BearerToken}}`)  

        **Permission:** the caller needs the `CreateProject` tenant permission.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - buildingTypeId
                - yearOfConstruction
                - yearOfCommissioning
              properties:
                name:
                  type: string
                  description: The project name.
                buildingTypeId:
                  type: integer
                  description: >-
                    The building type the project is assessed as. Valid values
                    come from `buildingTypeEnum` on the **BuildingProject
                    Enums** endpoint.
                yearOfConstruction:
                  type: integer
                  description: The year construction starts.
                yearOfCommissioning:
                  type: integer
                  description: The year the building is commissioned.
                projectStatusId:
                  type: integer
                  nullable: true
                  enum:
                    - 0
                    - 1
                    - 2
                    - 3
                    - 4
                    - 5
                    - 6
                  description: >-
                    The design stage the project is in: `0` Competition, `1`
                    Design, `2` Detailed Design, `3` Construction, `4`
                    Operation, `5` Archived, `6` On Hold. Optional — omit it to
                    leave the stage unset. Note that `0` is a real status rather
                    than "none".
                models:
                  type: array
                  maxItems: 100
                  description: >-
                    The disciplines the project is split into — one entry per
                    model. Optional, and capped at 100 per project.


                    Names are trimmed and lower-cased before they are stored,
                    and entries that normalise to the same name are folded into
                    a single model, active if any of them was active.


                    Models created here are independent of Speckle: no stream is
                    created or required. A model's commit, pull time, and
                    referenced object stay empty until a stream is attached to
                    it.
                  items:
                    type: object
                    required:
                      - name
                    properties:
                      name:
                        type: string
                        description: The model name.
                      active:
                        type: boolean
                        default: true
                        description: >-
                          Whether the model is included in the project. Defaults
                          to `true` when omitted.
            example:
              name: Spacious Ship
              buildingTypeId: 1
              yearOfConstruction: 2024
              yearOfCommissioning: 2026
              projectStatusId: 1
              models:
                - name: arkitektur
                  active: true
                - name: konstruktion
      responses:
        '201':
          description: The project was created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: The new project's id.
                  activeRevisionId:
                    type: string
                    format: uuid
                    description: >-
                      The project's initial revision, created together with the
                      project. Carry this id through follow-up writes so they
                      land on the right revision.
              example:
                id: 8f6b1c2e-5a4d-4f39-9c07-2b1d6e8a3f45
                activeRevisionId: c1d40a77-9e28-4bb6-8f52-7ad3e9b04c16
        '400':
          description: >-
            The payload was malformed — a model without a name, or more models
            than the per-project maximum — or a project constraint was violated,
            such as an unknown building type. The body is a plain-text message
            describing the problem.
          content:
            text/plain:
              schema:
                type: string
              examples:
                missingModelName:
                  summary: A model was sent without a name
                  value: every model needs a name
                tooManyModels:
                  summary: More than 100 models were sent
                  value: models exceeds the maximum of 100 per project
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````