# Create new app

## Create new app

> Creates a new app and returns a new publicKey

```json
{"openapi":"3.0.3","info":{"title":"Appetize API","version":"1.0.0"},"servers":[{"url":"https://api.appetize.io/v1"}],"security":[{"apiToken":[]}],"components":{"securitySchemes":{"apiToken":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"Use an API token for authentication via X-API-KEY header"}}},"paths":{"/apps":{"post":{"summary":"Create new app","tags":["Creating a new App"],"description":"Creates a new app and returns a new publicKey","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["platform"],"properties":{"url":{"type":"string","description":"A publicly accessible link to your .zip, .tar.gz, or .apk file."},"platform":{"type":"string","enum":["ios","android"],"description":"The platform of the app. Either ios or android."},"fileType":{"type":"string","enum":["zip","tar.gz","apk"],"description":"The type of file that the url points to. Default is zip for iOS, apk for Android."},"note":{"type":"string","description":"A note for your own purposes, will appear on your management dashboard."},"timeout":{"type":"number","description":"The number of seconds to wait until automatically ending the session due to user inactivity.  \n\nMust be 30, 60, 90, 120, 180, 300, 600, 1800, 3600 or 7200, default is 120 or the account default if set.\n"},"timeLimit":{"type":"number","description":"The maximum number of seconds a session can run, before it is automatically ended.\n"},"maxConcurrent":{"type":"number","description":"The maximum number of concurrent sessions allowed for this app."},"referrerHostnamesRestricted":{"type":"array","items":{"type":"string","description":"A list of hostnames that are allowed to embed this app.  \nIf not set, any hostname can embed the app.\n"}},"disabled":{"type":"boolean","description":"Disables streaming for this app."},"disableHome":{"type":"boolean","description":"Disables the home button on the iOS simulator when available."},"useLastFrame":{"type":"boolean","description":"Show the last image on the screen in the simulator after the session ends."},"buttonText":{"type":"string","default":"Tap to play","description":"Customize the message prompting the user to start the session. Default is \"Tap to play\"."},"postSessionButtonText":{"type":"string","default":"Tap to play","description":"Customize the message prompting the user to restart the session. Default is \"Tap to play\"."},"launchUrl":{"type":"string","description":"Specify a deep link to bring your users to a specific location when your app is launched."},"appPermissions":{"type":"object","description":"Values for each field determine who can perform the specified action.  \n\nSee [App Permissions](https://docs.appetize.io/platform/app-permissions#permissions) for more information.\n","properties":{"run":{"type":"string","nullable":true,"description":"Run your app:\n  * `authenticated` - Must be authenticated into your account.\n  * `public` - Anyone with the app's publicKey.\n  * `null` - Resets to default.\n","enum":["authenticated","public",null]},"networkProxy":{"type":"string","nullable":true,"description":"Specify a network proxy when running app:\n  * `authenticated` - Must be authenticated into your account.\n  * `public` - Anyone with the app's publicKey.\n  * `null` - Resets to default.\n","enum":["authenticated","public",null]},"networkIntercept":{"type":"string","nullable":true,"description":"Use Appetize's intercepting proxy when running the app:\n  * `authenticated` - Must be authenticated into your account.\n  * `public` - Anyone with the app's publicKey.\n  * `null` - Resets to default.\n","enum":["authenticated","public",null]},"debugLog":{"type":"string","nullable":true,"description":"View your app's NSLog/Logger/Logcat output:\n  * `authenticated` - Must be authenticated into your account.\n  * `public` - Anyone with the app's publicKey.\n  * `null` - Resets to default.\n","enum":["authenticated","public",null]},"adbConnect":{"type":"string","nullable":true,"description":"Debug your app by connecting ADB to the hosted emulator:\n  * `authenticated` - Must be authenticated into your account.\n  * `public` - Anyone with the app's publicKey.\n  * `null` - Resets to default.\n","enum":["authenticated","public",null]},"androidPackageManager":{"type":"string","nullable":true,"description":"Allow the installation of additional APK's while your app is running:\n  * `authenticated` - Must be authenticated into your account.\n  * `public` - Anyone with the app's publicKey.\n  * `null` - Resets to default.\n","enum":["authenticated","public",null]}}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"publicKey":{"type":"string","description":"The unique identifier for the newly created app."},"created":{"type":"string","format":"date-time","description":"The date and time when the app was created."},"updated":{"type":"string","format":"date-time","description":"The date and time when the app was last updated."},"platform":{"type":"string","description":"The platform of the app (ios or android)."},"versionCode":{"type":"integer","description":"Increments with each update of the app."}}}}}}}}}}}
```
