Locks

File locks (exclusive checkout)

Binary Unreal assets can't be merged, so a lock reserves one for editing. GET lists active locks. POST acquires them for a set of `fileIds` (with an optional `note` up to 280 chars) and returns what you got plus what someone else already holds. DELETE releases them — you can always release your own; org owners and admins may pass `force: true` to release a lock held by someone else. Committing a file automatically releases the lock you held on it, and the commit endpoint rejects a commit touching a file locked by anyone else.

GET · POST · DELETE/api/v1/projects/{projectId}/locks

Request

Body
json
{
  "fileIds": ["f47ac10b-58cc-4372-a567-0e02b2c3d479"],
  "note": "polishing lighting on L3"
}

Response

200 OK
json
{
  "acquired": [
    {
      "fileId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "path": "Content/Maps/MainLevel.umap",
      "userId": "3f1a0c52-9c1e-4f0a-9a1b-7d2e5c8b4a10",
      "userName": "Sarah Chen",
      "userAvatarUrl": null,
      "isMine": true,
      "note": "polishing lighting on L3",
      "lockedAt": "2026-04-16T14:30:00.000Z"
    }
  ],
  "conflicts": []
}

Examples

curlbash
# List active locks
curl -X GET https://usourcecontrol.com/api/v1/projects/7c9e6679-7425-40de-944b-e07fc1f90ae7/locks \
  -H "Authorization: Bearer usc_your_project_key"

# Acquire
curl -X POST https://usourcecontrol.com/api/v1/projects/7c9e6679-7425-40de-944b-e07fc1f90ae7/locks \
  -H "Authorization: Bearer usc_your_project_key" \
  -H "Content-Type: application/json" \
  -d '{ "fileIds": ["f47ac10b-58cc-4372-a567-0e02b2c3d479"], "note": "polishing lighting on L3" }'

# Release (add "force": true as an owner/admin to break someone else's lock)
curl -X DELETE https://usourcecontrol.com/api/v1/projects/7c9e6679-7425-40de-944b-e07fc1f90ae7/locks \
  -H "Authorization: Bearer usc_your_project_key" \
  -H "Content-Type: application/json" \
  -d '{ "fileIds": ["f47ac10b-58cc-4372-a567-0e02b2c3d479"] }'

Try it

Try itChanges data
GET · POST · DELETE/api/v1/projects/{projectId}/locks

Kept in this tab only, sent straight to the API, and never to our servers. Create one in your project’s settings.

This is a GET · POST · DELETE request against the live API. It will really run, on the real project the key belongs to.

Was this helpful?

Back to top