Developers · API v1.0.0
Version Support and Versioning Policy
Current version
| Current API version | 1.0.0 |
| Base path | /api/v1 |
| Oldest supported version | 1.0.0 |
| Checking the version | GET /api/v1/version and the X-NotiPilot-API-Version header on every response |
API version status
| Version | Base path | Status | End of support |
|---|---|---|---|
| 1.x | /api/v1 |
✅ Active | Not yet determined (at least 12 months after v2 is released) |
| Unversioned (legacy) | /api/ |
⚠️ Kept for compatibility; behaves exactly like v1 | Will be announced when v2 is released |
Always use /api/v1 for new integrations.
Versioning rules
The NotiPilot API follows Semantic Versioning (MAJOR.MINOR.PATCH):
| Change type | Example | Version | Does the mobile app need changes? |
|---|---|---|---|
| PATCH | Bug fixes, performance improvements | 1.0.0 → 1.0.1 |
No |
| MINOR | New optional field, new endpoint, new field added to a response | 1.0.x → 1.1.0 |
No |
| MAJOR | Removing/renaming a field, adding a required field, behavior change | 1.x → 2.0.0 |
Yes — new base path (/api/v2) |
Backward compatibility commitment (within the same MAJOR version):
- Existing request fields will not be removed, renamed, or made required.
- New fields may be added to responses; clients must ignore unknown fields.
- New
errorcodes may be added; clients should handle unknown codes based on the HTTP status code. - When a new MAJOR version is released, the previous MAJOR version remains supported for at least 12 months. Deprecations are announced via the dashboard and email at least 6 months in advance.
Platform support matrix
Because the NotiPilot API uses standard HTTPS + JSON, it works with any client that can make HTTP requests. The table below shows the versions on which the push notification flow described in the guides is tested and supported.
| Platform | Minimum | Recommended | Push token method | Guide |
|---|---|---|---|---|
| Expo | SDK 50 | Latest SDK | expo-notifications → Expo Push Token |
expo.md |
| React Native (bare) | RN 0.74 | Latest RN | expo-notifications (recommended) or Firebase Messaging + token conversion |
react-native.md |
| Flutter | Flutter 3.22, Dart 3.4 | Latest stable | firebase_messaging → Expo Push Token conversion |
flutter.md |
| Ionic (Capacitor) | Capacitor 6, Ionic 7 | Latest | @capacitor/push-notifications → Expo Push Token conversion |
ionic.md |
| Firebase (FCM) | Android BoM 33, iOS SDK 10 | Latest | FCM (Android) / APNs (iOS) token → Expo Push Token conversion | firebase.md |
| Shopify store apps | Storefront API 2025-01 |
Latest API version | Depends on the app's tech stack | shopify.md |
| Android (Java) | Android 6.0 (API 23), Java 11 | targetSdk 35+, Java 17 |
FCM → Expo Push Token conversion | android.md |
| Kotlin | Android 6.0 (API 23), Kotlin 1.9 | targetSdk 35+, Kotlin 2.x |
FCM → Expo Push Token conversion | kotlin.md |
| iOS (Objective-C) | iOS 13.0, Xcode 15 | iOS 15+ | APNs → Expo Push Token conversion | ios.md |
| Swift | iOS 13.0, Swift 5.9, Xcode 15 | iOS 15+, Swift 6 | APNs → Expo Push Token conversion | swift.md |
| Web / PWA | – | – | The API accepts platform: "web", but web push delivery is not supported in 1.0.0 |
– |
Platform-specific notes
- Android 13+ (API 33): The
POST_NOTIFICATIONSruntime permission is required to display notifications. - Android 8.0+ (API 26): Notifications require a channel. NotiPilot uses the
defaultchannel ID. - iOS: Push notifications require a paid Apple Developer account, the Push Notifications capability, and a physical device. Debug builds use the APNs sandbox; TestFlight/App Store builds use the production environment.
- Expo Go: Remote push notifications are not supported in Expo Go; use a development build.
Delivery provider support (API 1.0.0)
provider |
Registration | Visible in segments | Notification delivery |
|---|---|---|---|
expo |
✅ | ✅ | ✅ Via the Expo Push Service |
fcm |
✅ | ✅ | ❌ On the roadmap |
apns |
✅ | ✅ | ❌ On the roadmap |
Native apps can get full delivery support today by converting their FCM/APNs token into an Expo Push Token, as described in the guides.
Changelog
1.0.0 — September 2026
- First stable release.
- Added the
/api/v1base path and theGET /api/v1/versionendpoint. Unversioned/api/*paths are kept for compatibility. - Standard error format:
success,error(machine-readable code),message,errors(per field). app_idmust now be registered in NotiPilot; otherwise the API returns404 unknown_app.- Field validation: type and length limits, attributes/tags limits.
attributesare now updated by merging; keys that aren't sent are not deleted. Sendnullto delete a key.- Rate limit of 300 requests per minute per IP (
429+Retry-After). X-NotiPilot-API-Versionheader on every response.