Notifications API
Poll your integration's notification feed to find out when new quote requests arrive.
The Notification Model
The Notification object represents an in-app notification delivered to your API integration. Use notifications to find out when new quote requests arrive without repeatedly listing all quotes. Below is an example of a Notification object with all possible fields.
json{ "id": "jd7c2v9k4m8p1q3r5s6t7u8v", "read": false, "createdAt": 1751394600000, "type": "QuoteCreated", "title": "New Quote", "message": "John Doe requested a quote for iPhone 12 (Screen Repair) at Main St Repair.", "entityId": "0197a1b2-3c4d-7e5f-8a9b-0c1d2e3f4a5b" }
Notification Object Properties
Note: Your integration's notification feed starts accruing from the moment your API key is generated. Each store has a single API machine user, so every integration using your store's API key shares the same feed and the same read state. Notifications have their own read state: marking a notification as read through the API does not affect what store employees see in the app.
The feed receives organization-wide notifications only. Admin-only notifications, such as invoice paid and ACH status updates, are never delivered to the API.
Notifications are deleted 30 days after they are created, whether or not they were read, so poll at least that often.
Notification Resources
Get notifications
This endpoint returns your integration's notifications, newest first.
HTTP Request
httpGET https://www.myrepairapp.com/api/v2/notifications?unreadOnly={boolean}&limit={number}&cursor={number}
Parameters
All parameters are optional.
The unreadOnly parameter, when set to true, returns only unread notifications. A typical polling flow is to request unreadOnly=true, process the results (e.g., fetch each QuoteCreated notification's quote by its entityId), and then mark the processed notifications as read.
The limit parameter sets the maximum number of notifications returned and defaults to 20 (maximum 100).
The cursor parameter is used for pagination. Pass the nextCursor value from a previous response to fetch the next page. When nextCursor is null, there are no more results. A non-numeric cursor returns a 400 response.
Response
If successful, the response will include a list of notifications and a pagination cursor.
json{ "data": [ { "id": "jd7c2v9k4m8p1q3r5s6t7u8v", "read": false, "createdAt": 1751394600000, "type": "QuoteCreated", "title": "New Quote", "message": "John Doe requested a quote for iPhone 12 (Screen Repair) at Main St Repair.", "entityId": "0197a1b2-3c4d-7e5f-8a9b-0c1d2e3f4a5b" } ], "nextCursor": 1751394600000 }
Mark notifications as read
This endpoint marks notifications as read. Only notifications belonging to your integration can be marked as read: IDs that belong to someone else are ignored, and malformed IDs return a 400 response.
HTTP Request
httpPOST https://www.myrepairapp.com/api/v2/notifications/mark-read
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
ids | string[] |
Response
If successful, the response confirms the request was applied. Ignored IDs are not reported, so the response looks the same whether every ID or only some of them belonged to your integration.
json{ "success": true }
If one or more IDs are malformed, the endpoint returns a 400 response and no notifications are marked:
json{ "message": "One or more notification IDs are invalid." }