Developer Console

Python Example

The following examples show Python code for various tasks using the App Submission API.

Obtain Access Token

Use your client ID and client secret to obtain an auth token. You will add the auth token to the header of each API request. The following Python example shows how to obtain an auth token and create the Authorization header using the token.

#  Values that you need to provide
client_id = "<your client id>"
client_secret = "<your client secret>"
app_id = "<your app id>"


scope = "appstore::apps:readwrite"
grant_type = "client_credentials"
data = {
    "grant_type": grant_type,
    "client_id": client_id,
    "client_secret": client_secret,
    "scope": scope
amazon_auth_url = ""
auth_response =, data=data)

# Read token from auth response
auth_response_json = auth_response.json()
auth_token = auth_response_json["access_token"]

auth_token_header_value = "Bearer %s" % auth_token

auth_token_header = {"Authorization": auth_token_header_value}

Create a New Edit

The following Python example shows how to create an Edit.

create_edit_path = '/v1/applications/%s/edits' % app_id
create_edit_url = BASE_URL + create_edit_path
create_edit_response =, headers=headers)
current_edit = create_edit_response.json()

edit_id = current_edit['id']

Get the Open Edit

The following example shows how to get the Id of the open Edit.

get_edits_path = '/v1/applications/%s/edits' % app_id
get_edits_url = BASE_URL + get_edits_path
get_edits_response = requests.get(get_edits_url, headers=headers)
current_edit = get_edits_response.json()

edit_id = current_edit['id']

Replace an Existing APK

The following example shows how to replace the first APK file with a file from your local machine.

## Get the current list of APKs
get_apks_path = '/v1/applications/%s/edits/%s/apks' % (app_id, edit_id)
get_apks_url = BASE_URL + get_apks_path
apks = requests.get(get_apks_url, headers=headers)

firstAPK = apks[0]
apk_id = firstAPK['id']
replace_apk_path = '/v1/applications/%s/edits/%s/apks/%s/replace' % (app_id, edit_id, apk_id)

## Open the apk file on your local machine
local_apk = open(local_apk_path, 'rb').read()

replace_apk_url = BASE_URL + replace_apk_path
all_headers = {
    'Content-Type': 'application/',
    'If-Match': etag
replace_apk_response = requests.put(replace_apk_url, headers=all_headers, data=local_apk)

Add a new APK

The following example shows how to upload a new APK file.

add_apk_path = '/v1/applications/%s/edits/%s/apks/upload' % (app_id, edit_id)
add_apk_url = BASE_URL + add_apk_path
local_apk = open(apk_location, 'rb').read()
all_headers = {
    'Content-Type': 'application/'
add_apk_response =, headers=all_headers, data=local_apk)
response = add_apk_response.json()

Update a Listing

The following example shows how to update the store listing for a locale.

listing_headers = headers.copy()
    'Content-Type': 'application/json'
listings_etag, current_listing_json = get_current_listing(app_id, edit_id, language, listing_headers)

edit_body = current_listing_json.copy()
edit_listing_headers = listing_headers.copy()
    'If-Match': listings_etag

edit_listing_response = update_listing(app_id, edit_id, language, edit_body, edit_listing_headers)

Last updated: Jan 26, 2023