ResourcesHighlights

Manage highlight media

Upload, replace, update, reorder, list, and delete highlight images and videos.

Use POST for file uploads and replacements because those requests are multipart. Use PATCH or PUT for JSON-only CTA or product-link changes. A product link must reference an active, discoverable standard product in the same store. Set product_id to null to remove the link. A highlight can contain at most 30 media items in total.

Deleting the last media item unpublishes the parent highlight. Reordering requires every media ID belonging to that highlight exactly once.

GET
/v2/highlights/{highlight}/media

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

highlight*integer

The highlight path parameter.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://sell.app/api/v2/highlights/0/media"
{
  "data": [
    {
      "id": 0,
      "sort_order": 0,
      "type": "image",
      "url": "http://example.com",
      "filename": "string",
      "size": 0,
      "mime_type": "string",
      "cta_title": "string",
      "product_id": 0,
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z"
    }
  ]
}
{
  "message": "Unauthenticated."
}
{
  "message": "This action is unauthorized."
}
{
  "message": "Rule not found."
}
{
  "message": "The given data was invalid.",
  "errors": {
    "data": [
      "The data field is required."
    ]
  }
}
POST
/v2/highlights/{highlight}/media

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

highlight*integer

The highlight path parameter.

Request Body

multipart/form-data

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/highlights/0/media" \  -F file="string"
{
  "data": {
    "id": 84,
    "sort_order": 1,
    "type": "image",
    "url": "https://cdn.sell.app/store/1/highlights/example.png",
    "filename": "example.png",
    "size": 24576,
    "mime_type": "image/png",
    "cta_title": "View product",
    "product_id": 123,
    "created_at": "2026-07-11T12:00:00Z",
    "updated_at": "2026-07-11T12:00:00Z"
  }
}
{
  "message": "Unauthenticated."
}
{
  "message": "This action is unauthorized."
}
{
  "message": "Rule not found."
}
{
  "message": "The given data was invalid.",
  "errors": {
    "data": [
      "The data field is required."
    ]
  }
}
POST
/v2/highlights/{highlight}/media/{media}

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

highlight*integer

The highlight path parameter.

media*integer

The media path parameter.

Request Body

multipart/form-data

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/highlights/0/media/0" \  -F file="string"
{
  "data": {
    "id": 84,
    "sort_order": 1,
    "type": "image",
    "url": "https://cdn.sell.app/store/1/highlights/example.png",
    "filename": "example.png",
    "size": 24576,
    "mime_type": "image/png",
    "cta_title": "View product",
    "product_id": 123,
    "created_at": "2026-07-11T12:00:00Z",
    "updated_at": "2026-07-11T12:00:00Z"
  }
}
{
  "message": "Unauthenticated."
}
{
  "message": "This action is unauthorized."
}
{
  "message": "Rule not found."
}
{
  "message": "The given data was invalid.",
  "errors": {
    "data": [
      "The data field is required."
    ]
  }
}
PATCH
/v2/highlights/{highlight}/media/{media}

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

highlight*integer

The highlight path parameter.

media*integer

The media path parameter.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://sell.app/api/v2/highlights/0/media/0" \  -H "Content-Type: application/json" \  -d '{}'
{
  "data": {
    "id": 84,
    "sort_order": 1,
    "type": "image",
    "url": "https://cdn.sell.app/store/1/highlights/example.png",
    "filename": "example.png",
    "size": 24576,
    "mime_type": "image/png",
    "cta_title": "View product",
    "product_id": 123,
    "created_at": "2026-07-11T12:00:00Z",
    "updated_at": "2026-07-11T12:00:00Z"
  }
}
{
  "message": "Unauthenticated."
}
{
  "message": "This action is unauthorized."
}
{
  "message": "Rule not found."
}
{
  "message": "The given data was invalid.",
  "errors": {
    "data": [
      "The data field is required."
    ]
  }
}
PUT
/v2/highlights/{highlight}/media/{media}

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

highlight*integer

The highlight path parameter.

media*integer

The media path parameter.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X PUT "https://sell.app/api/v2/highlights/0/media/0" \  -H "Content-Type: application/json" \  -d '{}'
{
  "data": {
    "id": 84,
    "sort_order": 1,
    "type": "image",
    "url": "https://cdn.sell.app/store/1/highlights/example.png",
    "filename": "example.png",
    "size": 24576,
    "mime_type": "image/png",
    "cta_title": "View product",
    "product_id": 123,
    "created_at": "2026-07-11T12:00:00Z",
    "updated_at": "2026-07-11T12:00:00Z"
  }
}
{
  "message": "Unauthenticated."
}
{
  "message": "This action is unauthorized."
}
{
  "message": "Rule not found."
}
{
  "message": "The given data was invalid.",
  "errors": {
    "data": [
      "The data field is required."
    ]
  }
}
PATCH
/v2/highlights/{highlight}/media/reorder

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

highlight*integer

The highlight path parameter.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://sell.app/api/v2/highlights/0/media/reorder" \  -H "Content-Type: application/json" \  -d '{    "resources": [      42,      41    ]  }'
{
  "data": [
    {
      "id": 0,
      "sort_order": 0,
      "type": "image",
      "url": "http://example.com",
      "filename": "string",
      "size": 0,
      "mime_type": "string",
      "cta_title": "string",
      "product_id": 0,
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z"
    }
  ]
}
{
  "message": "Unauthenticated."
}
{
  "message": "This action is unauthorized."
}
{
  "message": "Rule not found."
}
{
  "message": "The given data was invalid.",
  "errors": {
    "data": [
      "The data field is required."
    ]
  }
}
DELETE
/v2/highlights/{highlight}/media/{media}

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

highlight*integer

The highlight path parameter.

media*integer

The media path parameter.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X DELETE "https://sell.app/api/v2/highlights/0/media/0"
{
  "data": {
    "id": 84,
    "sort_order": 1,
    "type": "image",
    "url": "https://cdn.sell.app/store/1/highlights/example.png",
    "filename": "example.png",
    "size": 24576,
    "mime_type": "image/png",
    "cta_title": "View product",
    "product_id": 123,
    "created_at": "2026-07-11T12:00:00Z",
    "updated_at": "2026-07-11T12:00:00Z"
  }
}
{
  "message": "Unauthenticated."
}
{
  "message": "This action is unauthorized."
}
{
  "message": "Rule not found."
}
{
  "message": "The given data was invalid.",
  "errors": {
    "data": [
      "The data field is required."
    ]
  }
}