app_name
Text · RequiredThe Android launcher name and APK filename. Up to 80 UTF-16 code units and 120 UTF-8 bytes.
A simple guide to turning your HTML, project ZIP, or website link into an Android test APK with our API.
Send a multipart request and receive a ready-to-download APK.
https://app-creator-x.ueu.workers.dev/api/v1/buildProvide an app name, an icon, and one website source.
The Android launcher name and APK filename. Up to 80 UTF-16 code units and 120 UTF-8 bytes.
Upload an HTML or ZIP file as html, or send an HTTP(S) website address as url.
A PNG or JPEG image. It will be resized to fit the app's launcher icon.
Choose one: send either html or url — not both.
For a single page, upload your .html or .htm file directly. If your project uses multiple pages or separate files such as style.css, script.js and images, put them in a ZIP. Include index.html at the ZIP root or inside one enclosing project folder.
Choose your source and replace the example values with your own.
curl --fail-with-body \
-X POST 'https://app-creator-x.ueu.workers.dev/api/v1/build' \
-F 'app_name=Pixel Topup' \
-F 'html=@index.html' \
-F 'icon=@icon.png' \
-o 'Pixel Topup.apk'curl --fail-with-body \
-X POST 'https://app-creator-x.ueu.workers.dev/api/v1/build' \
-F 'app_name=Pixel Topup' \
-F 'html=@website.zip' \
-F 'icon=@icon.png' \
-o 'Pixel Topup.apk'curl --fail-with-body \
-X POST 'https://app-creator-x.ueu.workers.dev/api/v1/build' \
-F 'app_name=Pixel Topup' \
-F 'url=https://example.com' \
-F 'icon=@icon.png' \
-o 'Pixel Topup.apk'// websiteFile and iconFile are File objects.
const data = new FormData();
data.append('app_name', 'Pixel Topup');
data.append('html', websiteFile); // Or use 'url' and a URL string.
data.append('icon', iconFile);
const response = await fetch(
'https://app-creator-x.ueu.workers.dev/api/v1/build',
{ method: 'POST', body: data }
);
if (!response.ok) throw new Error(await response.text());
const url = URL.createObjectURL(await response.blob());
const link = document.createElement('a');
link.href = url;
link.download = 'Pixel Topup.apk';
link.click();
setTimeout(() => URL.revokeObjectURL(url), 60000);200 OK Returns binary APK data with a Content-Disposition filename.
A few useful details before you send your request.
Icons: PNG or JPEG, up to 4 megapixels; interlaced PNG is unsupported. Total request body: up to 16,842,752 bytes including multipart overhead. ZIP64, encrypted ZIPs and ZIP comments are not supported. URL: HTTP(S), max. 2,048 bytes after normalization, no embedded credentials.
Website and API jobs run in arrival order, one at a time, with a 2-second pause after each job. Keep your API connection open while waiting.
Up to 100 jobs can wait. Rate limits apply; retry a rejected request later. A lost connection requires a new submission.
Application errors usually return JSON: {"error":"message"}.
| Status | What it means |
|---|---|
| 400 | Missing, invalid, oversized, or unsupported input. |
| 405 | Unsupported method. Use POST or OPTIONS. |
| 413 | The request body is too large. |
| 415 | Use multipart/form-data. |
| 429 | Too many submissions. Retry later. |
| 500 | The APK build failed unexpectedly. |
| 503 | The queue or service is temporarily unavailable. |
429 and some 503 responses include Retry-After. Approximate rate limit: 30 API submissions and browser queue joins combined per IP per 60 seconds, per Cloudflare location. Platform errors may return non-JSON responses.
These APKs are designed for testing, not release signing.
Each API build gets a new temporary signing key. A later build cannot update an earlier installation, even with the same name. Uninstalling may remove app data.
API files are uploaded for processing; browser builds run locally. Packaged website files are encrypted against casual viewing, not determined reverse engineering. Do not include secrets.
Link APKs open the live site in an Android WebView. Prefer HTTPS. URLs remain visible in the APK; compatibility varies by site and device.
The package ID uses a short hash of the app name, so collisions are possible. Changing the name changes the package ID, not text inside your website.