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, after an app has been submitted and is for sale in galaxy store. 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 appn: 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", "chinaagelimit": "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, after an app has been submitted and is for sale in galaxy store. tipto modify an app, use the response from contentinfo to create the input required for this request. 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. notecontentid, defaultlanguagecode, paid, usexportlaws, binarylist[{binaryseq, filekey, gms}], addlanguage[{languagecode, description, apptitle}], screenshots[{reuseyn}], and sellcountry[{countrycode}] must be included in the request. see the content publish api reference for more information. 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", "chinaagelimit": "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. noteapps must be in the registering state before they can be submitted. 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", "filesize": "86265", "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 400bad request error code: error reason in detail (invalid request or content error)3001: screenshoturl count is not valid (you must include at least four screenshots)4106: failed to distribute content (request error)4125: image upload key cannot be null (if you are replacing the screenshot, you must include the screenshotkey) 403forbidden 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)