Visibility in createImageContent

In the documentation there is this example:

const result = await createImageContent({
image: file,
contentTitle: ‘Photo from gallery’,
visibility: [‘PUBLIC’],
})

But I’m getting this error: Type ‘“PUBLIC”’ is not assignable to type ‘ContentVisibility’
In ContentVisibility there is only ‘DISCOVERABLE’ | ‘LINKABLE’.

Does anyone knows what means each value and what is the difference?

you need to pass this ‘DISCOVERABLE’ | ‘LINKABLE’, and you will get a publicId or externalId

hi @robzdc, as you can see in the createImageContent docs, and as @mehdi7 pointed out, the only acceptable values are:

Ok, so 2 things:

  1. The documentation seems to be wrong.
  2. Still having the same question which was “Does anyone knows what means each value and what is the difference?”

Seems that discoverable creates a page with the image, at the end Im not using any of those options.

hi @robzdc!

Thanks for your feedback. We will update the docs very soon explaining in more detail what the different fields do.

Here you have a sneak peak:


title: useCreateImageContent
description: |-
The useCreateImageContent hook combines image upload with content creation to generate user-generated content entries. Built on top of useImageUpload, it extends the basic upload functionality with content management features including titles, visibility controls, and unique IDs for sharing and discovery.

Visibility Options

The visibility parameter accepts an optional array of ContentVisibility values:

  • DISCOVERABLE: Makes content eligible for Shop’s recommendation and discovery systems. Your content can appear in feeds and recommendations across the Shop app.
  • LINKABLE: Enables shareable URLs for the content. Required if you want users to share content via direct links (generates a shareableUrl).
  • Both values: ['DISCOVERABLE', 'LINKABLE'] - Maximum reach with content both discoverable in recommendations and shareable via links.
  • No values (null or []): Content remains private within your Mini, not discoverable or shareable externally.

Use Cases

Choose visibility settings based on your content strategy:

  • User reviews with photos: Use both DISCOVERABLE and LINKABLE for maximum reach
  • Private user collections: Omit visibility or use empty array
  • Shareable but not public: Use LINKABLE only
  • Featured content: Use DISCOVERABLE to appear in recommendations

The hook handles both the image upload pipeline and content entity creation in a single operation, automatically associating content with your Mini and integrating with Shop’s content systems.

Caution: You must run the setup CLI command before using this hook so the content can be associated with the Mini.
api_name: shop-minis
source_url:
html: useCreateImageContent
md: https://shopify.dev/docs/api/shop-minis/hooks/content/usecreateimagecontent.md