Bubbl Platform API
vv1A public REST API for your own systems and no-code tools (Zapier, Make, n8n) — separate from Bubbl's device/SDK API, and with no company or user management of its own.
Get a token from Configuration › Platform API in the dashboard, then send it as Authorization: Bearer bubbl_…. A Sandbox token works immediately and every scope it was issued with is available; a Production token only has reports:read until Bubbl's customer services turns the rest on for your workspace.
Lists are cursor-paginated (?cursor=&limit=, newest first) and take ?updated_since= for polling. Errors always come back as {"error": {"code", "message", "fields"?}}.
Base URLs#
Production. Only reports:read works until customer services enable the Platform API for your workspace.
Sandbox. Every ability works, with lower rate limits: 30 requests and 10 writes a minute, 1,000 requests a day.
Authentication#
A workspace token from Configuration › Platform API, sent as Authorization: Bearer bubbl_….
Resources#
The workspace, environment and abilities of the token you're using.
Places a campaign can target — a circle or a polygon. A location is only ever created by importing a GeoJSON FeatureCollection (see the import endpoint); this resource lists, reads, updates and deletes ones already imported.
Named sets of locations a campaign can target as one. Groups are created by the location import (each feature's properties.group); list them here for the ids a campaign's location_group_ids takes, or target them by name with location_group_names.
When and to whom your notifications go out. A geo campaign targets locations (directly or via location groups) and fires when a device enters or leaves one; a push campaign sends at fixed times to an audience of segments (or everyone). Notifications are added afterwards — see Notifications, nested under a campaign.
Images, video and audio in the workspace's media library. Upload a file here, then give its id as a notification's media_asset_id. Which kinds you can upload depends on the plan.
A campaign's notifications — nested under it, since a notification has no meaning until a campaign decides when it fires. Creating one here writes its content (headline, body, media, CTA, survey questions) and its trigger together; there's no separate endpoint for notification content alone.
- GET
/campaigns/{campaign}/notificationsList a campaign's notifications - POST
/campaigns/{campaign}/notificationsAdd a notification to a campaign - GET
/campaigns/{campaign}/notifications/{notification}Get a campaign notification - PATCH
/campaigns/{campaign}/notifications/{notification}Update a campaign notification - DELETE
/campaigns/{campaign}/notifications/{notification}Remove a notification from a campaign
Delivery, geofence and survey figures — the same numbers the dashboard's Reports show. Every report takes a date range (start/end, Y-m-d, days in your workspace's time zone; the last 30 days by default, up to 366) and the dashboard's filters. The only scope a Production token has before customer services turns the rest on. Needs a plan that includes Reports, as the dashboard does.