Update changelog
Update a changelog. content replaces the whole body, so read the current one and edit that rather than sending a body you assembled earlier. Pass language to upsert a translation row; non-translatable fields always apply to the base. Requires the changelogs:write scope.
curl -X PATCH "https://productlane.com/api/v2/changelogs/{id}" \
-H "Authorization: Bearer $PRODUCTLANE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "string",
"content": "string",
"date": "2026-01-15T09:30:00Z",
"published": true,
"archived": true,
"image_url": "https://example.com",
"slug": "string",
"portal_instance_id": "string",
"portal_instance_ids": [
"string"
],
"tag_ids": [
"string"
],
"language": "string"
}'Authorization
AuthorizationstringheaderrequiredBearer authentication header of the form
Bearer <token>, where<token>is your auth token.
Parameters
idstringpathrequired
Body
titlestringcontentstringMarkdown body. Replaces the whole body, so read the changelog first and edit what it returns. House shape: one
##per section, a---divider above each one that has content above it,>for a callout, and backticks for a navigation path.datestring<date-time> | nullpublishedbooleanarchivedbooleanimage_urlstring<uri> | nullslugstringPublic URL segment, like
2026-09-08-faster-exports. The previous slug keeps redirecting to the entry.portal_instance_idstring | nullPortal instance id to assign, from GET /portal/instances. Omit to follow the group or parent the item belongs to;
nulltargets the Main (Root) portal. A value that disagrees with the group's portal is rejected.portal_instance_idsstring[]Every portal the entry is on. Use "__main__" for the Main portal. Takes precedence over portal_instance_id.
tag_idsstring[]Replaces the full tag set.
languagestringBCP-47 language code. When set, translatable fields upsert a translation row; non-translatable fields (
published,archived,date,tag_ids) always apply to the base.
Response
Successful response
idstringrequiredcreated_atstringrequiredupdated_atstringrequireddatestring | nullrequiredpublishedbooleanrequiredarchivedbooleanrequiredtitlestringrequiredslugstring | nullrequiredcontentstringrequiredimage_urlstring | nullrequiredportal_instance_idstring | nullrequiredportal_instance_idsstring[]requiredtagsobject[]required
{
"id": "string",
"created_at": "string",
"updated_at": "string",
"date": "string",
"published": true,
"archived": true,
"title": "string",
"slug": "string",
"content": "string",
"image_url": "string",
"portal_instance_id": "string",
"portal_instance_ids": [
"string"
],
"tags": [
{
"id": "string",
"name": "string",
"color": "string",
"icon": "string"
}
]
}