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 /galaxyapi/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" } ] notethe contentstatus of registering returned by the api is the same as the updating state displayed in seller portal 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 } ] notethe contentstatus of registering returned by the api is the same as the updating state displayed in seller portal 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, and publicationtype, must be included in the request if you are updating addlanguage, binarylist, screenshots, or sellcountry, these subparameters must be included addlanguage[{languagecode, description, apptitle}], binarylist[{binaryseq, filekey, gms}], screenshots[{reuseyn}], and sellcountry[{countrycode}] 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>", "addlanguage" "null", "binarylist" "null", "screenshots" "null", "sellcountrylist" "null" }' \ "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", "publicationtype" "03", "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", "publicationtype" "03", "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", "publicationtype" "03", "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", "publicationtype" "03", "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 }, { "binaryseq" "2", "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 } notethe contentstatus of registering returned by the api is the same as the updating state displayed in seller portal 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 this is the same as the updating state displayed in seller portal 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 notethe base url for this api is different from the rest of the apis on this page https //seller samsungapps com/galaxyapi/ instead of https //devapi samsungapps com/seller/ request post /galaxyapi/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