OneSignal
OneSignal is a customer engagement platform with push notifications, in-app messaging, email, SMS, and live activities. Free tier serves billions of messages monthly.
5 APIs
0 Features
NotificationsPushEmailSMSMobile
APIs
OneSignal Messages API
Send push, email, SMS, and Live Activity messages.
OneSignal Users & Subscriptions API
Create, update, view and delete users and their subscriptions.
OneSignal Segments API
Create and manage dynamic and saved segments for targeting.
OneSignal Apps & Keys API
Manage apps, API keys and templates at the org level.
OneSignal Exports & Analytics API
CSV export of subscriptions and events plus message analytics.
Collections
OneSignal
OPENGraphQL
OneSignal GraphQL Schema
Conceptual GraphQL schema for the OneSignal multi-channel customer engagement platform, derived from the OneSignal REST API v1 (https://documentation.onesignal.com/reference).
GRAPHQLPricing Plans
Rate Limits
FinOps
Onesignal Finops
FINOPSResources
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
🔗
LlmsText
LlmsText
Sources
opencollection: 1.0.0
info:
name: OneSignal
version: 5.5.0
items:
- info:
name: View notifications
type: http
http:
method: GET
url: https://api.onesignal.com/notifications
params:
- name: app_id
value: ''
type: query
description: The app ID that you want to view notifications from
- name: limit
value: ''
type: query
description: How many notifications to return. Max is 50. Default is 50.
- name: offset
value: ''
type: query
description: Page offset. Default is 0. Results are sorted by queued_at in descending order. queued_at is a representation
of the time that the notification was queued at.
- name: kind
value: ''
type: query
description: "Kind of notifications returned:\n * unset - All notification types (default)\n * `0` - Dashboard only\n\
\ * `1` - API only\n * `3` - Automated only\n"
auth:
type: bearer
token: '{{bearerToken}}'
docs: View the details of multiple notifications
- info:
name: Create notification
type: http
http:
method: POST
url: https://api.onesignal.com/notifications
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: 'Sends notifications to your users.
**Target by External ID (push example):** set `include_aliases` to `{ "external_id": ["your-user-id"] }` and set `target_channel`
to `push` (or `email` / `sms` for those channels). Alias object keys must match API labels exactly (for example `external_id`,
not camelCase).
**Do not confuse** the notification-level `external_id` field with External ID targeting: top-level `external_id` / `idempotency_key`
are for idempotent notification requests only, not for s'
- info:
name: View notification
type: http
http:
method: GET
url: https://api.onesignal.com/notifications/:notification_id
params:
- name: app_id
value: ''
type: query
- name: notification_id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: View the details of a single notification and outcomes associated with it
- info:
name: Stop a scheduled or currently outgoing notification
type: http
http:
method: DELETE
url: https://api.onesignal.com/notifications/:notification_id
params:
- name: app_id
value: ''
type: query
- name: notification_id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Used to stop a scheduled or currently outgoing notification
- info:
name: Notification History
type: http
http:
method: POST
url: https://api.onesignal.com/notifications/:notification_id/history
params:
- name: notification_id
value: ''
type: path
description: The "id" of the message found in the Notification object
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: -> View the devices sent a message - OneSignal Paid Plan Required This method will return all devices that were sent
the given notification_id of an Email or Push Notification if used within 7 days of the date sent. After 7 days of the
sending date, the message history data will be unavailable. After a successful response is received, the destination url
may be polled until the file becomes available. Most exports are done in ~1-3 minutes, so setting a poll interval of 10
seconds should be adequ
- info:
name: View apps
type: http
http:
method: GET
url: https://api.onesignal.com/apps
auth:
type: bearer
token: '{{bearerToken}}'
docs: View the details of all of your current OneSignal apps
- info:
name: Create an app
type: http
http:
method: POST
url: https://api.onesignal.com/apps
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Creates a new OneSignal app
- info:
name: View an app
type: http
http:
method: GET
url: https://api.onesignal.com/apps/:app_id
params:
- name: app_id
value: ''
type: path
description: An app id
auth:
type: bearer
token: '{{bearerToken}}'
docs: View the details of a single OneSignal app
- info:
name: Update an app
type: http
http:
method: PUT
url: https://api.onesignal.com/apps/:app_id
params:
- name: app_id
value: ''
type: path
description: An app id
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Updates the name or configuration settings of an existing OneSignal app
- info:
name: Get Segments
type: http
http:
method: GET
url: https://api.onesignal.com/apps/:app_id/segments
params:
- name: app_id
value: ''
type: path
description: The OneSignal App ID for your app. Available in Keys & IDs.
- name: offset
value: ''
type: query
description: Segments are listed in ascending order of created_at date. offset will omit that number of segments from
the beginning of the list. Eg offset 5, will remove the 5 earliest created Segments.
- name: limit
value: ''
type: query
description: The amount of Segments in the response. Maximum 300.
auth:
type: bearer
token: '{{bearerToken}}'
docs: Returns an array of segments from an app.
- info:
name: Create Segment
type: http
http:
method: POST
url: https://api.onesignal.com/apps/:app_id/segments
params:
- name: app_id
value: ''
type: path
description: The OneSignal App ID for your app. Available in Keys & IDs.
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: 'Create a segment visible and usable in the dashboard and API - Required: OneSignal Paid Plan
The Create Segment method is used when you want your server to programmatically create a segment instead of using the
OneSignal Dashboard UI. Just like creating Segments from the dashboard you can pass in filters with multiple "AND" or
"OR" operator''s.
🚧
Does Not Update Segments
This endpoint will only create segments, it does not edit or update currently created Segments. You will need to use th'
- info:
name: Delete Segment
type: http
http:
method: DELETE
url: https://api.onesignal.com/apps/:app_id/segments/:segment_id
params:
- name: app_id
value: ''
type: path
description: The OneSignal App ID for your app. Available in Keys & IDs.
- name: segment_id
value: ''
type: path
description: The segment_id can be found in the URL of the segment when viewing it in the dashboard.
auth:
type: bearer
token: '{{bearerToken}}'
docs: 'Delete a segment (not user devices) - Required: OneSignal Paid Plan
You can delete a segment under your app by calling this API. You must provide an API key in the Authorization header that
has admin access on the app.
The segment_id can be found in the URL of the segment when viewing it in the dashboard.
'
- info:
name: View Outcomes
type: http
http:
method: GET
url: https://api.onesignal.com/apps/:app_id/outcomes
params:
- name: app_id
value: ''
type: path
description: The OneSignal App ID for your app. Available in Keys & IDs.
- name: outcome_names
value: ''
type: query
description: 'Required
Comma-separated list of names and the value (sum/count) for the returned outcome data.
Note: Clicks only support count aggregation.
For out-of-the-box OneSignal outcomes such as click and session duration, please use the "os" prefix with two underscores.
For other outcomes, please use the name specified by the user.
Example:os__session_duration.count,os__click.count,CustomOutcomeName.sum
'
- name: outcome_names[]
value: ''
type: query
description: 'Optional
If outcome names contain any commas, then please specify only one value at a time.
Example: outcome_names[]=os__click.count&outcome_names[]=Sales, Purchase.count
where "Sales, Purchase" is the custom outcomes with a comma in the name.
'
- name: outcome_time_range
value: ''
type: query
description: 'Optional
Time range for the returned data. The values can be 1h (for the last 1 hour data), 1d (for the last 1 day data), or
1mo (for the last 1 month data).
Default is 1h if the parameter is omitted.
'
- name: outcome_platforms
value: ''
type: query
description: 'Optional
Platform id. Refer device''s platform ids for values.
Example:
outcome_platform=0 for iOS
outcome_platform=7,8 for Safari and Firefox
Default is data from all platforms if the parameter is omitted.
'
- name: outcome_attribution
value: ''
type: query
description: 'Optional
Attribution type for the outcomes. The values can be direct or influenced or unattributed.
Example: outcome_attribution=direct
Default is total (returns direct+influenced+unattributed) if the parameter is omitted.
'
auth:
type: bearer
token: '{{bearerToken}}'
docs: 'View the details of all the outcomes associated with your app
🚧
Requires Authentication Key
Requires your OneSignal App''s REST API Key, available in Keys & IDs.
🚧
Outcome Data Limitations
Outcomes are only accessible for around 30 days before deleted from our servers. You will need to export this data every
month if you want to keep it.
'
- info:
name: Start Live Activity
type: http
http:
method: POST
url: https://api.onesignal.com/apps/:app_id/activities/activity/:activity_type
params:
- name: app_id
value: ''
type: path
description: Your OneSignal App ID in UUID v4 format.
- name: activity_type
value: ''
type: path
description: The name of the Live Activity defined in your app. This should match the attributes struct used in your
app's Live Activity implementation.
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Remotely start a Live Activity on iOS devices via OneSignal’s REST API.
- info:
name: Update a Live Activity via Push
type: http
http:
method: POST
url: https://api.onesignal.com/apps/:app_id/live_activities/:activity_id/notifications
params:
- name: app_id
value: ''
type: path
description: The OneSignal App ID for your app. Available in Keys & IDs.
- name: activity_id
value: ''
type: path
description: Live Activity record ID
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Updates a specified live activity.
- info:
name: create_user
type: http
http:
method: POST
url: https://api.onesignal.com/apps/:app_id/users
params:
- name: app_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: 'Creates a User, optionally Subscriptions owned by the User as well as Aliases.
Aliases provided in the payload will be used to look up an existing User.'
- info:
name: get_user
type: http
http:
method: GET
url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id
params:
- name: app_id
value: ''
type: path
- name: alias_label
value: ''
type: path
- name: alias_id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Returns the User’s properties, Aliases, and Subscriptions.
- info:
name: update_user
type: http
http:
method: PATCH
url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id
params:
- name: app_id
value: ''
type: path
- name: alias_label
value: ''
type: path
- name: alias_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Updates an existing User’s properties.
- info:
name: delete_user
type: http
http:
method: DELETE
url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id
params:
- name: app_id
value: ''
type: path
- name: alias_label
value: ''
type: path
- name: alias_id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Removes the User identified by (:alias_label, :alias_id), and all Subscriptions and Aliases
- info:
name: get_aliases
type: http
http:
method: GET
url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id/identity
params:
- name: app_id
value: ''
type: path
- name: alias_label
value: ''
type: path
- name: alias_id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Lists all Aliases for the User identified by (:alias_label, :alias_id).
- info:
name: create_alias
type: http
http:
method: PATCH
url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id/identity
params:
- name: app_id
value: ''
type: path
- name: alias_label
value: ''
type: path
- name: alias_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Upserts one or more Aliases to an existing User identified by (:alias_label, :alias_id).
- info:
name: delete_alias
type: http
http:
method: DELETE
url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id/identity/:alias_label_to_delete
params:
- name: app_id
value: ''
type: path
- name: alias_label
value: ''
type: path
- name: alias_id
value: ''
type: path
- name: alias_label_to_delete
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Deletes an alias by alias label
- info:
name: create_subscription
type: http
http:
method: POST
url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id/subscriptions
params:
- name: app_id
value: ''
type: path
- name: alias_label
value: ''
type: path
- name: alias_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Creates a new Subscription under the User provided. Useful to add email addresses and SMS numbers to the User.
- info:
name: update_subscription
type: http
http:
method: PATCH
url: https://api.onesignal.com/apps/:app_id/subscriptions/:subscription_id
params:
- name: app_id
value: ''
type: path
- name: subscription_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Updates an existing Subscription’s properties.
- info:
name: delete_subscription
type: http
http:
method: DELETE
url: https://api.onesignal.com/apps/:app_id/subscriptions/:subscription_id
params:
- name: app_id
value: ''
type: path
- name: subscription_id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Deletes the Subscription.
- info:
name: get_aliases_by_subscription
type: http
http:
method: GET
url: https://api.onesignal.com/apps/:app_id/subscriptions/:subscription_id/user/identity
params:
- name: app_id
value: ''
type: path
- name: subscription_id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Lists all Aliases for the User identified by :subscription_id.
- info:
name: create_alias_by_subscription
type: http
http:
method: PATCH
url: https://api.onesignal.com/apps/:app_id/subscriptions/:subscription_id/user/identity
params:
- name: app_id
value: ''
type: path
- name: subscription_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Upserts one or more Aliases for the User identified by :subscription_id.
- info:
name: transfer_subscription
type: http
http:
method: PATCH
url: https://api.onesignal.com/apps/:app_id/subscriptions/:subscription_id/owner
params:
- name: app_id
value: ''
type: path
- name: subscription_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Transfers this Subscription to the User identified by the identity in the payload.
- info:
name: Update subscription by token
type: http
http:
method: PATCH
url: https://api.onesignal.com/apps/:app_id/subscriptions_by_token/:token_type/:token
params:
- name: app_id
value: ''
type: path
description: Your OneSignal App ID in UUID v4 format.
- name: token_type
value: ''
type: path
description: The type of token to use when looking up the subscription. See Subscription Types.
- name: token
value: ''
type: path
description: The value of the token to lookup by (e.g., email address, phone number).
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Update properties on an existing OneSignal subscription using its token.
- info:
name: Unsubscribe with token
type: http
http:
method: POST
url: https://api.onesignal.com/apps/:app_id/notifications/:notification_id/unsubscribe
params:
- name: app_id
value: ''
type: path
description: The OneSignal App ID for your app. Available in Keys & IDs.
- name: notification_id
value: ''
type: path
description: The id of the message found in the creation notification POST response, View Notifications GET response,
or URL within the Message Report.
- name: token
value: ''
type: query
description: The unsubscribe token that is generated via liquid syntax in {{subscription.unsubscribe_token}} when personalizing
an email.
auth:
type: bearer
token: '{{bearerToken}}'
docs: Unsubscribe an email with a token when using your own custom email unsubscribe landing page
- info:
name: Export CSV of Subscriptions
type: http
http:
method: POST
url: https://api.onesignal.com/players/csv_export?app_id=:app_id
params:
- name: app_id
value: ''
type: path
description: The app ID that you want to export devices from
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: 'Generate a compressed CSV export of all of your current user data
This method can be used to generate a compressed CSV export of all of your current user data. It is a much faster alternative
than retrieving this data using the /players API endpoint.
The file will be compressed using GZip.
The file may take several minutes to generate depending on the number of users in your app.
The URL generated will be available for 3 days and includes random v4 uuid as part of the resource name to be unguess'
- info:
name: Export CSV of Events
type: http
http:
method: POST
url: https://api.onesignal.com/notifications/:notification_id/export_events?app_id=:app_id
params:
- name: notification_id
value: ''
type: path
description: The ID of the notification to export events from.
- name: app_id
value: ''
type: query
description: The ID of the app that the notification belongs to.
auth:
type: bearer
token: '{{bearerToken}}'
docs: 'Generate a compressed CSV report of all of the events data for a notification.
This will return a URL immediately upon success but it may take several minutes for the CSV to become available at that
URL depending on the volume of data. Only one export can be in-progress per OneSignal account at any given time.'
- info:
name: View templates
type: http
http:
method: GET
url: https://api.onesignal.com/templates
params:
- name: app_id
value: ''
type: query
description: Your OneSignal App ID in UUID v4 format.
- name: limit
value: ''
type: query
description: Maximum number of templates. Default and max is 50.
- name: offset
value: ''
type: query
description: Pagination offset.
- name: channel
value: ''
type: query
description: Filter by delivery channel.
auth:
type: bearer
token: '{{bearerToken}}'
docs: List templates for an app.
- info:
name: Create template
type: http
http:
method: POST
url: https://api.onesignal.com/templates
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Create reusable message templates for push, email, and SMS channels.
- info:
name: View template
type: http
http:
method: GET
url: https://api.onesignal.com/templates/:template_id
params:
- name: template_id
value: ''
type: path
- name: app_id
value: ''
type: query
auth:
type: bearer
token: '{{bearerToken}}'
docs: Fetch a single template by id.
- info:
name: Update template
type: http
http:
method: PATCH
url: https://api.onesignal.com/templates/:template_id
params:
- name: template_id
value: ''
type: path
- name: app_id
value: ''
type: query
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Update an existing template.
- info:
name: Delete template
type: http
http:
method: DELETE
url: https://api.onesignal.com/templates/:template_id
params:
- name: template_id
value: ''
type: path
- name: app_id
value: ''
type: query
auth:
type: bearer
token: '{{bearerToken}}'
docs: Delete a template by id.
- info:
name: Copy template to another app
type: http
http:
method: POST
url: https://api.onesignal.com/templates/:template_id/copy_to_app
params:
- name: template_id
value: ''
type: path
- name: app_id
value: ''
type: query
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Copy a template to a destination app.
- info:
name: View API keys
type: http
http:
method: GET
url: https://api.onesignal.com/apps/:app_id/auth/tokens
params:
- name: app_id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: View the details of all of your current app API keys (Rich Authentication Token) for a single OneSignal app.
- info:
name: Create API key
type: http
http:
method: POST
url: https://api.onesignal.com/apps/:app_id/auth/tokens
params:
- name: app_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Use this API to create a new App API Key (also called a Rich Authentication Token) for a specific OneSignal app. These
keys are used to authenticate API requests at the app level and offer enhanced security features, including optional IP
allowlisting.
- info:
name: Update API key
type: http
http:
method: PATCH
url: https://api.onesignal.com/apps/:app_id/auth/tokens/:token_id
params:
- name: app_id
value: ''
type: path
- name: token_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: Update a Rich Authentication Token (App API Key) for a OneSignal app.
- info:
name: Delete API key
type: http
http:
method: DELETE
url: https://api.onesignal.com/apps/:app_id/auth/tokens/:token_id
params:
- name: app_id
value: ''
type: path
- name: token_id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Delete a specific Rich Authentication Token (App API Key) for a OneSignal app. Requires your Organization API Key
and the token’s unique ID, not the token value itself.
- info:
name: Rotate API key
type: http
http:
method: POST
url: https://api.onesignal.com/apps/:app_id/auth/tokens/:token_id/rotate
params:
- name: app_id
value: ''
type: path
- name: token_id
value: ''
type: path
auth:
type: bearer
token: '{{bearerToken}}'
docs: Rotate a Rich Authentication Token (App API Key) for a OneSignal app. Rotating a key revokes the current token and
generates a new one under the same configuration—ideal when a token is lost or compromised but you don’t want to recreate
and reconfigure it from scratch.
- info:
name: Create custom events
type: http
http:
method: POST
url: https://api.onesignal.com/apps/:app_id/integrations/custom_events
params:
- name: app_id
value: ''
type: path
description: Your OneSignal App ID in UUID v4 format.
body:
type: json
data: '{}'
auth:
type: bearer
token: '{{bearerToken}}'
docs: The Custom Events API allows you to record user events. Custom events can represent any action users take in your
application, such as completing a purchase, viewing content, or achieving milestones.
bundled: true