---
title: "Start a resumable AAB upload directly to Google"
method: POST
path: "/api/apps/{appId}/google-play/edits/{editId}/bundle-upload"
tags: ["Google Play Publishing"]
---

# Start a resumable AAB upload directly to Google

`POST /api/apps/{appId}/google-play/edits/{editId}/bundle-upload`

## Request

- Base URL: `https://api.appskyline.com`
- URL: `https://api.appskyline.com/api/apps/{appId}/google-play/edits/{editId}/bundle-upload`
- Auth: one of:
  - HTTP basic
  - API key in header `Authorization`

Requires `releases:write`. Uses the stored service account for this AppSkyline app. Organization-admin session writes are also supported. Returns a secret uploadUrl capability, never OAuth credentials. PUT AAB bytes directly to that URL; do not log it. The edit is not committed.

## Path parameters

- `appId` string, required
- `editId` string, required

## Request body

- object
  - `size` integer, required

## Response `200`

Operation result; includes appId and packageName. Commit is not proof of publication.

- object

## Other responses

- `400`: Invalid input or Google API error; details retain upstream status and review action
- `401`: Authentication required
- `403`: Insufficient scope, app binding, or administrator role
- `404`: App not found in the authenticated organization

---

[API](https://skmtc.dev/appskyline/apis/appskyline-api.md) · [All operations](https://skmtc.dev/appskyline/apis/appskyline-api/llms.txt) · [OpenAPI document](https://skmtc.dev/appskyline/apis/appskyline-api/revisions/46928c020440?raw)
