---
title: "Update Content"
method: PUT
path: "/v1/portal-content/{contentId}"
tags: ["Portal Content"]
---

# Update Content

`PUT /v1/portal-content/{contentId}`

## Request

- The document declares no server URL.
- Auth: none required
- TypeScript: <https://skmtc.dev/appcharge/apis/grant-award/docs/v1/portal-content/:contentId/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates a content item.

## Path parameters

- `contentId` string, required

## Headers

- `x-publisher-token` string, required

## Request body

- UpdateContentRequest
  - `title` string: Content title.
  - `subTitle` string: Content description.
  - `bodyText` string: Content body text.
  - `headerImage` string: Content header image URL.
  - `thumbnailImage` string: Content thumbnail image URL.
  - `labels` string[]: List of labels associated with the content.
  - `state` 'visible' | 'hidden' | 'scheduled': Current state of the content.
  - `contentType` 'article' | 'news': Type: article or news.
  - `publishDate` string, date-time: Content publish date. Use for scheduling content.
  - `pages` string[]: List of pages where this content appears.
  - `slug` string: Content slug. If not provided, this value is auto-generated.
  - `visibility` 'public' | 'private': Content visibility level.
  - `tag` string: Internal tag for organizing your content. Not visible to players.
  - `translations` TranslationRequest[]: List of translations for the content item. Each object represents a locale and its translations. **Note:** You must first [add the locale in the Publisher Dashboard](/../../guides/translations/add-and-manage-languages) before adding its translations.
    - `dynamicTranslations` DynamicTranslation[], required: A list of translations for dynamic entities you define such as offer and product names.
      - `type` string: Entity type. Values include: 'offer', 'offer_design', 'product', 'section', 'builder', 'ribbon'
      - `externalId` string: The ID as defined in the Publisher Dashboard.
      - `field` string: The entity field the translation applies to. Values include: 'display_name', 'description', 'title', 'text', 'prefix', 'suffix'
      - `locale` string: The locale code. Both ISO-639 language code and ISO-3166 country code formats are supported.
      - `value` string: The translation text for the specified field and locale.
    - `staticTranslations` StaticTranslation[], required: A list of translations for static UI elements such as button labels and headers.
      - `key` string: The key identifier for the static translation.
      - `locale` string: The locale code. Both ISO-639 language code and ISO-3166 country code formats are supported.
      - `value` string: The translation value associated with the key and locale.

## Response `200`

Content updated successfully.

- ContentItem
  - `id` string: Content ID.
  - `title` string: Content title.
  - `subTitle` string: Content description.
  - `bodyText` string: Content body text.
  - `headerImage` string: Content header image URL.
  - `thumbnailImage` string: Content thumbnail image URL.
  - `labels` string[]: List of labels associated with the content.
  - `state` 'visible' | 'hidden' | 'scheduled': Current state of the content.
  - `contentType` 'article' | 'news': Content type.
  - `publishDate` string, date-time: Content publish date. Use for scheduling content.
  - `slug` string: Content slug. If not provided, this value is auto-generated.
  - `visibility` 'public' | 'private': Content visibility level.
  - `tag` string: Internal tag for organizing your content. Not visible to players.
  - `createdAt` string, date-time: Created date.
  - `updatedAt` string, date-time: Updated date.
  - `translations` TranslationResponse[]: List of translations for the content item. Each object represents a locale and its translations.
    - `dynamicTranslations` DynamicTranslation[]: A list of translations for dynamic entities you define such as offer and product names.
      - `type` string: Entity type. Values include: 'offer', 'offer_design', 'product', 'section', 'builder', 'ribbon'
      - `externalId` string: The ID as defined in the Publisher Dashboard.
      - `field` string: The entity field the translation applies to. Values include: 'display_name', 'description', 'title', 'text', 'prefix', 'suffix'
      - `locale` string: The locale code. Both ISO-639 language code and ISO-3166 country code formats are supported.
      - `value` string: The translation text for the specified field and locale.
    - `staticTranslations` StaticTranslation[]: A list of translations for static UI elements such as button labels and headers.
      - `key` string: The key identifier for the static translation.
      - `locale` string: The locale code. Both ISO-639 language code and ISO-3166 country code formats are supported.
      - `value` string: The translation value associated with the key and locale.
  - `pages` Page[]: List of pages where this content appears.
    - `id` string: Page ID.
    - `pageName` string: Page name.

## Other responses

- `400`: Invalid request body or validation error.
- `401`: Invalid or missing publisher token.
- `404`: Content not found.
- `409`: Slug already exists.
- `500`: Server error.

---

[API](https://skmtc.dev/appcharge/apis/grant-award.md) - [All operations](https://skmtc.dev/appcharge/apis/grant-award/llms.txt) - [OpenAPI document](https://skmtc.dev/appcharge/apis/grant-award/revisions/b4f6759240d5?raw)
