---
title: "Reconcile desktop file manifest"
method: POST
path: "/api/v1/desktop/projects/sync"
tags: ["Desktop Companion"]
---

# Reconcile desktop file manifest

`POST /api/v1/desktop/projects/sync`

## Request

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

Compares a client-generated SHA-256 manifest against server state. Requires the desktop:projects:write scope.

## Request body

- ProjectSyncRequest
  - `projectId` string, required
  - `files` ProjectSyncFile[], required
    - `path` string, required
    - `hash` string, required
    - `sizeBytes` integer
    - `modifiedAt` string, date-time

## Response `200`

Manifest delta

- ManifestDeltaResponse
  - `success` true, required
  - `data` ManifestDelta, required
    - `manifestId` string, required
    - `toUpload` string[], required
    - `toDelete` string[], required
    - `unchanged` string[], required
    - `totalFiles` integer, 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)
