---
title: "Update a submodule reference"
method: PUT
path: "/api/v4/projects/{id}/repository/submodules/{submodule}"
tags: ["submodules"]
---

# Update a submodule reference

`PUT /api/v4/projects/{id}/repository/submodules/{submodule}`

## Request

- Base URL: `https://gitlab.com`
- URL: `https://gitlab.com/api/v4/projects/{id}/repository/submodules/{submodule}`
- Auth: none declared

Updates a reference for a specified submodule.

## Path parameters

- `id` string, required
- `submodule` string, required

## Request body

- PutApiV4ProjectsIdRepositorySubmodulesSubmodule: Update a submodule reference
  - `commit_sha` string, required: Commit sha to update the submodule to.
  - `branch` string, required: Name of the branch to commit into.
  - `commit_message` string: Commit message. If no message is provided a default one will be set.

## Response `200`

Update a submodule reference

- APIEntitiesCommitDetail: API_Entities_CommitDetail model
  - `id` string, required
  - `short_id` string, required
  - `created_at` string, date-time, required
  - `parent_ids` string[], required
  - `title` string, required
  - `message` string, required
  - `author_name` string, required
  - `author_email` string, required
  - `authored_date` string, date-time, required
  - `committer_name` string, required
  - `committer_email` string, required
  - `committed_date` string, date-time, required
  - `trailers` object, required
  - `extended_trailers` object, required
  - `web_url` string, required
  - `stats` APIEntitiesCommitStats
    - `additions` integer, required
    - `deletions` integer, required
    - `total` integer, required
  - `status` string, required
  - `project_id` integer, required
  - `last_pipeline` APIEntitiesCiPipelineBasic, required: API_Entities_Ci_PipelineBasic model
    - `id` integer, required
    - `iid` integer, required
    - `project_id` integer, required
    - `sha` string, required
    - `ref` string, required
    - `status` string, required
    - `source` string, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `web_url` string, required

## Other responses

- `400`: The repository is empty
- `401`: 401 Unauthorized
- `404`: 404 Project Not Found

---

[API](https://skmtc.dev/gitlab/apis/gitlab-api.md) - [All operations](https://skmtc.dev/gitlab/apis/gitlab-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gitlab/apis/gitlab-api/revisions/b234947ef3f2?raw)
