Skip to main content
POST
Select each content item by its ShortKit ID or your own external ID. ShortKit validates every item before changing anything. If any selector cannot be resolved, the complete request fails and no items are changed. This endpoint requires a secret key. Publishable keys cannot call it.

Request body

object[]
required
The content items to update. Include 1–500 items. Selectors cannot repeat, and two selectors cannot resolve to the same content item.
string
The ShortKit content UUID. Provide exactly one of contentId or externalId for each item.
string
Your non-empty identifier for the content item. ShortKit resolves it within your organization. Maximum 255 characters. Provide exactly one of externalId or contentId for each item.
object
required
The metadata fields to change. Include at least one supported field. Fields omitted from this object remain unchanged.
string
Replace the display title. Maximum 200 characters.
string | null
Replace the description, or set it to null to clear it. Maximum 2,000 characters.
string[]
Replace all tags. Include at most 100 tags, with up to 200 characters per tag.
string | null
Replace the editorial section, or set it to null to clear it. Maximum 200 characters.
string | null
Replace the content author, or set it to null to clear it. Maximum 200 characters.
object
Merge keys into the existing metadata. A null value removes that key; omitted keys remain unchanged. Include at most 100 keys, with up to 200 characters per key and 32 KiB of JSON per item.
string[]
Prevent overwriting existing values. Allowed values are author, description, and section. List each guarded field at most once.Every guarded field must appear in every item’s updates. If any guarded field already contains a value, ShortKit skips that entire item. Only null counts as missing; an empty string is an existing value.
The complete JSON request body cannot exceed 2 MiB. Unknown fields, non-finite numbers, and strings containing NUL characters are rejected.

Example

This request fills missing authors without replacing authors that are already set.

Result statuses

Results appear in the same order as the request. externalId is null when the content item does not have one.

Atomicity and retries

ShortKit commits all non-skipped changes in one transaction. A malformed item, an unknown or deleted item, or an item from another organization rejects the complete request without applying any changes. If no other request changes the same fields between attempts, you can retry after a network timeout. An identical unguarded retry returns unchanged; an onlyIfMissing retry can return skipped after the first attempt fills the guarded field. If another request changes those fields before your retry, an unguarded retry reapplies its supplied values and can return updated. A guarded retry reevaluates onlyIfMissing against the current values and can instead return skipped. For more than 500 items, split the update into batches of at most 500. Keep each batch below 2 MiB and inspect its summary before advancing.

Errors

See Errors for the standard error envelope.