Apple Touch Icon API
Generate, optimize, and deliver pixel-perfect touch icons, favicons, and app icons for any platform. Our RESTful API accepts source images and returns production-ready icon packages in under 3 seconds.
https://api.apptouchicon.com/v1
Authentication
The API uses Bearer token authentication. Include your API key in the `Authorization` header for every request.
Authorization: Bearer sk_live_your_api_key_here
Generate keys in your Dashboard. Never expose client-side keys in public repositories.
Rate Limits
| Plan | Requests/min | Concurrent Jobs | Max File Size |
|---|---|---|---|
| Free | 30 | 2 | 5 MB |
| Pro | 200 | 10 | 25 MB |
| Enterprise | Unlimited | 50 | 100 MB |
Exceeding limits returns 429 Too Many Requests with a Retry-After header.
Endpoints
Upload a source image to generate a complete icon package. Supports PNG, JPG, SVG, and WebP inputs. Processing is asynchronous.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
preset | string | No | Platform preset: ios, android, web, universal (default) |
background_color | hex | No | Transparent icons require a fallback hex color |
roundness | float | No | Corner radius ratio (0.0 to 1.0). Default: 0.3 |
Request Body (Multipart)
curl -X POST https://api.apptouchicon.com/v1/generate?preset=universal \
-H "Authorization: Bearer <API_KEY>" \
-F "source=@hero.png" \
-F "background_color=#2563eb" \
-F "roundness=0.25"
Response
{
"job_id": "j_8x9m2p4q1w",
"status": "processing",
"created_at": "2025-11-28T14:32:10Z",
"estimated_seconds": 2.4,
"webhook_url": null
}
Returns a dictionary of platforms and their corresponding required icon specifications.
{
"ios": [
{ "name": "apple-touch-icon.png", "size": "180x180", "format": "png" },
{ "name": "apple-touch-icon-precomposed.png", "size": "180x180", "format": "png" }
],
"android": [
{ "name": "mipmap-xxxhdpi/ic_launcher.png", "size": "192x192", "format": "png" },
{ "name": "android-chrome-512x512.png", "size": "512x512", "format": "png" }
],
"web": [
{ "name": "favicon.ico", "size": "48x48", "format": "ico" },
{ "name": "site.webmanifest", "size": "meta", "format": "json" }
]
}
Poll this endpoint after submitting a generation request. Returns completed when ready for download.
{
"job_id": "j_8x9m2p4q1w",
"status": "completed",
"created_at": "2025-11-28T14:32:10Z",
"completed_at": "2025-11-28T14:32:12Z",
"files_generated": 14,
"total_size_kb": 186
}
Returns a ZIP archive containing all generated icons, manifest files, and implementation guides. Access expires after 7 days.
Content-Type: application/zip
Content-Disposition: attachment; filename="icons-universal-j8x9m.zip"
Error Handling
The API uses standard HTTP status codes and returns detailed error objects in JSON format.
{
"error": {
"code": "invalid_source",
"message": "Source image must be at least 512x512 pixels",
"request_id": "req_9f8a7b6c",
"documentation_url": "https://docs.apptouchicon.com/errors#invalid_source"
}
}
| Code | Meaning |
|---|---|
invalid_source | Image too small, corrupted, or unsupported format |
quota_exceeded | Daily or monthly generation limit reached |
render_failed | Internal processing error. Retry with same job_id |
expired_download | Job results have expired (7-day retention) |
SDKs & Libraries
Official client libraries for faster integration:
- JavaScript / Node.js -
npm install @apptouchicon/sdk - Python -
pip install apptouchicon - PHP -
composer require apptouchicon/apptouchicon-php - Go -
go get github.com/apptouchicon/go
For questions, integration support, or enterprise licensing, contact api-support@apptouchicon.com.