---
title: "Create or update a desktop project"
method: POST
path: "/api/v1/desktop/projects"
tags: ["Desktop Companion"]
---

# Create or update a desktop project

`POST /api/v1/desktop/projects`

## Request

- Base URL: `https://www.devspeak.dev`
- URL: `https://www.devspeak.dev/api/v1/desktop/projects`
- Auth: HTTP bearer

Registers or updates a desktop project and emits a sync event. Requires the desktop:projects:write scope.

## Request body

- DesktopProjectUpsertRequest
  - `projectId` string, required
  - `name` string, required
  - `rootPath` string, required

## Response `201`

Desktop project upserted

- DesktopProjectEnvelope
  - `success` true, required
  - `data` DesktopProject, required
    - `projectId` string, required
    - `name` string, required
    - `rootPath` string, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `lastSyncedAt` string, date-time, required
    - `lastSyncedByDeviceId` string, required

## Other responses

- `400`: Validation error
- `401`: Missing or invalid credentials
- `403`: Missing scope, feature, or plan access
- `500`: Internal server error

---

[API](https://skmtc.dev/devspeak/apis/devspeak-api-v1.md) · [All operations](https://skmtc.dev/devspeak/apis/devspeak-api-v1/llms.txt) · [OpenAPI document](https://skmtc.dev/devspeak/apis/devspeak-api-v1/revisions/7000833a5bbf?raw)
