How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

OneSignal REST API

The complete OneSignal REST API as OneSignal publishes it — OpenAPI 3.1.0, info.version 11.6, 39 paths and 59 operations covering messaging, users, subscriptions, segments, templates, custom events, inbox, exports, apps, API keys and audit logs. Harvested verbatim from https://documentation.onesignal.com/openapi.json on 2026-08-13; servers[] names https://api.onesignal.com.

OneSignal REST API is one of 6 APIs that OneSignal publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Notification, User, Subscription, Segments, and Templates. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, an API reference, and authentication docs.

This API exposes 55 operations across 39 paths, and defines 7 schemas. It is described by OpenAPI 3.1.0, at version 11.6.

Requests are made against a single base URL, https://api.onesignal.com.

55 operations 39 paths 7 schemas 7 DELETE17 GET11 PATCH19 POST1 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.1.0
API Version
11.6
Base URL
https://api.onesignal.com
Resource Areas
1

Paths & Operations 55

Across 39 paths, the API surfaces 55 operations — 7 DELETE, 17 GET, 11 PATCH, 19 POST, 1 PUT. Each is listed below with its method, path, parameters, and response codes.

Operations 55
GET
/apps
View apps
view-apps 1 param → 200400403429503
POST
/apps
Create an app
create-an-app 2 params body → 200403404429503
GET
/apps/{app_id}
View an app
view-an-app 4 params → 200403404429503
PUT
/apps/{app_id}
Update an app
update-an-app 3 params body → 200403404429503
POST
/players/csv_export
Export subscriptions CSV
csv-export 2 params body → 200400429503
POST
/notifications/{message_id}/history
Message history
message-history 2 params body → 202400429503
POST
/apps/{app_id}/segments
Create segment
create-segments 3 params body → 201400403422429503
GET
/apps/{app_id}/segments
View segments
view-segments 4 params → 200400429503
GET
/apps/{app_id}/segments/{segment_id}
View segment
view-segment 4 params → 200400404429503
PATCH
/apps/{app_id}/segments/{segment_id}
Update segment
update-segment 4 params body → 200400403404429503
DELETE
/apps/{app_id}/segments/{segment_id}
Delete segment
delete-segments 3 params → 200400404429503
GET
/apps/{app_id}/outcomes?outcome_names={outcome_names}&outcome_time_range={outcome_time_range}&outcome_platforms={outcome_platforms}&outcome_attribution={outcome_attribution}
View outcomes
view-outcomes 6 params → 200400403429503
PATCH
/apps/{app_id}/subscriptions/{subscription_id}
Update subscription
update-subscription 2 params body → 200400429503
DELETE
/apps/{app_id}/subscriptions/{subscription_id}
Delete subscription
delete-subscription 2 params → 202400403404429503
PATCH
/apps/{app_id}/subscriptions_by_token/{token_type}/{token}
Update subscription By Token
update-subscription-by-token 4 params body → 202400401404429503
POST
/apps/{app_id}/users/by/{alias_label}/{alias_id}/subscriptions
Create Subscription by alias
create-subscription 4 params body → 200202400403404429503
PATCH
/apps/{app_id}/users/by/{alias_label}/{alias_id}
Update user
update-user 5 params body → 202400401409429503
GET
/apps/{app_id}/users/by/{alias_label}/{alias_id}
View user
view-user 4 params → 200400401404429503
DELETE
/apps/{app_id}/users/by/{alias_label}/{alias_id}
Delete user
delete-user 4 params → 202400401404409429503
POST
/apps/{app_id}/users
Create user
create-user 1 param body → 200202400409429503
GET
/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity
View user identity
fetch-aliases 4 params → 200400404429503
PATCH
/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity
Create or update alias
create-alias 4 params body → 200400404409429503
PATCH
/apps/{app_id}/subscriptions/{subscription_id}/owner
Transfer subscription
transfer-subscription 2 params body → 200400403404429503
GET
/apps/{app_id}/subscriptions/{subscription_id}/user/identity
View user identity (by subscription)
fetch-identity-by-subscription 2 params → 200400404429503
PATCH
/apps/{app_id}/subscriptions/{subscription_id}/user/identity
Create alias (by subscription)
create-alias-by-subscription 2 params body → 200400409429503
DELETE
/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity/{alias_label_to_delete}
Delete alias
delete-alias 5 params → 200400404429503
POST
/notifications/{message_id}/export_events
Export audience activity CSV
export-csv-of-events 3 params → 200400401404429503
GET
/templates/{template_id}?app_id={app_id}
View template
view-template 4 params → 200400404429503
DELETE
/templates/{template_id}?app_id={app_id}
Delete template
delete-template 3 params → 200400404429503
PATCH
/templates/{template_id}?app_id={app_id}
Update template
update-template 3 params body → 200400429503
GET
/templates?app_id={app_id}&limit={limit}&offset={offset}
View templates
view-templates 6 params → 200400429503
POST
/templates
Create template
create-template 2 params body → 200400422429503
POST
/apps/{app_id}/notifications/{notification_id}/unsubscribe?token={token}
Unsubscribe email (with token)
unsubscribe-with-token 3 params → 202400403404429503
POST
/notifications?c=email
Email
email 1 param body → 200400403429503
POST
/notifications?c=push
Push notification
push-notification 1 param body → 200400403429503
POST
/notifications?c=sms
SMS
sms 1 param body → 200400403429503
POST
/apps/{app_id}/live_activities/{activity_id}/notifications
Update Live Activity
update-live-activity-api 4 params body → 201400404429503
GET
/notifications?app_id={app_id}&limit={limit}&offset={offset}&kind={kind}&template_id={template_id}&time_offset={time_offset}
View messages
view-messages 7 params → 200429503
GET
/notifications/{message_id}?app_id={app_id}
View message
view-message 7 params → 200429503
DELETE
/notifications/{message_id}?app_id={app_id}
Cancel message
cancel-message 3 params → 200400404429503
POST
/apps/{app_id}/activities/activity/{activity_type}
Start Live Activity
start-live-activity 3 params body → 201400429503
POST
/templates/{template_id}/copy_to_app?app_id={app_id}
Copy template to another app
copy-template-to-another-app 3 params body → 200400404429503
POST
/apps/{app_id}/inbox
Create inbox broadcast message
create-inbox-broadcast-message 2 params body → 200429503
GET
/apps/{app_id}/inbox?last_broadcast_id={broadcast_id}&limit={number}
View broadcasts
view-broadcasts 4 params → 200400403429503
GET
/apps/{app_id}/users/by/{alias_label}/{alias_id}/inbox?last_message_id={message_id}
View user broadcasts
view-user-inbox-messages 5 params → 200400404429503
PATCH
/apps/{app_id}/users/by/{alias_label}/{alias_id}/inbox?last_message_id={message_id}
Bulk update or delete message state
bulk-update-or-delete-message-state 5 params body → 204400403429503
GET
/apps/{app_id}/users/by/{alias_label}/{alias_id}/inbox/unread_count
View user unread message count
view-user-unread-message-count 4 params → 200400404429503
PATCH
/apps/{app_id}/users/by/{alias_label}/{alias_id}/inbox/{message_id}
Update message state
update-message-state 5 params body → 204400403429503
GET
/apps/{app_id}/auth/tokens
View API keys
view-api-keys 3 params → 200400403404429503
POST
/apps/{app_id}/auth/tokens
Create API key
create-api-key 3 params body → 200400403404429503
DELETE
/apps/{app_id}/auth/tokens/{token_id}
Delete API key
delete-api-key 4 params → 200400403404429503
PATCH
/apps/{app_id}/auth/tokens/{token_id}
Update API key
update-api-key 4 params body → 200400403404429503
POST
/apps/{app_id}/auth/tokens/{token_id}/rotate
Rotate API key
rotate-api-key 4 params → 200400403404429503
POST
/apps/{app_id}/custom_events
Create Custom Events
create-custom-events 2 params body → 202400401429503
GET
/organizations/{organization_id}/audit_logs
List audit logs
list-audit-logs 13 params → 200400403429503

Schemas 7

The contract defines 7 schemas that model the data the API accepts and returns. The most detailed are TemplateResourceContent (33 properties), ApiKeyToken (7 properties), TemplateResource (6 properties), StructuredErrorItem (3 properties). Each schema is shown below with its type and property counts.

BasicErrorResponse
object
3 properties
StructuredErrorItem
object
3 properties 2 required
StructuredErrorResponse
object
1 property
ApiKeyToken
object
An API Key Token record (Rich Authentication Token). Different operations return different subsets of these fields: - GET tokens lists every field except forma…
7 properties
TemplateResourceContent
object
The content block of a template. Every field is nullable: a field is populated only when the corresponding channel feature is enabled for the template. For exa…
33 properties
TemplateResource
object
A template record. The content block is a TemplateResourceContent whose populated fields depend on the template's channel(s).
6 properties 1 required
CreateUserConflictResponse
object
Returned at HTTP 409 by POST /apps/{appid}/users when the request's claimed identity (aliases or externalid) collides with an existing user. The structured met…
1 property

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

onesignal-api-openapi.json Raw ↑

Other APIs OneSignal publishes across the network.

OneSignal Apps API
OneSignal Notifications API
OneSignal Players API
OneSignal Templates API
OneSignal MCP Server
Where this information came from

This is an independent, third-party profile of OneSignal REST API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.