The Notes API manages comments and system records attached to GitLab content. The Notes API:
Some system-generated notes are tracked as separate resource events:
By default, GET
requests return 20 results at a time, because the API results are paginated. For more information, see Pagination.
Some system notes are not part of this API, but are recorded as separate events:
By default, GET
requests return 20 results at a time because the API results are paginated.
Read more on pagination.
Rate limitsTo help avoid abuse, you can limit your users to a specific number of Create
request per minute. See Notes rate limits.
Gets a list of all notes for a single issue.
GET /projects/:id/issues/:issue_iid/notes
GET /projects/:id/issues/:issue_iid/notes?sort=asc&order_by=updated_at
Attribute Type Required Description id
integer or string yes The ID or URL-encoded path of the project issue_iid
integer yes The IID of an issue sort
string no Return issue notes sorted in asc
or desc
order. Default is desc
order_by
string no Return issue notes ordered by created_at
or updated_at
fields. Default is created_at
[
{
"id": 302,
"body": "closed",
"author": {
"id": 1,
"username": "pipin",
"email": "admin@example.com",
"name": "Pip",
"state": "active",
"created_at": "2013-09-30T13:46:01Z"
},
"created_at": "2013-10-02T09:22:45Z",
"updated_at": "2013-10-02T10:22:45Z",
"system": true,
"noteable_id": 377,
"noteable_type": "Issue",
"project_id": 5,
"noteable_iid": 377,
"resolvable": false,
"confidential": false,
"internal": false,
"imported": false,
"imported_from": "none"
},
{
"id": 305,
"body": "Text of the comment\r\n",
"author": {
"id": 1,
"username": "pipin",
"email": "admin@example.com",
"name": "Pip",
"state": "active",
"created_at": "2013-09-30T13:46:01Z"
},
"created_at": "2013-10-02T09:56:03Z",
"updated_at": "2013-10-02T09:56:03Z",
"system": true,
"noteable_id": 121,
"noteable_type": "Issue",
"project_id": 5,
"noteable_iid": 121,
"resolvable": false,
"confidential": true,
"internal": true,
"imported": false,
"imported_from": "none"
}
]
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/11/notes"
Get single issue note
Returns a single note for a specific project issue
GET /projects/:id/issues/:issue_iid/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project issue_iid
integer yes The IID of a project issue note_id
integer yes The ID of an issue note
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/11/notes/1"
Create new issue note
Creates a new note to a single project issue.
POST /projects/:id/issues/:issue_iid/notes
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project. issue_iid
integer yes The IID of an issue. body
string yes The content of a note. Limited to 1,000,000 characters. confidential
boolean no Deprecated: Scheduled to be removed in GitLab 16.0 and renamed to internal
. The confidential flag of a note. Default is false. internal
boolean no The internal flag of a note. Overrides confidential
when both parameters are submitted. Default is false. created_at
string no Date time string, ISO 8601 formatted. It must be after 1970-01-01. Example: 2016-03-11T03:45:40Z
(requires administrator or project/group owner rights)
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/11/notes?body=note"
Modify existing issue note
Modify existing note of an issue.
PUT /projects/:id/issues/:issue_iid/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project. issue_iid
integer yes The IID of an issue. note_id
integer yes The ID of a note. body
string no The content of a note. Limited to 1,000,000 characters. confidential
boolean no Deprecated: Scheduled to be removed in GitLab 16.0. The confidential flag of a note. Default is false.
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/11/notes/636?body=note"
Delete an issue note
Deletes an existing note of an issue.
DELETE /projects/:id/issues/:issue_iid/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project issue_iid
integer yes The IID of an issue note_id
integer yes The ID of a note
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/issues/11/notes/636"
Snippets
The Snippets Notes API is intended for project-level snippets, and not for personal snippets.
List all snippet notesGets a list of all notes for a single snippet. Snippet notes are comments users can post to a snippet.
GET /projects/:id/snippets/:snippet_id/notes
GET /projects/:id/snippets/:snippet_id/notes?sort=asc&order_by=updated_at
Attribute Type Required Description id
integer or string yes The ID or URL-encoded path of the project snippet_id
integer yes The ID of a project snippet sort
string no Return snippet notes sorted in asc
or desc
order. Default is desc
order_by
string no Return snippet notes ordered by created_at
or updated_at
fields. Default is created_at
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/snippets/11/notes"
Get single snippet note
Returns a single note for a given snippet.
GET /projects/:id/snippets/:snippet_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project snippet_id
integer yes The ID of a project snippet note_id
integer yes The ID of a snippet note
{
"id": 302,
"body": "closed",
"author": {
"id": 1,
"username": "pipin",
"email": "admin@example.com",
"name": "Pip",
"state": "active",
"created_at": "2013-09-30T13:46:01Z"
},
"created_at": "2013-10-02T09:22:45Z",
"updated_at": "2013-10-02T10:22:45Z",
"system": true,
"noteable_id": 377,
"noteable_type": "Issue",
"project_id": 5,
"noteable_iid": 377,
"resolvable": false,
"confidential": false,
"internal": false,
"imported": false,
"imported_from": "none"
}
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/snippets/11/notes/11"
Create new snippet note
Creates a new note for a single snippet. Snippet notes are user comments on snippets. If you create a note where the body only contains an emoji reaction, GitLab returns this object.
POST /projects/:id/snippets/:snippet_id/notes
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project snippet_id
integer yes The ID of a snippet body
string yes The content of a note. Limited to 1,000,000 characters. created_at
string no Date time string, ISO 8601 formatted. Example: 2016-03-11T03:45:40Z
(requires administrator or project/group owner rights)
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/snippet/11/notes?body=note"
Modify existing snippet note
Modify existing note of a snippet.
PUT /projects/:id/snippets/:snippet_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project snippet_id
integer yes The ID of a snippet note_id
integer yes The ID of a snippet note body
string yes The content of a note. Limited to 1,000,000 characters.
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/snippets/11/notes/1659?body=note"
Delete a snippet note
Deletes an existing note of a snippet.
DELETE /projects/:id/snippets/:snippet_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project snippet_id
integer yes The ID of a snippet note_id
integer yes The ID of a note
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/snippets/52/notes/1659"
Merge requests List all merge request notes
Gets a list of all notes for a single merge request.
GET /projects/:id/merge_requests/:merge_request_iid/notes
GET /projects/:id/merge_requests/:merge_request_iid/notes?sort=asc&order_by=updated_at
Attribute Type Required Description id
integer or string yes The ID or URL-encoded path of the project merge_request_iid
integer yes The IID of a project merge request sort
string no Return merge request notes sorted in asc
or desc
order. Default is desc
order_by
string no Return merge request notes ordered by created_at
or updated_at
fields. Default is created_at
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/notes"
Get single merge request note
Returns a single note for a given merge request.
GET /projects/:id/merge_requests/:merge_request_iid/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project merge_request_iid
integer yes The IID of a project merge request note_id
integer yes The ID of a merge request note
{
"id": 301,
"body": "Comment for MR",
"author": {
"id": 1,
"username": "pipin",
"email": "admin@example.com",
"name": "Pip",
"state": "active",
"created_at": "2013-09-30T13:46:01Z"
},
"created_at": "2013-10-02T08:57:14Z",
"updated_at": "2013-10-02T08:57:14Z",
"system": false,
"noteable_id": 2,
"noteable_type": "MergeRequest",
"project_id": 5,
"noteable_iid": 2,
"resolvable": false,
"confidential": false,
"internal": false
}
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/notes/1"
Create new merge request note
Creates a new note for a single merge request. Notes are not attached to specific lines in a merge request. For other approaches with more granular control, see Post comment to commit in the Commits API, and Create a new thread in the merge request diff in the Discussions API.
If you create a note where the body only contains an emoji reaction, GitLab returns this object.
POST /projects/:id/merge_requests/:merge_request_iid/notes
Parameters:
Attribute Type Required Descriptionbody
string yes The content of a note. Limited to 1,000,000 characters. id
integer or string yes The ID or URL-encoded path of the project merge_request_iid
integer yes The IID of a project merge request created_at
string no Date time string, ISO 8601 formatted. Example: 2016-03-11T03:45:40Z
(requires administrator or project/group owner rights) internal
boolean no The internal flag of a note. Default is false. merge_request_diff_head_sha
string no Required for the /merge
quick action. The SHA of the head commit, which ensures the merge request wasn’t updated after the API request was sent.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/notes?body=note"
Modify existing merge request note
Modify existing note of a merge request.
PUT /projects/:id/merge_requests/:merge_request_iid/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project merge_request_iid
integer yes The IID of a project merge request note_id
integer no The ID of a note body
string yes The content of a note. Limited to 1,000,000 characters. confidential
boolean no Deprecated: Scheduled to be removed in GitLab 16.0. The confidential flag of a note. Default is false.
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/merge_requests/11/notes/1?body=note"
Delete a merge request note
Deletes an existing note of a merge request.
DELETE /projects/:id/merge_requests/:merge_request_iid/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project merge_request_iid
integer yes The IID of a merge request note_id
integer yes The ID of a note
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/merge_requests/7/notes/1602"
Epics
The Epics REST API was deprecated in GitLab 17.0 and is planned for removal in v5 of the API. From GitLab 17.4 to 18.0, if the new look for epics is enabled, and in GitLab 18.1 and later, use the Work Items API instead. For more information, see migrate epic APIs to work items. This change is a breaking change.
List all epic notesGets a list of all notes for a single epic. Epic notes are comments users can post to an epic.
The epics notes API uses the epic ID instead of epic IID. If you use the epic’s IID, GitLab returns either a 404 error or notes for the wrong epic. It’s different from the issue notes API and merge requests notes API.
GET /groups/:id/epics/:epic_id/notes
GET /groups/:id/epics/:epic_id/notes?sort=asc&order_by=updated_at
Attribute Type Required Description id
integer or string yes The ID or URL-encoded path of the group epic_id
integer yes The ID of a group epic sort
string no Return epic notes sorted in asc
or desc
order. Default is desc
order_by
string no Return epic notes ordered by created_at
or updated_at
fields. Default is created_at
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5/epics/11/notes"
Get single epic note
Returns a single note for a given epic.
GET /groups/:id/epics/:epic_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the group epic_id
integer yes The ID of an epic note_id
integer yes The ID of a note
{
"id": 302,
"body": "Epic note",
"author": {
"id": 1,
"username": "pipin",
"email": "admin@example.com",
"name": "Pip",
"state": "active",
"created_at": "2013-09-30T13:46:01Z"
},
"created_at": "2013-10-02T09:22:45Z",
"updated_at": "2013-10-02T10:22:45Z",
"system": true,
"noteable_id": 11,
"noteable_type": "Epic",
"project_id": 5,
"noteable_iid": 11,
"resolvable": false,
"confidential": false,
"internal": false,
"imported": false,
"imported_from": "none"
}
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5/epics/11/notes/1"
Create new epic note
Creates a new note for a single epic. Epic notes are comments users can post to an epic. If you create a note where the body only contains an emoji reaction, GitLab returns this object.
POST /groups/:id/epics/:epic_id/notes
Parameters:
Attribute Type Required Descriptionbody
string yes The content of a note. Limited to 1,000,000 characters. epic_id
integer yes The ID of an epic id
integer or string yes The ID or URL-encoded path of the group confidential
boolean no Deprecated: Scheduled to be removed in GitLab 16.0 and is renamed to internal
. The confidential flag of a note. Default is false
. internal
boolean no The internal flag of a note. Overrides confidential
when both parameters are submitted. Default is false
.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5/epics/11/notes?body=note"
Modify existing epic note
Modify existing note of an epic.
PUT /groups/:id/epics/:epic_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the group epic_id
integer yes The ID of an epic note_id
integer yes The ID of a note body
string yes The content of a note. Limited to 1,000,000 characters. confidential
boolean no Deprecated: Scheduled to be removed in GitLab 16.0. The confidential flag of a note. Default is false.
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5/epics/11/notes/1?body=note"
Delete an epic note
Deletes an existing note of an epic.
DELETE /groups/:id/epics/:epic_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the group epic_id
integer yes The ID of an epic note_id
integer yes The ID of a note
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5/epics/52/notes/1659"
Project wikis List all project wiki notes
Gets a list of all notes for a project wiki page. Project wiki notes are comments users can post to a wiki page.
The wiki page notes API uses the wiki page meta ID instead of wiki page slug. If you use the page’s slug, GitLab returns a 404 error. You can retrieve the meta ID from the project wikis API.
GET /projects/:id/wiki_pages/:wiki_page_meta_id/notes
GET /projects/:id/wiki_pages/:wiki_page_meta_id/notes?sort=asc&order_by=updated_at
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project wiki_page_meta_id
integer yes The ID of a wiki page meta sort
string no Return wiki page notes sorted in asc
or desc
order. Default is desc
order_by
string no Return wiki page notes ordered by created_at
or updated_at
fields. Default is created_at
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/wiki_pages/35/notes"
Get single wiki page note
Returns a single note for a given wiki page.
GET /projects/:id/wiki_pages/:wiki_page_meta_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project wiki_page_meta_id
integer yes The ID of a wiki page meta note_id
integer yes The ID of a note
{
"author": {
"id": 1,
"username": "pipin",
"email": "admin@example.com",
"name": "Pip",
"state": "active",
"created_at": "2013-09-30T13:46:01Z"
},
"body": "foobar",
"commands_changes": {},
"confidential": false,
"created_at": "2025-03-11T11:36:32.222Z",
"id": 1218,
"imported": false,
"imported_from": "none",
"internal": false,
"noteable_id": 35,
"noteable_iid": null,
"noteable_type": "WikiPage::Meta",
"project_id": 5,
"resolvable": false,
"system": false,
"type": null,
"updated_at": "2025-03-11T11:36:32.222Z"
}
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/wiki_pages/35/notes/1218"
Create new wiki page note
Creates a new note for a single wiki page. Wiki page notes are comments users can post to a wiki page.
POST /projects/:id/wiki_pages/:wiki_page_meta_id/notes
Parameters:
Attribute Type Required Descriptionbody
string yes The content of a note. Limited to 1,000,000 characters. wiki_page_meta_id
integer yes The ID of a wiki page meta id
integer or string yes The ID or URL-encoded path of the project
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/wiki_pages/35/notes?body=note"
Modify existing wiki page note
Modifies an existing note on a wiki page.
PUT /projects/:id/wiki_pages/:wiki_page_meta_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project wiki_page_meta_id
integer yes The ID of a wiki page meta note_id
integer yes The ID of a note body
string yes The content of a note. Limited to 1,000,000 characters.
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/wiki_pages/35/notes/1218?body=note"
Delete a wiki page note
Deletes a note from a wiki page.
DELETE /projects/:id/wiki_pages/:wiki_page_meta_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the project wiki_page_meta_id
integer yes The ID of a wiki page meta note_id
integer yes The ID of a note
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/wiki_pages/35/notes/1218"
Group wikis
Gets a list of all notes for a group wiki page. Group wiki notes are comments users can post to a wiki page.
The wiki page notes API uses the wiki page meta ID instead of wiki page slug. If you use the page’s slug, GitLab returns a 404 error. You can retrieve the meta ID from the group wikis API.
GET /groups/:id/wiki_pages/:wiki_page_meta_id/notes
GET /groups/:id/wiki_pages/:wiki_page_meta_id/notes?sort=asc&order_by=updated_at
Attribute Type Required Description id
integer or string yes The ID or URL-encoded path of the group wiki_page_meta_id
integer yes The ID of a wiki page meta sort
string no Return wiki page notes sorted in asc
or desc
order. Default is desc
order_by
string no Return wiki page notes ordered by created_at
or updated_at
fields. Default is created_at
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5/wiki_pages/35/notes"
Get single wiki page note
Returns a single note for a given wiki page.
GET /groups/:id/wiki_pages/:wiki_page_meta_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the group wiki_page_meta_id
integer yes The ID of a wiki page meta note_id
integer yes The ID of a note
{
"author": {
"id": 1,
"username": "pipin",
"email": "admin@example.com",
"name": "Pip",
"state": "active",
"created_at": "2013-09-30T13:46:01Z"
},
"body": "foobar",
"commands_changes": {},
"confidential": false,
"created_at": "2025-03-11T11:36:32.222Z",
"id": 1218,
"imported": false,
"imported_from": "none",
"internal": false,
"noteable_id": 35,
"noteable_iid": null,
"noteable_type": "WikiPage::Meta",
"project_id": null,
"resolvable": false,
"system": false,
"type": null,
"updated_at": "2025-03-11T11:36:32.222Z"
}
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5/wiki_pages/35/notes/1218"
Create new wiki page note
Creates a new note for a single wiki page. Wiki page notes are comments users can post to a wiki page.
POST /groups/:id/wiki_pages/:wiki_page_meta_id/notes
Parameters:
Attribute Type Required Descriptionbody
string yes The content of a note. Limited to 1,000,000 characters. wiki_page_meta_id
integer yes The ID of a wiki page meta id
integer or string yes The ID or URL-encoded path of the group
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5/wiki_pages/35/notes?body=note"
Modify existing wiki page note
Modifies an existing note on a wiki page.
PUT /groups/:id/wiki_pages/:wiki_page_meta_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the group wiki_page_meta_id
integer yes The ID of a wiki page meta note_id
integer yes The ID of a note body
string yes The content of a note. Limited to 1,000,000 characters.
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5/wiki_pages/35/notes/1218?body=note"
Delete a wiki page note
Deletes a note from a wiki page.
DELETE /groups/:id/wiki_pages/:wiki_page_meta_id/notes/:note_id
Parameters:
Attribute Type Required Descriptionid
integer or string yes The ID or URL-encoded path of the group wiki_page_meta_id
integer yes The ID of a wiki page meta note_id
integer yes The ID of a note
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/5/wiki_pages/35/notes/1218"
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4