Push REST API
Overview
The Push REST API allows you to send immediate and scheduled push notifications to your audience through the Taboola platform. This service enables editorial and marketing teams to deliver timely content notifications across devices, increasing engagement and driving traffic to your content.
The Push API supports two main types of notifications:
- Immediate Push - Real-time notifications for urgent or high-priority content (e.g., breaking news)
 - Scheduled Push - Notifications scheduled for specific times (e.g., daily newsletters, event reminders)
 
Authentication
The API uses OAuth2 for authentication.
The concept is simple:
- Obtain an access token from the Authorization Server.
 - Include the access token in the header of each API request.
 
ImportantYour client_secret is confidential - keep it secret.
Authentication flow
- Request an access token:
 
POST https://authentication.taboola.com/authentication/oauth/token
Content-Type: application/x-www-form-urlencoded
client_id={client_id}&client_secret={client_secret}&grant_type=client_credentials{
  "access_token": "your_access_token_here",
  "token_type": "bearer",
  "expires_in": 3600
}| Param | Type | Modifiers | Description | 
|---|---|---|---|
client_id | String | required | Your client ID as provided by Taboola team in advance | 
client_secret | String | required | Your client secret as provided by Taboola team in advance | 
grant_type | String | required | Must be client_credentials for OAuth2 client credentials flow | 
- Include the access token in the 
Authorizationheader of each subsequent request: 
Authorization: Bearer {access_token}Check authorized applications
(Optional, but recommended if you are unsure which apps/tags you can send to)
Use this endpoint to verify which applications you're authorized to target with push notifications:
GET https://pushcms.taboola.com/epsilon/push/auth-apps
Authorization: Bearer {access_token}
Content-Type: application/json{
  "1234": "Publisher Name",
  "5678": "Another Publisher",
  "9012": "Third Publisher"
}
NoteThe response returns a map of application IDs (keys) to publisher names (values) that you are authorized to target with push notifications.
Field definitions
Modifier Column
- Required - field must be included when creating a new notification
 - Read-only - should never be sent to the server. Appears only when fetching a resource.
 - Optional - field can be omitted
 
Push event fields
| Field | Type | Modifiers and Defaults | Description | 
|---|---|---|---|
title | string | Required | The title of the push notification | 
url | string | Required | The URL that the user is directed to when they tap the notification | 
performer | string | Required | The name of the entity or user that initiated the event | 
target | object | Required | Targeting configuration specifying which apps to send to. See Target configuration below for details. | 
thumbnailUrl | string | Optional | The notification thumbnail image URL | 
icon | string | Optional | A thumbnail image to be displayed in the notification. Can also be sent as iconUrl. | 
itemDescription | string | Optional | The main text or body of the push notification | 
executionTime | number | Optional | Unix timestamp in milliseconds for scheduled notifications. Required for scheduled push. For immediate push, omit this field or use a past/current timestamp. | 
userTimeZone | number | Default: 0 | Timezone flag for scheduled notifications. Can be 0 for UTC (default) or 1 for local timezone. | 
Target configuration
The target object specifies which applications should receive the notification:
{
  "target": {
    "include": {
      "apps": ["1234", "5678"]
    }
  }
}| Field | Type | Description | 
|---|---|---|
target.include.apps | string[] | Array of application IDs that should receive the notification (maximum 200 apps). | 
Application IDsApplication IDs refer to internal Taboola application identifiers. Use the auth-apps endpoint to see which applications you're authorized to send notifications to.
Task fields (read-only)
These fields appear when retrieving task information:
| Field | Type | Description | 
|---|---|---|
taskId | number | Unique identifier for the scheduled task | 
tagId | number | Application ID associated with the task | 
taskType | string | Type of task: immediate or scheduled | 
taskStatus | string | Current status: active, pending, completed, cancelled, failed | 
taskUpdateTime | number | Unix timestamp of last update | 
taskUpdateTimeFormatted | string | Human-readable last update time | 
executionTime | number | Unix timestamp of scheduled execution | 
executionTimeFormatted | string | Human-readable execution time | 
method | string | Internal processing method | 
videoId | string | Associated video ID (if applicable) | 
forcedItemPolicy | string | Content policy override (if applicable) | 
Endpoints and examples
Send immediate push notification
Send a push notification immediately to your target audience.
POST https://pushcms.taboola.com/epsilon/push
Authorization: Bearer {access_token}
Content-Type: application/json{
  "pushEvents": [
    {
      "title": "Breaking: Market Update",
      "thumbnailUrl": "https://example.com/news-thumbnail.jpg",
      "icon": "https://example.com/news-icon.png",
      "url": "https://example.com/breaking-news/market-update",
      "performer": "news_editor",
      "itemDescription": "Stock market reaches new highs today with major indices posting significant gains.",
      "target": {
        "include": {
          "apps": ["1234"]
        }
      }
    }
  ]
}HTTP/1.1 200 OK
Content-Type: application/json
"Task passed validations. Dispatching..."
Response FormatSuccess responses return a JSON primitive string (not a JSON object). The response body is a simple string value enclosed in quotes.
Send scheduled push notification
Schedule a push notification to be sent at a specific time.
POST https://pushcms.taboola.com/epsilon/push/scheduled
Authorization: Bearer {access_token}
Content-Type: application/json{
  "pushEvents": [
    {
      "title": "Daily Newsletter: Tech Updates",
      "thumbnailUrl": "https://example.com/newsletter-thumbnail.jpg",
      "icon": "https://example.com/newsletter-icon.png",
      "url": "https://example.com/newsletter/tech-updates-daily",
      "performer": "content_editor",
      "itemDescription": "Your daily dose of technology news and updates.",
      "executionTime": 1763618800000,
      "target": {
        "include": {
          "apps": ["1234"]
        }
      }
    }
  ]
}HTTP/1.1 200 OK
Content-Type: application/json
"Task passed validations. Dispatching..."
Execution TimeThe
executionTimefield is required for scheduled push notifications and must be a Unix timestamp in milliseconds representing a future time. For immediate push notifications, omit this field or use a past/current timestamp.
Get all tasks
Retrieve all existing push notification tasks for a specific application. Returns all existing tasks under the specified tagId and an optional taskType filter.
GET https://pushcms.taboola.com/epsilon/task?tagId={app_id}&taskType={task_type}
Authorization: Bearer {access_token}
Content-Type: application/json{
  "tagId": 33526,
  "taskId": 13359546,
  "taskType": "scheduled",
  "method": "mmp",
  "taskStatus": "active",
  "userTimeZone": 0,
  "title": "Daily Newsletter: Tech Updates",
  "taskUpdateTime": 1753621627600,
  "taskUpdateTimeFormatted": "2025-07-27T13:10:27.000Z",
  "executionTime": 1763618800000,
  "executionTimeFormatted": "2025-11-20T06:46:40.000Z",
  "url": "https://example.com/newsletter/tech-updates-daily",
  "thumbnailUrl": "https://images.taboola.com/image/fetch/f_jpg%2Cq_auto%2Cw_480%2Cc_fill%2Cg_faces%2Cauto%2Ce_sharpen/https%3A%2F%2Fexample.com%2Fnewsletter-thumbnail.jpg",
  "iconUrl": "https://images.taboola.com/image/fetch/f_jpg%2Cq_auto%2Cw_192%2Cc_fill%2Cg_faces%2Cauto%2Ce_sharpen/https%3A%2F%2Fexample.com%2Fnewsletter-icon.png",
  "videoId": null,
  "forcedItemPolicy": null,
  "performer": "content_editor"
}Query params
| Parameter | Type | Required | Description | 
|---|---|---|---|
tagId | string | Yes | Application ID to retrieve tasks for | 
taskType | string | No | Filter by task type: immediate or scheduled | 
Update scheduled task
Update a future scheduled push notification. Note that already sent notifications cannot be edited.
PATCH https://pushcms.taboola.com/epsilon/task/{taskId}
Authorization: Bearer {access_token}
Content-Type: application/json{
  "title": "Updated Newsletter: Tech & Business Updates",
  "thumbnailUrl": "https://example.com/updated-thumbnail.jpg",
  "icon": "https://example.com/updated-icon.png",
  "userTimeZone": 0,
  "itemDescription": "Your updated daily dose of technology and business news.",
  "executionTime": 1763625600000,
  "performer": "senior_editor"
}HTTP/1.1 200 OK
Content-Type: application/json
"Task updated successfully"Delete scheduled task
Cancel a future scheduled push notification. Note that already sent notifications cannot be cancelled.
DELETE https://pushcms.taboola.com/epsilon/task/{taskId}
Authorization: Bearer {access_token}
Content-Type: application/jsonHTTP/1.1 200 OK
Content-Type: application/json
"Task deleted successfully"Error responses
400 Bad Request
Returned when validation fails or request data is malformed.
{
  "httpStatus": 400,
  "message": "title cannot be empty"
}Common validation messages:
"title cannot be empty"- Missing required title field"url cannot be empty"- Missing required URL field"performer cannot be empty"- Missing required performer field"thumbnailUrl must be a valid URL"- Invalid thumbnail URL format"iconUrl must be an HTTP/HTTPS URL"- Invalid icon URL format"title is too long (max 140)"- Title exceeds maximum length"Malformed JSON or type mismatch"- Invalid JSON in request body
401 Unauthorized
Returned when authentication fails or access token is invalid/expired.
{
  "httpStatus": 401,
  "message": "Invalid or expired access token"
}403 Forbidden
Returned when authenticated but not authorized to access the requested resource.
{
  "httpStatus": 403,
  "message": "Not authorized to send notifications for specified application"
}Guidelines and best practices
ImportantFor the latest, up-to-date guidelines, reach out to your Taboola Account Manager.
Image guidelines
- HTTPS: Image URLs should use HTTPS protocol.
 - Thumbnail images: Recommended size 300x200 pixels or larger, automatically processed by Taboola's image service.
 - Icon images: Recommended size 192x192 pixels (square format), automatically processed by Taboola's image service.
 - File size: Optimize images for fast loading (< 200KB recommended).
 - Recommended formats: JPEG, PNG, WebP.
 - Image optimization: Images are automatically optimized through Taboola's CDN (
images.taboola.com). Original URLs you submit will be transformed and served through this CDN with optimized parameters (e.g.,w_480for thumbnails,w_192for icons). - Ensure images are accessible and display correctly across different devices and screen sizes.
 
Content guidelines
- Title: Recommended length: 50-80 characters for optimal display across devices.
 - Description: Recommended length: 100-150 characters.
 - URLs: Ensure all URLs are valid, accessible, and lead to relevant mobile-friendly content.
 - Content policy: All notifications must comply with Taboola's content policies.
 
Advanced options
Update the service worker path
Update the service worker registration path for your application. This is typically configured once during initial setup.
Use this endpoint when:
- Your service worker file is not at the default location
 - You need to use a custom path due to existing service workers
 - Your site is in a subdirectory
 - You're migrating your service worker to a new location
 
Request fields:
| Field | Type | Required | Description | 
|---|---|---|---|
containerId | string | Yes | Application ID (same as app ID / tag ID used in push notifications) | 
serviceWorkerPath | string | Yes | Path to service worker file, relative to your domain (e.g., /sw.js or /path/to/worker.js) | 
performer | string | Yes | Identifier of who performed the action (email address or username) | 
Service Worker PathThe service worker path must be relative to your domain root. For example, if your site is
example.comand you specify/sw.js, the service worker must be accessible athttps://example.com/sw.js.
Example request
PATCH https://pushcms.taboola.com/epsilon/container/sw-path
Authorization: Bearer {access_token}
Content-Type: application/json{
  "containerId": "1234",
  "serviceWorkerPath": "/custom/sw.js",
  "performer": "[email protected]"
}HTTP/1.1 204 No Content
Success ResponseA
204 No Contentresponse indicates the service worker path was updated successfully. This response has no body content.
Possible responses:
| Status Code | Description | 
|---|---|
204 | Service worker path updated successfully | 
400 | Invalid request - validation or authorization failed | 
404 | Invalid request - Container ID not valid | 
500 | Internal server error | 
Updated 1 day ago
