Content Publish API

The Content Publish API is used to view, modify, submit, and change the status of apps registered in Galaxy Store Seller Portal and provides programmatic access to the same types of functionality provided by Seller Portal.

The Content Publish API is part of the Galaxy Store Developer API. You must meet all of the requirements of the Galaxy Store Developer API including, but not limited to, creating the access token and including the access token in the authorization header of every Content Publish API call.

For more information about registering apps, app status, or using Seller Portal, refer to the Galaxy Store Seller Portal User Guide.

The following is a quick reference to the Content Publish APIs:

Name Request Description
View seller’s app list

GET /seller/contentList View a list of all of the seller's registered apps.
View seller’s app details

GET /seller/contentInfo View information about one of the seller's registered apps.
Modify app data

POST /seller/contentUpdate Modify app information, including images, icons, and binary files, while the app is in the REGISTERING state.
Submit app

POST /seller/contentSubmit Submit an app for review.
Change app status

POST /seller/contentStatusUpdate Change the status of an app registered in Seller Portal.
Create file upload session ID

POST /seller/createUploadSessionId Generate a session ID required to upload a file.
File upload

POST /seller/fileUpload Upload files required for app submission or for updating an app.

Authorization header parameters

Every request must include authorization header parameters which specify the content type, your access token, and service account ID. See Create an Access Token for more information about how to create an access token and service account ID.

Attribute Type Description
Authorization string Required. Use Bearer <your-access-token> where <your-access-token> is the access token you requested from the Galaxy Store authentication server

service-account-id string Required. The service account ID used to create the JWT associated with the access token (can be found in the Assistance > API Service area of Seller Portal)

content-type string Required for POST, PUT, and PATCH requests. Must be application/json

The following example shows the header used with the Content Publish APIs:

curl -X CONTENT_PUBLISH_API_REQUEST \
  -H  "content-type: application/json" \
  -H  "Authorization: Bearer <your-access-token>" \
  -H  "service-account-id: <your-service-account-id>"

View seller’s app list

View a list of all of the seller's registered apps.

Request

GET /seller/contentList

Example:

curl -i -X GET \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  "https://devapi.samsungapps.com/seller/contentList"

Response

Parameters

Name Type Description
contentName string Name of the app.
contentId integer The unique 12-digit identifier of the app.
contentStatus string The status of the app in Seller Portal.
standardPrice double The standard price in USD (United States of America dollars) that determines the default country-specific price for all distribution countries.
paid Boolean Whether or not the app download requires a user payment:

Y: The user must pay to download the app
N: The app is free to download

modifyDate string The date the app was last updated in Seller Portal.

Success

[
  {
    "contentName": "Samsung Pay",
    "contentId": "000001234567",
    "contentStatus": "REGISTERING",
    "standardPrice": null,
    "paid": "N",
    "modifyDate": "2021-02-23 01:26:26.0"
  },
  {
    "contentName": "Samsung Health",
    "contentId": "000002345678",
    "contentStatus": "FOR_SALE",
    "standardPrice": "0",
    "paid": "N",
    "modifyDate": "2021-02-23 00:23:19.0"
  },
  {
    "contentName": "Samsung Gallery",
    "contentId": "000003456789",
    "contentStatus": "READY_FOR_CHANGE",
    "standardPrice": "0",
    "paid": "N",
    "modifyDate": "2021-02-22 23:40:46.0"
  },
  {
    "contentName": "Samsung Music",
    "contentId": "000004567890",
    "contentStatus": "READY_TO_PREEXAMINATION",
   "standardPrice": "10",
    "paid": "Y",
    "modifyDate": "2021-02-18 06:48:08.0"
  },
  {
    "contentName": "SmartThings",
    "contentId": "000009876543",
    "contentStatus": "UNDER_CONTENT_REVIEW",
    "standardPrice": "0",
    "paid": "N",
    "modifyDate": "2020-10-06 06:44:35.0"
  },
  {
    "contentName": "Galaxy Wearable",
    "contentId": "000008765432",
    "contentStatus": "CANCELED",
    "standardPrice": "0",
    "paid": "N",
    "modifyDate": "2020-08-11 04:40:27.0"
  }
]

See Failure response codes for a list of possible response codes when a request fails.

View seller’s app details

View information about one of the seller's registered apps.

Request

GET /seller/contentInfo

Parameters

Name Type In Description
contentId string querystring Required. The unique 12-digit identifier of the app.

curl -i -X GET \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  "https://devapi.samsungapps.com/seller/contentInfo?contentId=000007654321"

Response

Parameters

See the Content Publish API Reference for more information about these parameters.

Success

[
  {
    "contentId": "000007654321",
    "appTitle": "The best app ever!",
    "icon": "https://img.samsungapps.com/content/d33aazz11a/2021/0214/IconImage_20210214000000000.png",
    "iconKey": null,
    "contentStatus": "REGISTERING",
    "defaultLanguageCode": "ENG",
    "applicationType": "android",
    "longDescription": "The app that solves all your problems.",
    "shortDescription": "",
    "newFeature": "",
    "ageLimit": "0",
    "openSourceURL": "",
    "privatePolicyURL": "",
    "youTubeURL": "",
    "copyrightHolder": "",
    "supportEMail": "support@mycompany.com",
    "supportedSiteUrl": "",
    "binaryList":[
        {
          "fileName": "App_filename.apk",
	  "binarySeq": "1",
          "versionCode": "3",
          "versionName": "3",
          "packageName": "my.package.name",
          "nativePlatforms": null,
          "apiminSdkVersion": "26",
          "apimaxSdkVersion": null,
          "iapSdk": "N",
          "gms": "Y",
          "filekey": null
        }
    ],
    "standardPrice": "0",
    "paid": "N",
    "autoAddCountry": false,
    "publicationType": "01",
    "startPublicationDate": null,
    "stopPublicationDate": "2023-01-02",
    "usExportLaws": true,
    "reviewComment": null,
    "reviewFilename": null,
    "reviewFilekey": null,
    "edgescreen": null,
    "edgescreenKey": null,
    "edgescreenplus": null,
    "edgescreenplusKey": null,
    "notifyResult":[],
    "sellCountryList":[
      {"countryCode": "AUT", "price": "0"},
      {"countryCode": "DEU", "price": "0"},
      {"countryCode": "ESP", "price": "0"},
      {"countryCode": "FRA", "price": "0"},
      {"countryCode": "ITA", "price": "0"},
      {"countryCode": "JPN", "price": "0"},
      {"countryCode": "KOR", "price": "0"},
      {"countryCode": "NLD", "price": "0"},
      {"countryCode": "TUR", "price": "0"}
    ],
    "supportedLanguages":["DEU", "ENG", "FRA", "ITA", "JPN", "KOR"],
    "addLanguage":[
      {
        "languagecode": "DEU",
        "newFeature": "",
        "description": "The app that solves all your problems.",
        "appTitle": "The best app ever!",
        "screenshots":[
          {
            "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0223/DEU/ScreenImage_202102230000000002.png",
            "screenshotKey": null,
            "reuseYn": false
          },
          {
            "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0223/DEU/ScreenImage_2021022300000000.png",
            "screenshotKey": null,
            "reuseYn": false
          },
          {
            "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0223/DEU/ScreenImage_20210223000000009.png",
            "screenshotKey": null,
            "reuseYn": false
          },
          {
            "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0223/DEU/ScreenImage_202102230000000001.jpeg",
            "screenshotKey": null,
            "reuseYn": false
          }
        ]
      }
    ],
    "screenshots":[
      {
        "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0218/ENG/ScreenImage_20210218000000000.png",
        "screenshotKey": null,
        "reuseYn": false
      },
      {
        "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0218/ENG/ScreenImage_20210218000000001.png",
        "screenshotKey": null,
        "reuseYn": false
      },
      {
        "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0218/ENG/ScreenImage_20210218000000002.png",
        "screenshotKey": null,
        "reuseYn": false
      },
      {
        "screenshotPath": "https://img.samsungapps.com/content/d33aazz11a/2021/0218/ENG/ScreenImage_20210218000000003.png",
        "screenshotKey": null,
        "reuseYn": false
      }
    ],
    "category":[
      {
        "name": "Others",
        "type": "ONE_DEPTH_CATEGORY"
      },
      {
        "name": "Music",
        "type": "GENERAL_CATEGORY"
      }
    ],
    "heroImage": "https://img.samsungapps.com/content/d33aazz11a/2021/0219/ENG/CoverImage_20210219000000007.png",
    "heroImageKey": null
  }
]

See Failure response codes for a list of possible response codes when a request fails.

Modify app data

Modify app information, including images, icons, and binary files, while the app is in the REGISTERING state.

Request

POST /seller/contentUpdate

See the View seller's app details successful response example for the JSON structure. See the Content Publish API Reference for more information about the request parameters.

curl -i -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  -d '{"contentId": "000007654321","appTitle": "Publish API Tester","icon": null,"iconKey": "5d33bb33-9999-0000-1111-66776633dd99",
"contentStatus": "REGISTERING","defaultLanguageCode": "ENG","applicationType": "android","longDescription": "test app","shortDescription": "","newFeature": "",...........}' \
  "https://devapi.samsungapps.com/seller/contentUpdate"

To replace a screenshot, use the reuseYn and screenshotKey parameters. See screenshots parameters for more information.

To add to the supportedLanguages, addLanguage, and sellCountryList parameters, append additional content to the JSON structure.

To remove all content from the addLanguage, binaryList, screenshots, and sellCountryList parameters, leave them blank in the request (for example, "addLanguage" : ""). To keep the existing content for these parameters (neither add nor delete content), set them to null (for example, "binaryList" : "null").

Examples

Modify App Metadata

curl -i -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  -d '{
      "contentId": "000007654321",
      "appTitle": "The best app ever!",
      "iconKey": "<new-icon-key>",
      "defaultLanguageCode": "ENG",
      "longDescription": "new-long-description",
      "shortDescription": "",
      "newFeature": "<new-feature>",
      "ageLimit": "0",
      "openSourceURL": "",
      "privatePolicyURL": "",
      "youTubeURL": "",
      "copyrightHolder": "",
      "supportEMail": "support@mycompany.com",
      "supportedSiteUrl": "",
      "standardPrice": "10",
      "paid": "Y",
      "publicationType": "03",
      "startPublicationDate": "2021-03-31 10:00:00",
      "stopPublicationDate": "2022-01-02",
      "usExportLaws": true,
      "reviewComment": "<new-review-comment>",
      "reviewFilename": null,
      "reviewFilekey": "<new-review-file-key>",
      "edgescreenKey": "<new-edge-screen-key>",
      "edgescreenplusKey": "<new-edge-screen-plus-key>",
      "notifyResult":[],
      "supportedLanguages":["DEU", "ENG", "FRA"],
      "heroImageKey": "<new-hero-Image-key>"
     }' \
  "https://devapi.samsungapps.com/seller/contentUpdate"

Remove and add countries of app sales

curl -i -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  -d '{
      "contentId": "000007654321",
      "appTitle": "The best app ever!",
      "defaultLanguageCode": "ENG",
      "paid": "N",
      "sellCountryList":[
       {"countryCode": "DEU", "price": "0"},
       {"countryCode": "FRA", "price": "0"},
       {"countryCode": "GBR", "price": "0"},
       {"countryCode": "USA", "price": "0"},
       {"countryCode": "<new-sell-countryCode1>", "price": "0"},
       {"countryCode": "<new-sell-countryCode2>", "price": "0"},
       {"countryCode": "<new-sell-countryCode3>", "price": "0"},
       {"countryCode": "<new-sell-countryCode4>", "price": "0"}
      ],
      "supportedLanguages":["DEU", "ENG", "FRA"]
    }' \
  "https://devapi.samsungapps.com/seller/contentUpdate"

Remove and add app screenshots

curl -i -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  -d '{
      "contentId": "000007654321",
      "appTitle": "The best app ever!",
      "defaultLanguageCode": "ENG",
      "paid": "N",
	    "screenshots":[
        {"reuseYn": true},
        {"screenshotKey": "<update-screenshot-2-key>", "reuseYn": false},
        {"screenshotKey": "<update-screenshot-3-key>", "reuseYn": false},
        {"reuseYn": true},
        {"screenshotKey": "<new-screenshot-5-key>", "reuseYn": false},
        {"screenshotKey": "<new-screenshot-6-key>", "reuseYn": false}
      ]
    }' \
  "https://devapi.samsungapps.com/seller/contentUpdate"

Remove additional languages for app

curl -i -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  -d '{
      "contentId": "000007654321",
      "appTitle": "The best app ever!",
      "defaultLanguageCode": "ENG",
      "paid": "N",
      "addLanguage":[
        {
          "languagecode": "<new-addLanguage-1-code>",
          "newFeature": "<new-addLanguage-1-code-new-feature>",
          "description": "<new-addLanguage-1-code-description>",
          "appTitle": "<new-addLanguage-1-code-title>",
          "screenshots":[
            {"screenshotKey": "<new-addLanguage-1-screenshot-1-key>", "reuseYn": false},
            {"screenshotKey": "<new-addLanguage-1-screenshot-2-key>", "reuseYn": false},
            {"screenshotKey": "<new-addLanguage-1-screenshot-3-key>", "reuseYn": false},
            {"screenshotKey": "<new-addLanguage-1-screenshot-4-key>", "reuseYn": false}
          ]
        },
	      {
          "languagecode": "<new-addLanguage-2-code>",
          "newFeature": "<new-addLanguage-2-code-new-feature>",
          "description": "<new-addLanguage-2-code-description>",
          "appTitle": "<new-addLanguage-2-code-title>",
          "screenshots":[
            {"screenshotKey": "<new-addLanguage-2-screenshot-1-key>", "reuseYn": false},
            {"screenshotKey": "<new-addLanguage-2-screenshot-2-key>", "reuseYn": false},
            {"screenshotKey": "<new-addLanguage-2-screenshot-3-key>", "reuseYn": false},
            {"screenshotKey": "<new-addLanguage-2-screenshot-4-key>", "reuseYn": false}
          ]
        }
        ]
      }' \
  "https://devapi.samsungapps.com/seller/contentUpdate"

Register binary

curl -i -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  -d '{
      "contentId": "000007654321",
      "appTitle": "The best app ever!",
      "defaultLanguageCode": "ENG",
      "paid": "N",
      "binaryList":[
          {
            "fileName": "MyApp.apk",
            "binarySeq": "1",
            "versionCode": "3",
            "versionName": "3",
            "packageName": "com.my.app20210330",
            "nativePlatforms": null,
            "apiminSdkVersion": "1",
            "apimaxSdkVersion": null,
            "iapSdk": "N",
            "gms": "Y",
            "filekey": null
          },
          {
		        "gms": "Y",
            "filekey": "<new-binary-file-key>"
		      }
      ]
      }' \
  "https://devapi.samsungapps.com/seller/contentUpdate"

Response

Success

Status: 200 Success
{
  "ctntId": "000007654321",
  "contentStatus": "REGISTERING",
  "httpStatus": "OK",
  "errorCode": null,
  "errorMsg": null
}

See Failure response codes for a list of possible response codes when a request fails.

Submit app

Submit the app for review. An app must be reviewed before it is offered for sale in Galaxy Store. You can check the status of the app using contentList or contentInfo. See App Review for more information about the app review process.

Request

POST /seller/contentSubmit

Parameters

Name Type In Description
contentId string body Required. The unique 12-digit identifier of the app.

curl -i -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  -d '{"contentId": "000007654321"}' \
  "https://devapi.samsungapps.com/seller/contentSubmit"

Response

Success

Status: 204 No Content

See Failure response codes for a list of possible response codes when a request fails.

Change app status

Change the status of an app registered in Seller Portal. You can distribute, suspend, or terminate an app.

Request

POST /seller/contentStatusUpdate
Name Type In Description
contentId string body Required. The unique 12-digit identifier of the app.

contentStatus string body Required. The status to which to change your app.

Set to one of the following values:

  • FOR_SALE: To distribute an app that has the status of READY_FOR_SALE or READY_FOR_CHANGE.
  • SUSPENDED: To suspend the sale of an app when the app has the status of FOR_SALE.
  • TERMINATED: To end the sale of an app when the app has the status of SUSPENDED.

curl -i -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  -d '{"contentId": "000007654321", "contentStatus" :"FOR_SALE"}' \
  "https://devapi.samsungapps.com/seller/contentStatusUpdate"

Response

Success

Status: 204 No Content

See Failure response codes for a list of possible response codes when a request fails.

Create session ID for file upload

Generate a session ID required to upload a file. The session ID is unique and valid for 24 hours.

Request

POST /seller/createUploadSessionId
curl -i -X POST \
  "https://devapi.samsungapps.com/seller/createUploadSessionId"

Response

Success

Status: 200 OK
{
  "url": "https://seller.samsungapps.com/galaxyapi/fileUpload",
  "sessionId": "d7ca6869-128e-4bfb-a56d-674d77f08848"
}

File upload

Upload files required for app submission or for updating an app.

The fileKey in this response is used in the modify app data request.

Refer to App Registration - Information on app-related image/video registration for image file requirements.

Request

POST /seller/fileUpload
Name Type In Description
file string body Required. File to upload, such as a binary file, image (icon, cover image, or screenshot), or zip file (game industry age rating certificates or other reference information needed for app review), and type of file.

sessionId string body Required. Unique ID generated by createUploadSessionId.

curl -i -X POST \
  -H "Content-Type:multipart/form-data" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "service-account-id: <your-service-account-id>" \
  -F "file=@\"./ICON_512x512.png\";type=image/png;filename=\"ICON_512x512.png\"" \
  -F "sessionId=d7ca6869-128e-4bfb-a56d-674d77f08848" \
  "https://seller.samsungapps.com/galaxyapi/fileUpload"

Response

Success

Status: 200 Success
{
  "fileKey": "5d33cb93-b399-41c0-9c41-667946736d09",
  "fileName": "ICON_512x512.png",
  "errorCode": null,
  "errorMsg": null
}

See Failure response codes for a list of possible response codes when a request fails.

Failure response codes

The following are response codes you may see when the request fails.

Status Code and message
400
Bad Request

  • error code: error reason in detail (invalid request or content error)
  • 4106: Failed to distribute content (request error)
403
Forbidden

  • 4008: This content is not yours (no ownership rights of content)
  • 4105: Content is not ready for distribution (unable to submit/change or no ownership rights of contents)
  • 4129: Content is not ready for distribution (unable to submit/change beta application)
  • 7001: Required parameter is missing. (file) (request error)
  • 7002: SessionId does not exist. To upload the file, please get the sessionId. (session ID does not exist)