v1.4.2 Operational

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.

Base URL
https://api.apptouchicon.com/v1

Authentication

The API uses Bearer token authentication. Include your API key in the `Authorization` header for every request.

Header
Authorization: Bearer sk_live_your_api_key_here

Generate keys in your Dashboard. Never expose client-side keys in public repositories.

Rate Limits

PlanRequests/minConcurrent JobsMax File Size
Free3025 MB
Pro2001025 MB
EnterpriseUnlimited50100 MB

Exceeding limits returns 429 Too Many Requests with a Retry-After header.

Endpoints

POST /generate Create a new icon generation job

Upload a source image to generate a complete icon package. Supports PNG, JPG, SVG, and WebP inputs. Processing is asynchronous.

Query Parameters

ParameterTypeRequiredDescription
presetstringNoPlatform preset: ios, android, web, universal (default)
background_colorhexNoTransparent icons require a fallback hex color
roundnessfloatNoCorner radius ratio (0.0 to 1.0). Default: 0.3

Request Body (Multipart)

curl
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

JSON 202
{ "job_id": "j_8x9m2p4q1w", "status": "processing", "created_at": "2025-11-28T14:32:10Z", "estimated_seconds": 2.4, "webhook_url": null }
202 Job queued successfully
400 Invalid parameters or unsupported format
401 Missing or invalid API key
GET /formats List all supported output formats

Returns a dictionary of platforms and their corresponding required icon specifications.

JSON 200
{ "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" } ] }
GET /status/{job_id} Check generation job progress

Poll this endpoint after submitting a generation request. Returns completed when ready for download.

JSON 200
{ "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 }
GET /download/{job_id} Retrieve generated icon package

Returns a ZIP archive containing all generated icons, manifest files, and implementation guides. Access expires after 7 days.

Response Headers
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 Schema
{ "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" } }
CodeMeaning
invalid_sourceImage too small, corrupted, or unsupported format
quota_exceededDaily or monthly generation limit reached
render_failedInternal processing error. Retry with same job_id
expired_downloadJob 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.