---
title: "Create a new project"
method: POST
path: "/projects"
---

# Create a new project

`POST /projects`

## Request body

- CreateProjectRequest
  - `repository` Repository, required
    - `url` string, url, required
    - `commit` string
  - `languages` string[]
  - `devcontainer` DevContainerConfig
    - `image` string — Required when using an image
    - `dockerfile` string — Dockerfile path
    - `context` string — Docker build context
    - `build` BuildProps
      - `dockerfile` string
      - `context` string
      - `args` object
      - `options` string[]
      - `target` string
      - `cacheFrom` union
        - string[]
        - string
    - `appPort` union
      - integer
      - string
      - union[]
        - union
          - integer
          - string
    - `workspaceMount` Mount
      - `type` 'bind' | 'volume' | 'tmpfs'
      - `source` string
      - `destination` string
    - `workspaceFolder` string
    - `runArgs` string[]
    - `dockerComposeFile` union
      - string[]
      - string
    - `service` string
    - `runServices` string[]
    - `initializeCommand` union
      - string
      - string[]
      - object
    - `onCreateCommand` union
      - string
      - string[]
      - object
    - `updateContentCommand` union
      - string
      - string[]
      - object
    - `postCreateCommand` union
      - string
      - string[]
      - object
    - `postStartCommand` union
      - string
      - string[]
      - object
    - `postAttachCommand` union
      - string
      - string[]
      - object
    - `waitFor` string
    - `cpus` integer
    - `memory` string
    - `storage` string
    - `name` string
    - `forwardPorts` string[]
    - `portsAttributes` object
    - `otherPortsAttributes` PortAttributes
      - `label` string
      - `protocol` string
      - `onAutoForward` string
      - `requireLocalPort` boolean
      - `elevateIfNeeded` boolean
    - `containerEnv` object
    - `remoteEnv` object
    - `remoteUser` string
    - `containerUser` string
    - `updateRemoteUserUID` boolean
    - `userEnvProbe` string
    - `overrideCommand` boolean
    - `shutdownAction` string
    - `init` boolean
    - `privileged` boolean
    - `capAdd` string[]
    - `securityOpt` string[]
    - `mounts` Mount[]
      - `type` 'bind' | 'volume' | 'tmpfs'
      - `source` string
      - `destination` string
    - `features` object
    - `overrideFeatureInstallOrder` string[]
    - `customizations` Customizations

## Response `201`

Project created successfully

- Project
  - `id` string
  - `path` string
  - `config` DevContainerConfig
    - `image` string — Required when using an image
    - `dockerfile` string — Dockerfile path
    - `context` string — Docker build context
    - `build` BuildProps
      - `dockerfile` string
      - `context` string
      - `args` object
      - `options` string[]
      - `target` string
      - `cacheFrom` union
        - string[]
        - string
    - `appPort` union
      - integer
      - string
      - union[]
        - union
          - integer
          - string
    - `workspaceMount` Mount
      - `type` 'bind' | 'volume' | 'tmpfs'
      - `source` string
      - `destination` string
    - `workspaceFolder` string
    - `runArgs` string[]
    - `dockerComposeFile` union
      - string[]
      - string
    - `service` string
    - `runServices` string[]
    - `initializeCommand` union
      - string
      - string[]
      - object
    - `onCreateCommand` union
      - string
      - string[]
      - object
    - `updateContentCommand` union
      - string
      - string[]
      - object
    - `postCreateCommand` union
      - string
      - string[]
      - object
    - `postStartCommand` union
      - string
      - string[]
      - object
    - `postAttachCommand` union
      - string
      - string[]
      - object
    - `waitFor` string
    - `cpus` integer
    - `memory` string
    - `storage` string
    - `name` string
    - `forwardPorts` string[]
    - `portsAttributes` object
    - `otherPortsAttributes` PortAttributes
      - `label` string
      - `protocol` string
      - `onAutoForward` string
      - `requireLocalPort` boolean
      - `elevateIfNeeded` boolean
    - `containerEnv` object
    - `remoteEnv` object
    - `remoteUser` string
    - `containerUser` string
    - `updateRemoteUserUID` boolean
    - `userEnvProbe` string
    - `overrideCommand` boolean
    - `shutdownAction` string
    - `init` boolean
    - `privileged` boolean
    - `capAdd` string[]
    - `securityOpt` string[]
    - `mounts` Mount[]
      - `type` 'bind' | 'volume' | 'tmpfs'
      - `source` string
      - `destination` string
    - `features` object
    - `overrideFeatureInstallOrder` string[]
    - `customizations` Customizations

## Other responses

- `400` — Invalid request
- `500` — Internal server error

---

[API](https://skmtc.dev/hide-org/apis/hide-api.md) · [All operations](https://skmtc.dev/hide-org/apis/hide-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/hide-org/hide-api/revisions/615b2b2a65a4/schema)
