---
title: "Create an app"
method: POST
path: "/apps"
---

# Create an app

`POST /apps`

Programmatically create a new OneSignal app via the REST API. This guide explains required fields, supported platform configurations (Web, Android, iOS), and how to properly authenticate using your Organization API key.

## Headers

- `Content-Type` string, required
- `Authorization` string, required

## Request body

- object
  - `name` string, required — An internal name you set to help organize and track Apps. Maximum 128 characters.
  - `organization_id` string, required — The [Organization ID](/docs/en/keys-and-ids#organization-id) that the app will be associated with.
  - `chrome_web_origin` string — The HTTPS [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) URL for your website. Required for web push notifications.
  - `site_name` string — The name of your website. Used for web push notification titles when omitted from the notification payload. Required for web push notifications.
  - `safari_site_origin` string — The HTTPS [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) URL for your website. Required for web push notifications for Safari and should be the same as `chrome_web_origin`.
  - `chrome_web_default_notification_icon` string — The full `https` URL to your default icon resource. The icon should be a `256x256px` PNG.
  - `safari_icon_256_256` string — The full `https` URL to your default icon resource. The icon should be a `256x256px` PNG.
  - `safari_apns_p12` string — A Base64 encoded p12 certificate for Safari Push Notifications. If omitted, we will assign one to your app for you.
  - `safari_apns_p12_password` string — The password for the `safari_apns_p12` file if applicable.
  - `fcm_v1_service_account_json` string — Your FCM Service Account JSON file converted to base64 format. See [Android: Firebase Credentials](/docs/android-firebase-credentials). Required for Android mobile push notifications.
  - `apns_p8` string — A Base64 encoded p8 file for iOS mobile Push Notifications. Omit if using `apns_p12`. See [p8 Token-based connection to APNS](/docs/ios-p8-token-based-connection-to-apns).
  - `apns_env` 'production' | 'development' — The [APS Environment Entitlement](https://developer.apple.com/documentation/bundleresources/entitlements/aps-environment) to specify whether this is a `production` or `development` environment. Defaults to `production`. Use with `apns_p8`.
  - `apns_key_id` string — The APNS Key ID. Use with `apns_p8`. See [p8 Token-based connection to APNS](/docs/ios-p8-token-based-connection-to-apns).
  - `apns_team_id` string — The APNS Team ID. Use with `apns_p8`. See [p8 Token-based connection to APNS](/docs/ios-p8-token-based-connection-to-apns).
  - `apns_bundle_id` string — The Bundle ID for your app. Use with `apns_p8`. See [p8 Token-based connection to APNS](/docs/ios-p8-token-based-connection-to-apns).
  - `apns_p12` string — A Base64 encoded p12 certificate for iOS mobile push notifications. Omit if using `apns_p8`. See [p12 APNS Authentication](/docs/ios-p12-generate-certificates).
  - `apns_p12_password` string — The password for the `apns_p12` file if applicable.
  - `additional_data_is_root_payload` boolean — If set to `true`, the `data` paramater in your push notification payload will be added to the root payload of the notification. Helpful for customizations that require access to the data outside of our [OSNotification payload `additionalData` property](/docs/osnotification-payload).

## Response `200`

200

- object
  - `id` string — The OneSignal App ID in UUID v4 format.
  - `name` string — An internal name you set to help organize and track Apps. Maximum 128 characters.
  - `players` integer — The total number of Subscriptions in the app.
  - `messageable_players` integer — The number of Subscriptions eligible to receive messages in the app.
  - `created_at` string — The date and time the app was created.
  - `updated_at` string — The date and time the app was last updated.
  - `organization_id` string — The Organization ID in which the app was created.

## Other responses

- `403` — Forbidden. The Authorization key does not have permission to create an app under this organization, or the request violates the organization's policy.
- `404` — Either the referenced organization or the source app (when copying configuration) was not found, or your API key cannot reach it.
- `429` — Rate limit exceeded. Wait the number of seconds in the `Retry-After` header before retrying.
- `503` — Service temporarily unavailable. Retry after a short backoff. The body may be empty or non-JSON in some failure modes.

---

[API](https://skmtc.net/onesignal/apis/api-onesignal-com.md) · [All operations](https://skmtc.net/onesignal/apis/api-onesignal-com/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/onesignal/api-onesignal-com/versions/0fc223f7e338/schema)
