Notification library
7 endpointsNotifications as reusable content, placed on any number of campaigns. With campaign placements on for the workspace only: these endpoints 404 otherwise.
List library notifications#
/notificationsQuery parameters
An opaque value from a previous page's meta.next_cursor. Omit for the first page.
How many to return, up to 100.
20Only notifications updated at or after this ISO 8601 timestamp.
true lists the archived notifications instead of the others.
falseResponses
200
{
"data": [
{
"id": "0192f0a4-6b1e-7c3a-9d2f-5e8b1a4d5001",
"name": "Morning flat white offer",
"type": "message",
"headline": "Coffee's on us",
"body": "Show this at the counter for a free flat white before 11am.",
"media": null,
"cta_label": "Get the voucher",
"cta_url": "https://example.com/offers/flat-white",
"questions": [],
"created_at": "2026-09-20T09:12:00+00:00",
"updated_at": "2026-09-20T09:12:00+00:00",
"archived_at": null
}
],
"meta": {
"next_cursor": null
}
}Response fields
Archived: it keeps running where it is placed but can't be placed again until unarchived.
401The token is missing, unknown, revoked or expired.
missing_tokeninvalid_tokentoken_revokedtoken_expired
missing_tokenMissing bearer token.
invalid_tokenUnknown API token. Check it was copied in full, and that it is for this environment.
token_revokedThe token "Zapier" was revoked on 2026-10-06 at 18:27 UTC. Issue a new one from Configuration › Platform API.
token_expiredThis token has expired. Issue a new one from Configuration › Platform API.
{
"error": {
"code": "missing_token",
"message": "Missing bearer token."
}
}403The token or workspace can't do this.
missing_abilityplatform_api_not_enabledwrong_environmentworkspace_pausedsandbox_unavailable
missing_abilityThis token doesn't have the campaigns:write scope.
platform_api_not_enabledThe full Platform API isn't enabled for this workspace yet. Contact customer services to turn it on.
wrong_environmentThis is a Sandbox token: use the Sandbox API address. https://api.sandbox.bubbl.tech/platform/v1
workspace_pausedThis workspace is scheduled for deletion; its API access is paused.
sandbox_unavailableThe Sandbox isn't available for this workspace.
{
"error": {
"code": "missing_ability",
"message": "This token doesn't have the campaigns:write scope."
}
}422Something in the request isn't valid. fields says what, with the dashboard's wording.
invalid_parameterinvalid_cursor
fields says what, with the dashboard's wording.invalid_parameterupdated_since must be a valid date.
invalid_cursorThat cursor is invalid or has expired.
{
"error": {
"code": "invalid_parameter",
"message": "updated_since must be a valid date.",
"fields": {
"updated_since": [
"Must be a valid date."
]
}
}
}429Too many requests. Wait for the number of seconds in Retry-After.
rate_limitedtoo_many_failed_attempts
Retry-After.rate_limitedToo many requests. Slow down and try again shortly.
too_many_failed_attemptsToo many failed attempts. Try again shortly.
{
"error": {
"code": "rate_limited",
"message": "Too many requests. Slow down and try again shortly."
}
}curl 'https://api.bubbl.tech/platform/v1/notifications?limit=20' \
-H 'Authorization: Bearer bubbl_YOUR_TOKEN' \
-H 'Accept: application/json'const response = await fetch('https://api.bubbl.tech/platform/v1/notifications?limit=20', {
method: 'GET',
headers: {
Authorization: 'Bearer bubbl_YOUR_TOKEN',
Accept: 'application/json',
},
});
const data = await response.json();import requests
response = requests.request(
'GET',
'https://api.bubbl.tech/platform/v1/notifications?limit=20',
headers={
'Authorization': 'Bearer bubbl_YOUR_TOKEN',
'Accept': 'application/json',
},
)
response.raise_for_status()
data = response.json()<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.bubbl.tech/platform/v1/notifications?limit=20', [
'headers' => [
'Authorization' => 'Bearer bubbl_YOUR_TOKEN',
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);Create a library notification#
/notificationsIts content alone, with the same rules as adding one to a campaign; place it on campaigns with its notification_id. Counts towards the plan's notification limit.
Headers
A unique value (e.g. a UUID) for this change. A retry with the same key within 24 hours gets the first response back, with Idempotent-Replayed: true, instead of making the change again.
Request body
application/jsonStoreNotificationRequestrequiredmessage, surveyOPEN_ENDED, SINGLE_CHOICE, MULTIPLE_CHOICE, RATING, BOOLEAN, NUMBER, SLIDERResponses
201
{
"data": {
"id": "0192f0a4-6b1e-7c3a-9d2f-5e8b1a4d5001",
"name": "Morning flat white offer",
"type": "message",
"headline": "Coffee's on us",
"body": "Show this at the counter for a free flat white before 11am.",
"media": null,
"cta_label": "Get the voucher",
"cta_url": "https://example.com/offers/flat-white",
"questions": [],
"created_at": "2026-09-20T09:12:00+00:00",
"updated_at": "2026-09-20T09:12:00+00:00",
"archived_at": null
}
}Response fields
Archived: it keeps running where it is placed but can't be placed again until unarchived.
401The token is missing, unknown, revoked or expired.
missing_tokeninvalid_tokentoken_revokedtoken_expired
missing_tokenMissing bearer token.
invalid_tokenUnknown API token. Check it was copied in full, and that it is for this environment.
token_revokedThe token "Zapier" was revoked on 2026-10-06 at 18:27 UTC. Issue a new one from Configuration › Platform API.
token_expiredThis token has expired. Issue a new one from Configuration › Platform API.
{
"error": {
"code": "missing_token",
"message": "Missing bearer token."
}
}403The token or workspace can't do this.
missing_abilityplatform_api_not_enabledwrong_environmentworkspace_pausedsandbox_unavailablelimit_exceeded
missing_abilityThis token doesn't have the campaigns:write scope.
platform_api_not_enabledThe full Platform API isn't enabled for this workspace yet. Contact customer services to turn it on.
wrong_environmentThis is a Sandbox token: use the Sandbox API address. https://api.sandbox.bubbl.tech/platform/v1
workspace_pausedThis workspace is scheduled for deletion; its API access is paused.
sandbox_unavailableThe Sandbox isn't available for this workspace.
limit_exceededYou've reached the limit for max_campaigns.
{
"error": {
"code": "missing_ability",
"message": "This token doesn't have the campaigns:write scope."
}
}409A request with the same Idempotency-Key is still running (retry after Retry-After seconds), or the change conflicts with something that depends on it.
request_in_progress
Idempotency-Key is still running (retry after Retry-After seconds), or the change conflicts with something that depends on it.request_in_progressThis request is still being handled. Try again shortly.
{
"error": {
"code": "request_in_progress",
"message": "This request is still being handled. Try again shortly."
}
}422Something in the request isn't valid. fields says what, with the dashboard's wording.
validation_failed
fields says what, with the dashboard's wording.validation_failedThe given data was invalid.
{
"error": {
"code": "validation_failed",
"message": "The given data was invalid.",
"fields": {
"name": [
"The name field is required."
]
}
}
}429Too many requests. Wait for the number of seconds in Retry-After.
rate_limitedtoo_many_failed_attempts
Retry-After.rate_limitedToo many requests. Slow down and try again shortly.
too_many_failed_attemptsToo many failed attempts. Try again shortly.
{
"error": {
"code": "rate_limited",
"message": "Too many requests. Slow down and try again shortly."
}
}curl -X POST 'https://api.bubbl.tech/platform/v1/notifications' \
-H 'Authorization: Bearer bubbl_YOUR_TOKEN' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data '{
"name": "Morning flat white offer",
"type": "message",
"headline": "Coffee'\''s on us",
"body": "Show this at the counter for a free flat white before 11am.",
"cta_label": "Get the voucher",
"cta_url": "https://example.com/offers/flat-white"
}'const response = await fetch('https://api.bubbl.tech/platform/v1/notifications', {
method: 'POST',
headers: {
Authorization: 'Bearer bubbl_YOUR_TOKEN',
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Morning flat white offer',
type: 'message',
headline: 'Coffee\'s on us',
body: 'Show this at the counter for a free flat white before 11am.',
cta_label: 'Get the voucher',
cta_url: 'https://example.com/offers/flat-white',
}),
});
const data = await response.json();import requests
response = requests.request(
'POST',
'https://api.bubbl.tech/platform/v1/notifications',
headers={
'Authorization': 'Bearer bubbl_YOUR_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
json={
'name': 'Morning flat white offer',
'type': 'message',
'headline': 'Coffee\'s on us',
'body': 'Show this at the counter for a free flat white before 11am.',
'cta_label': 'Get the voucher',
'cta_url': 'https://example.com/offers/flat-white',
},
)
response.raise_for_status()
data = response.json()<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.bubbl.tech/platform/v1/notifications', [
'headers' => [
'Authorization' => 'Bearer bubbl_YOUR_TOKEN',
'Accept' => 'application/json',
'Content-Type' => 'application/json',
],
'json' => [
'name' => 'Morning flat white offer',
'type' => 'message',
'headline' => 'Coffee\'s on us',
'body' => 'Show this at the counter for a free flat white before 11am.',
'cta_label' => 'Get the voucher',
'cta_url' => 'https://example.com/offers/flat-white',
],
]);
$data = json_decode((string) $response->getBody(), true);Get a library notification#
/notifications/{notification}Path parameters
The notification ID
Responses
200
{
"data": {
"id": "0192f0a4-6b1e-7c3a-9d2f-5e8b1a4d5001",
"name": "Morning flat white offer",
"type": "message",
"headline": "Coffee's on us",
"body": "Show this at the counter for a free flat white before 11am.",
"media": null,
"cta_label": "Get the voucher",
"cta_url": "https://example.com/offers/flat-white",
"questions": [],
"created_at": "2026-09-20T09:12:00+00:00",
"updated_at": "2026-09-20T09:12:00+00:00",
"archived_at": null
}
}Response fields
Archived: it keeps running where it is placed but can't be placed again until unarchived.
401The token is missing, unknown, revoked or expired.
missing_tokeninvalid_tokentoken_revokedtoken_expired
missing_tokenMissing bearer token.
invalid_tokenUnknown API token. Check it was copied in full, and that it is for this environment.
token_revokedThe token "Zapier" was revoked on 2026-10-06 at 18:27 UTC. Issue a new one from Configuration › Platform API.
token_expiredThis token has expired. Issue a new one from Configuration › Platform API.
{
"error": {
"code": "missing_token",
"message": "Missing bearer token."
}
}403The token or workspace can't do this.
missing_abilityplatform_api_not_enabledwrong_environmentworkspace_pausedsandbox_unavailable
missing_abilityThis token doesn't have the campaigns:write scope.
platform_api_not_enabledThe full Platform API isn't enabled for this workspace yet. Contact customer services to turn it on.
wrong_environmentThis is a Sandbox token: use the Sandbox API address. https://api.sandbox.bubbl.tech/platform/v1
workspace_pausedThis workspace is scheduled for deletion; its API access is paused.
sandbox_unavailableThe Sandbox isn't available for this workspace.
{
"error": {
"code": "missing_ability",
"message": "This token doesn't have the campaigns:write scope."
}
}404Nothing with that ID in this workspace.
not_found
not_foundNo such resource in this workspace.
{
"error": {
"code": "not_found",
"message": "No such resource in this workspace."
}
}429Too many requests. Wait for the number of seconds in Retry-After.
rate_limitedtoo_many_failed_attempts
Retry-After.rate_limitedToo many requests. Slow down and try again shortly.
too_many_failed_attemptsToo many failed attempts. Try again shortly.
{
"error": {
"code": "rate_limited",
"message": "Too many requests. Slow down and try again shortly."
}
}curl 'https://api.bubbl.tech/platform/v1/notifications/{notification}' \
-H 'Authorization: Bearer bubbl_YOUR_TOKEN' \
-H 'Accept: application/json'const response = await fetch('https://api.bubbl.tech/platform/v1/notifications/{notification}', {
method: 'GET',
headers: {
Authorization: 'Bearer bubbl_YOUR_TOKEN',
Accept: 'application/json',
},
});
const data = await response.json();import requests
response = requests.request(
'GET',
'https://api.bubbl.tech/platform/v1/notifications/{notification}',
headers={
'Authorization': 'Bearer bubbl_YOUR_TOKEN',
'Accept': 'application/json',
},
)
response.raise_for_status()
data = response.json()<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.bubbl.tech/platform/v1/notifications/{notification}', [
'headers' => [
'Authorization' => 'Bearer bubbl_YOUR_TOKEN',
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);Update a library notification#
/notifications/{notification}The whole content is resubmitted. It changes on every campaign the notification is placed on.
Path parameters
The notification ID
Headers
A unique value (e.g. a UUID) for this change. A retry with the same key within 24 hours gets the first response back, with Idempotent-Replayed: true, instead of making the change again.
Request body
application/jsonUpdateNotificationRequestrequiredmessage, surveyOPEN_ENDED, SINGLE_CHOICE, MULTIPLE_CHOICE, RATING, BOOLEAN, NUMBER, SLIDERResponses
200
{
"data": {
"id": "0192f0a4-6b1e-7c3a-9d2f-5e8b1a4d5001",
"name": "Morning flat white offer",
"type": "message",
"headline": "Two coffees for one",
"body": "Show this at the counter for a free flat white before 11am.",
"media": null,
"cta_label": "Get the voucher",
"cta_url": "https://example.com/offers/flat-white",
"questions": [],
"created_at": "2026-09-20T09:12:00+00:00",
"updated_at": "2026-09-20T09:12:00+00:00",
"archived_at": null
}
}Response fields
Archived: it keeps running where it is placed but can't be placed again until unarchived.
401The token is missing, unknown, revoked or expired.
missing_tokeninvalid_tokentoken_revokedtoken_expired
missing_tokenMissing bearer token.
invalid_tokenUnknown API token. Check it was copied in full, and that it is for this environment.
token_revokedThe token "Zapier" was revoked on 2026-10-06 at 18:27 UTC. Issue a new one from Configuration › Platform API.
token_expiredThis token has expired. Issue a new one from Configuration › Platform API.
{
"error": {
"code": "missing_token",
"message": "Missing bearer token."
}
}403The token or workspace can't do this.
missing_abilityplatform_api_not_enabledwrong_environmentworkspace_pausedsandbox_unavailable
missing_abilityThis token doesn't have the campaigns:write scope.
platform_api_not_enabledThe full Platform API isn't enabled for this workspace yet. Contact customer services to turn it on.
wrong_environmentThis is a Sandbox token: use the Sandbox API address. https://api.sandbox.bubbl.tech/platform/v1
workspace_pausedThis workspace is scheduled for deletion; its API access is paused.
sandbox_unavailableThe Sandbox isn't available for this workspace.
{
"error": {
"code": "missing_ability",
"message": "This token doesn't have the campaigns:write scope."
}
}404Nothing with that ID in this workspace.
not_found
not_foundNo such resource in this workspace.
{
"error": {
"code": "not_found",
"message": "No such resource in this workspace."
}
}409A request with the same Idempotency-Key is still running (retry after Retry-After seconds), or the change conflicts with something that depends on it.
request_in_progress
Idempotency-Key is still running (retry after Retry-After seconds), or the change conflicts with something that depends on it.request_in_progressThis request is still being handled. Try again shortly.
{
"error": {
"code": "request_in_progress",
"message": "This request is still being handled. Try again shortly."
}
}422Something in the request isn't valid. fields says what, with the dashboard's wording.
validation_failed
fields says what, with the dashboard's wording.validation_failedThe given data was invalid.
{
"error": {
"code": "validation_failed",
"message": "The given data was invalid.",
"fields": {
"name": [
"The name field is required."
]
}
}
}429Too many requests. Wait for the number of seconds in Retry-After.
rate_limitedtoo_many_failed_attempts
Retry-After.rate_limitedToo many requests. Slow down and try again shortly.
too_many_failed_attemptsToo many failed attempts. Try again shortly.
{
"error": {
"code": "rate_limited",
"message": "Too many requests. Slow down and try again shortly."
}
}curl -X PATCH 'https://api.bubbl.tech/platform/v1/notifications/{notification}' \
-H 'Authorization: Bearer bubbl_YOUR_TOKEN' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data '{
"name": "Morning flat white offer",
"type": "message",
"headline": "Two coffees for one",
"body": "Show this at the counter for a free flat white before 11am.",
"cta_label": "Get the voucher",
"cta_url": "https://example.com/offers/flat-white"
}'const response = await fetch('https://api.bubbl.tech/platform/v1/notifications/{notification}', {
method: 'PATCH',
headers: {
Authorization: 'Bearer bubbl_YOUR_TOKEN',
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Morning flat white offer',
type: 'message',
headline: 'Two coffees for one',
body: 'Show this at the counter for a free flat white before 11am.',
cta_label: 'Get the voucher',
cta_url: 'https://example.com/offers/flat-white',
}),
});
const data = await response.json();import requests
response = requests.request(
'PATCH',
'https://api.bubbl.tech/platform/v1/notifications/{notification}',
headers={
'Authorization': 'Bearer bubbl_YOUR_TOKEN',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
json={
'name': 'Morning flat white offer',
'type': 'message',
'headline': 'Two coffees for one',
'body': 'Show this at the counter for a free flat white before 11am.',
'cta_label': 'Get the voucher',
'cta_url': 'https://example.com/offers/flat-white',
},
)
response.raise_for_status()
data = response.json()<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('PATCH', 'https://api.bubbl.tech/platform/v1/notifications/{notification}', [
'headers' => [
'Authorization' => 'Bearer bubbl_YOUR_TOKEN',
'Accept' => 'application/json',
'Content-Type' => 'application/json',
],
'json' => [
'name' => 'Morning flat white offer',
'type' => 'message',
'headline' => 'Two coffees for one',
'body' => 'Show this at the counter for a free flat white before 11am.',
'cta_label' => 'Get the voucher',
'cta_url' => 'https://example.com/offers/flat-white',
],
]);
$data = json_decode((string) $response->getBody(), true);Delete a library notification#
/notifications/{notification}Refused (409 notification_in_use) while it is placed on a campaign; used_in lists them. Remove it from them first, or archive it instead.
Path parameters
The notification ID
Headers
A unique value (e.g. a UUID) for this change. A retry with the same key within 24 hours gets the first response back, with Idempotent-Replayed: true, instead of making the change again.
Responses
200
{
"data": {
"id": "0192f0a4-6b1e-7c3a-9d2f-5e8b1a4d5001",
"deleted": true
}
}Response fields
401The token is missing, unknown, revoked or expired.
missing_tokeninvalid_tokentoken_revokedtoken_expired
missing_tokenMissing bearer token.
invalid_tokenUnknown API token. Check it was copied in full, and that it is for this environment.
token_revokedThe token "Zapier" was revoked on 2026-10-06 at 18:27 UTC. Issue a new one from Configuration › Platform API.
token_expiredThis token has expired. Issue a new one from Configuration › Platform API.
{
"error": {
"code": "missing_token",
"message": "Missing bearer token."
}
}403The token or workspace can't do this.
missing_abilityplatform_api_not_enabledwrong_environmentworkspace_pausedsandbox_unavailable
missing_abilityThis token doesn't have the campaigns:write scope.
platform_api_not_enabledThe full Platform API isn't enabled for this workspace yet. Contact customer services to turn it on.
wrong_environmentThis is a Sandbox token: use the Sandbox API address. https://api.sandbox.bubbl.tech/platform/v1
workspace_pausedThis workspace is scheduled for deletion; its API access is paused.
sandbox_unavailableThe Sandbox isn't available for this workspace.
{
"error": {
"code": "missing_ability",
"message": "This token doesn't have the campaigns:write scope."
}
}404Nothing with that ID in this workspace.
not_found
not_foundNo such resource in this workspace.
{
"error": {
"code": "not_found",
"message": "No such resource in this workspace."
}
}409A request with the same Idempotency-Key is still running (retry after Retry-After seconds), or the change conflicts with something that depends on it.
request_in_progressnotification_in_use
Idempotency-Key is still running (retry after Retry-After seconds), or the change conflicts with something that depends on it.request_in_progressThis request is still being handled. Try again shortly.
notification_in_useCampaigns use this notification; remove it from them first, or archive it instead.
{
"error": {
"code": "request_in_progress",
"message": "This request is still being handled. Try again shortly."
}
}429Too many requests. Wait for the number of seconds in Retry-After.
rate_limitedtoo_many_failed_attempts
Retry-After.rate_limitedToo many requests. Slow down and try again shortly.
too_many_failed_attemptsToo many failed attempts. Try again shortly.
{
"error": {
"code": "rate_limited",
"message": "Too many requests. Slow down and try again shortly."
}
}curl -X DELETE 'https://api.bubbl.tech/platform/v1/notifications/{notification}' \
-H 'Authorization: Bearer bubbl_YOUR_TOKEN' \
-H 'Accept: application/json'const response = await fetch('https://api.bubbl.tech/platform/v1/notifications/{notification}', {
method: 'DELETE',
headers: {
Authorization: 'Bearer bubbl_YOUR_TOKEN',
Accept: 'application/json',
},
});
const data = await response.json();import requests
response = requests.request(
'DELETE',
'https://api.bubbl.tech/platform/v1/notifications/{notification}',
headers={
'Authorization': 'Bearer bubbl_YOUR_TOKEN',
'Accept': 'application/json',
},
)
response.raise_for_status()
data = response.json()<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.bubbl.tech/platform/v1/notifications/{notification}', [
'headers' => [
'Authorization' => 'Bearer bubbl_YOUR_TOKEN',
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);Archive a library notification#
/notifications/{notification}/archivePath parameters
The notification ID
Headers
A unique value (e.g. a UUID) for this change. A retry with the same key within 24 hours gets the first response back, with Idempotent-Replayed: true, instead of making the change again.
Responses
200
{
"data": {
"id": "0192f0a4-6b1e-7c3a-9d2f-5e8b1a4d5001",
"name": "Morning flat white offer",
"type": "message",
"headline": "Coffee's on us",
"body": "Show this at the counter for a free flat white before 11am.",
"media": null,
"cta_label": "Get the voucher",
"cta_url": "https://example.com/offers/flat-white",
"questions": [],
"created_at": "2026-09-20T09:12:00+00:00",
"updated_at": "2026-09-20T09:12:00+00:00",
"archived_at": "2026-10-31T17:00:00+00:00"
}
}Response fields
Archived: it keeps running where it is placed but can't be placed again until unarchived.
401The token is missing, unknown, revoked or expired.
missing_tokeninvalid_tokentoken_revokedtoken_expired
missing_tokenMissing bearer token.
invalid_tokenUnknown API token. Check it was copied in full, and that it is for this environment.
token_revokedThe token "Zapier" was revoked on 2026-10-06 at 18:27 UTC. Issue a new one from Configuration › Platform API.
token_expiredThis token has expired. Issue a new one from Configuration › Platform API.
{
"error": {
"code": "missing_token",
"message": "Missing bearer token."
}
}403The token or workspace can't do this.
missing_abilityplatform_api_not_enabledwrong_environmentworkspace_pausedsandbox_unavailable
missing_abilityThis token doesn't have the campaigns:write scope.
platform_api_not_enabledThe full Platform API isn't enabled for this workspace yet. Contact customer services to turn it on.
wrong_environmentThis is a Sandbox token: use the Sandbox API address. https://api.sandbox.bubbl.tech/platform/v1
workspace_pausedThis workspace is scheduled for deletion; its API access is paused.
sandbox_unavailableThe Sandbox isn't available for this workspace.
{
"error": {
"code": "missing_ability",
"message": "This token doesn't have the campaigns:write scope."
}
}404Nothing with that ID in this workspace.
not_found
not_foundNo such resource in this workspace.
{
"error": {
"code": "not_found",
"message": "No such resource in this workspace."
}
}409A request with the same Idempotency-Key is still running (retry after Retry-After seconds), or the change conflicts with something that depends on it.
request_in_progress
Idempotency-Key is still running (retry after Retry-After seconds), or the change conflicts with something that depends on it.request_in_progressThis request is still being handled. Try again shortly.
{
"error": {
"code": "request_in_progress",
"message": "This request is still being handled. Try again shortly."
}
}429Too many requests. Wait for the number of seconds in Retry-After.
rate_limitedtoo_many_failed_attempts
Retry-After.rate_limitedToo many requests. Slow down and try again shortly.
too_many_failed_attemptsToo many failed attempts. Try again shortly.
{
"error": {
"code": "rate_limited",
"message": "Too many requests. Slow down and try again shortly."
}
}curl -X POST 'https://api.bubbl.tech/platform/v1/notifications/{notification}/archive' \
-H 'Authorization: Bearer bubbl_YOUR_TOKEN' \
-H 'Accept: application/json'const response = await fetch('https://api.bubbl.tech/platform/v1/notifications/{notification}/archive', {
method: 'POST',
headers: {
Authorization: 'Bearer bubbl_YOUR_TOKEN',
Accept: 'application/json',
},
});
const data = await response.json();import requests
response = requests.request(
'POST',
'https://api.bubbl.tech/platform/v1/notifications/{notification}/archive',
headers={
'Authorization': 'Bearer bubbl_YOUR_TOKEN',
'Accept': 'application/json',
},
)
response.raise_for_status()
data = response.json()<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://api.bubbl.tech/platform/v1/notifications/{notification}/archive', [
'headers' => [
'Authorization' => 'Bearer bubbl_YOUR_TOKEN',
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);Unarchive a library notification#
/notifications/{notification}/archivePath parameters
The notification ID
Headers
A unique value (e.g. a UUID) for this change. A retry with the same key within 24 hours gets the first response back, with Idempotent-Replayed: true, instead of making the change again.
Responses
200
{
"data": {
"id": "0192f0a4-6b1e-7c3a-9d2f-5e8b1a4d5001",
"name": "Morning flat white offer",
"type": "message",
"headline": "Coffee's on us",
"body": "Show this at the counter for a free flat white before 11am.",
"media": null,
"cta_label": "Get the voucher",
"cta_url": "https://example.com/offers/flat-white",
"questions": [],
"created_at": "2026-09-20T09:12:00+00:00",
"updated_at": "2026-09-20T09:12:00+00:00",
"archived_at": null
}
}Response fields
Archived: it keeps running where it is placed but can't be placed again until unarchived.
401The token is missing, unknown, revoked or expired.
missing_tokeninvalid_tokentoken_revokedtoken_expired
missing_tokenMissing bearer token.
invalid_tokenUnknown API token. Check it was copied in full, and that it is for this environment.
token_revokedThe token "Zapier" was revoked on 2026-10-06 at 18:27 UTC. Issue a new one from Configuration › Platform API.
token_expiredThis token has expired. Issue a new one from Configuration › Platform API.
{
"error": {
"code": "missing_token",
"message": "Missing bearer token."
}
}403The token or workspace can't do this.
missing_abilityplatform_api_not_enabledwrong_environmentworkspace_pausedsandbox_unavailable
missing_abilityThis token doesn't have the campaigns:write scope.
platform_api_not_enabledThe full Platform API isn't enabled for this workspace yet. Contact customer services to turn it on.
wrong_environmentThis is a Sandbox token: use the Sandbox API address. https://api.sandbox.bubbl.tech/platform/v1
workspace_pausedThis workspace is scheduled for deletion; its API access is paused.
sandbox_unavailableThe Sandbox isn't available for this workspace.
{
"error": {
"code": "missing_ability",
"message": "This token doesn't have the campaigns:write scope."
}
}404Nothing with that ID in this workspace.
not_found
not_foundNo such resource in this workspace.
{
"error": {
"code": "not_found",
"message": "No such resource in this workspace."
}
}409A request with the same Idempotency-Key is still running (retry after Retry-After seconds), or the change conflicts with something that depends on it.
request_in_progress
Idempotency-Key is still running (retry after Retry-After seconds), or the change conflicts with something that depends on it.request_in_progressThis request is still being handled. Try again shortly.
{
"error": {
"code": "request_in_progress",
"message": "This request is still being handled. Try again shortly."
}
}429Too many requests. Wait for the number of seconds in Retry-After.
rate_limitedtoo_many_failed_attempts
Retry-After.rate_limitedToo many requests. Slow down and try again shortly.
too_many_failed_attemptsToo many failed attempts. Try again shortly.
{
"error": {
"code": "rate_limited",
"message": "Too many requests. Slow down and try again shortly."
}
}curl -X DELETE 'https://api.bubbl.tech/platform/v1/notifications/{notification}/archive' \
-H 'Authorization: Bearer bubbl_YOUR_TOKEN' \
-H 'Accept: application/json'const response = await fetch('https://api.bubbl.tech/platform/v1/notifications/{notification}/archive', {
method: 'DELETE',
headers: {
Authorization: 'Bearer bubbl_YOUR_TOKEN',
Accept: 'application/json',
},
});
const data = await response.json();import requests
response = requests.request(
'DELETE',
'https://api.bubbl.tech/platform/v1/notifications/{notification}/archive',
headers={
'Authorization': 'Bearer bubbl_YOUR_TOKEN',
'Accept': 'application/json',
},
)
response.raise_for_status()
data = response.json()<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', 'https://api.bubbl.tech/platform/v1/notifications/{notification}/archive', [
'headers' => [
'Authorization' => 'Bearer bubbl_YOUR_TOKEN',
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);