canonical: https://jentic.com/apis/api.appetize.io/appetize

# Appetize API

The Appetize API drives Appetize.io's browser-based mobile app streaming service, letting teams upload .ipa and .apk binaries, update existing apps, list registered apps, group apps into tenants, and pull usage analytics. Customers embed the resulting app session into product demos, support tooling, automated tests, and developer documentation without distributing the binary or asking users to install anything. Authentication is via the X-API-KEY header. Useful for QA platforms, sales engineering teams, and developer-relations workflows that need an interactive mobile app inside a web page.

## For AI agents

Upload, update, list, and group iOS and Android apps for Appetize.io's browser-based mobile streaming, and pull usage summaries.

## Scope

Does not handle real-device test grids, automated test orchestration, or app store distribution - use for Appetize browser-based mobile streaming only.

## Capabilities

- Upload a new iOS or Android app binary to Appetize via POST /apps
- List apps available in the account through GET /apps and GET `/apps/all`
- Retrieve a single app's metadata and configuration via GET `/apps/{publicKey}`
- Update an existing app's binary or settings via PUT `/apps/{publicKey}`
- Delete an app from the workspace via DELETE `/apps/{publicKey}`
- Pull aggregated usage metrics across the account via /usageSummary

## Use cases

### Embed a live mobile demo in a marketing site

Upload an .ipa or .apk via POST /apps, capture the publicKey from the response, and use it to render an Appetize embed in a marketing or product page. Visitors can interact with the real app inside the browser without an install. PUT `/apps/{publicKey}` swaps in newer builds without changing the embed URL, so a marketing or DevRel team keeps the demo evergreen.

Example prompt: POST /apps with the .ipa file and platform=ios, capture the returned publicKey, then construct the Appetize embed URL for the marketing page.

### Automated mobile QA pipeline

Wire Appetize into a CI pipeline so every successful mobile build is uploaded via POST /apps and made available to QA inside a browser. Test agents, manual QA, and product reviewers can all share the same Appetize session URL, with PUT `/apps/{publicKey}` updating the same key per branch. Cuts down on the friction of distributing internal builds via TestFlight or Firebase App Distribution.

Example prompt: On a successful CI build, PUT `/apps/{publicKey}` with the new APK so the QA-shared Appetize URL serves the latest version.

### Usage and cost tracking

Pull aggregated usage data via /usageSummary into an internal billing dashboard or FinOps tool to see how much Appetize streaming time each app consumed in the period. Helps engineering leaders attribute Appetize spend to specific products or environments, and triggers cleanup of /apps that are no longer being used.

Example prompt: Call /usageSummary for the current month and surface total minutes streamed grouped by app to a FinOps dashboard.

### Agent integration via Jentic

Give a DevRel or QA agent a small set of CRUD-style tools (upload, update, list, delete, usage summary) over Appetize through Jentic. The agent receives the operation schemas without needing to read the Appetize docs and the X-API-KEY stays in your Jentic One instance. Suitable for assistants that automate demo-build refresh or QA build distribution.

Example prompt: Search Jentic for 'upload mobile build to Appetize', load POST /apps, and execute it with the binary and platform from a CI artefact.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/apps` | Upload a new iOS or Android app binary |
| GET | `/apps` | List apps visible to the calling key |
| GET | `/apps/all` | List every app across the account |
| GET | `/apps/{publicKey}` | Retrieve a single app by public key |
| PUT | `/apps/{publicKey}` | Update an existing app binary or settings |
| DELETE | `/apps/{publicKey}` | Delete an app from the workspace |
| GET | `/usageSummary` | Aggregated streaming usage statistics |

## Key resources

- **Apps** — Upload, list, retrieve, update, and delete iOS and Android apps registered for streaming
- **Usage Summary** — Aggregated streaming minutes and session counts across the account

## Why Jentic

- **Setup:** Wiring the Appetize API by hand means handling its X-API-KEY header, targeting the v1 host, and mapping the app upload, update, and usage routes yourself. Through Jentic you install once, import Appetize from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Appetize puts the app public key in the URL path (`/apps/{publicKey}`), so a rule can pin your agent to one app: it can read and update that app and nothing else. You choose the operations it may call, so app deletion is not included unless you add it.
- **Credential handling:** Your Appetize X-API-KEY is stored once, encrypted, by your own Jentic One instance and injected as the header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'upload a mobile build', and Jentic returns the matching Appetize operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **BrowserStack API** — Real-device cloud testing as an alternative to in-browser app streaming
- **Sauce Labs API** — Cloud test grid spanning real and virtual mobile devices
- **LambdaTest API** — Cloud-based cross-device and cross-browser testing platform

## FAQ

### What authentication does the Appetize API use?

The Appetize API uses an API key in the X-API-KEY header. Keys are generated from the Appetize dashboard and scoped per account. Through Jentic the key is stored in your Jentic One instance and injected at execution time, so agents never see the raw secret in their context.

### Can I upload a new mobile binary through the Appetize API?

Yes. POST /apps accepts an .ipa or .apk along with platform metadata and returns a publicKey that identifies the streaming session. To replace the binary on an existing key without breaking the embed URL, use PUT `/apps/{publicKey}` with the new file.

### How do I list every app in my Appetize account?

GET /apps returns the apps visible to the calling key, while GET `/apps/all` returns the full account-wide list (including those across other groups). Use these to drive an internal dashboard or to clean up apps no longer in use via DELETE `/apps/{publicKey}.`

### What are the rate limits for the Appetize API?

Appetize does not advertise hard rate limits in the spec; in practice account-level limits are generous for read endpoints and tighter for upload endpoints. Agents that bulk-upload many builds should serialise uploads and respect 429 responses.

### How do I upload a build to Appetize through Jentic?

Search Jentic for 'upload mobile build to Appetize', load the POST /apps operation, and execute it with the binary file and platform. Capture the publicKey from the response and store it alongside the build artefact for later embedding.

### Is the Appetize API free to use?

Appetize offers a free tier with limited streaming minutes and paid plans for production usage. The API itself is the same across tiers; the streaming minutes are billed against the plan. Track consumption via /usageSummary to avoid surprise overages.

### Can I limit what my agent is allowed to do with the Appetize API?

Yes. Because your Jentic One instance is self-hosted, your own rules decide which Appetize operations the agent may call and which credentials it may use. Since Appetize puts the app public key in the URL path (`/apps/{publicKey}`), you can pin the agent to a single app and let it only read and update that one via GET and PUT `/apps/{publicKey}.` You choose the operations it can reach, so destructive calls like DELETE `/apps/{publicKey}` stay off unless you explicitly add them.
