The TapKit REST API gives you programmatic control over real iPhones. Everything in TapKit happens inside a session — a complete agent-controlled phone interaction.Documentation Index
Fetch the complete documentation index at: https://docs.tapkit.ai/llms.txt
Use this file to discover all available pages before exploring further.
Base URL
Authentication
All API endpoints require an API key in theX-API-Key header:
joot_ followed by a random string.
Response format
All responses are JSON. Successful responses return the requested data:Error responses
Errors return a consistent format:| Code | HTTP Status | Description |
|---|---|---|
INVALID_API_KEY | 401 | API key is invalid or revoked |
AUTH_REQUIRED | 401 | No authentication provided |
SUBSCRIPTION_REQUIRED | 402 | No active subscription |
PHONE_NOT_FOUND | 404 | Phone ID doesn’t exist |
SESSION_NOT_FOUND | 404 | Session ID doesn’t exist |
PHONE_NOT_CONNECTED | 400 | Phone not connected to any Mac |
MAC_APP_NOT_RUNNING | 400 | Mac companion app is offline |
TASK_ALREADY_RUNNING | 409 | Agent task already running on phone |
TIMEOUT | 408 | Operation timed out |
SCREENSHOT_FAILED | 500 | Screenshot capture failed |
EMPTY_BODY | 400 | Required request body missing |
Endpoint categories
Phone endpoints fall into a few different categories. Use Inspection for endpoints that ask the Mac app to report something from the connected phone, such as a screenshot or installed app list.| Category | Purpose | Examples |
|---|---|---|
| Devices | Register, select, and configure connected phones | GET /phones, GET /phones/{id}/status |
| Inspection | Read state or data from the connected phone through the Mac app | GET /phones/{id}/screenshot, GET /phones/{id}/apps |
| Gestures | Send touch input to the phone | POST /phones/{id}/tap, POST /phones/{id}/drag |
| Device commands | Press system controls or open system surfaces | POST /phones/{id}/home, POST /phones/{id}/lock |
| Apps & automation | Launch apps, run shortcuts, or exchange clipboard text with the phone | POST /phones/{id}/open-app, POST /phones/{id}/copy-text |
Sync vs async mode
Most state-changing endpoints support both synchronous and asynchronous execution. Inspection endpoints may return data directly, such as PNG image bytes for screenshots.Synchronous (default)
Request blocks until the action completes:Asynchronous
Add?async=true to return immediately with a job ID:
GET /v1/jobs/{job_id} to check status.
What’s next
Sessions
Understand the core concept — how agent-controlled phone interactions work.
Phones
Learn what you can control on a phone via the API.
Devices
List and manage connected phones.
Inspection
Read screenshots, app lists, and live phone state.
Gestures
Send touch input to the phone.
Device Commands
Press Home, lock, unlock, and open system surfaces.