Overview
Burst Statistics exposes a custom beacon endpoint and a set of WordPress REST API routes under the burst/v1 namespace.
Using the REST API to get data
If you are connecting Burst to an external tool (AI workflow, BI dashboard, ETL pipeline), start with these two endpoints:
GET burst/v1/data/{type}— general analytics dataGET burst/v1/data/ecommerce/{type}— revenue and sales data (Pro, requiresview_salescapability)
Both endpoints support Application Password authentication, making them suitable for server-to-server use without a browser session. See Authentication for setup instructions.
The remaining endpoints (do_action, get_action, goals, fields, etc.) are primarily used by the Burst admin dashboard and are documented in Admin endpoints.
Endpoints
| Endpoint | Method | Auth | Permission |
|---|---|---|---|
{site}/burst-statistics/endpoint.php | POST | None | Public |
burst/v1/track | POST | None | Public |
burst/v1/menu | GET | Nonce | manage |
burst/v1/fields/get | GET | Nonce | manage |
burst/v1/fields/set | POST | Nonce | manage |
burst/v1/options/set | POST | Nonce | manage |
burst/v1/goals/get | GET | Nonce | view |
burst/v1/goals/add | POST | Nonce | manage |
burst/v1/goals/set | POST | Nonce | manage |
burst/v1/goals/delete | POST | Nonce | manage |
burst/v1/goals/add_predefined | POST | Nonce | manage |
burst/v1/data/{type} | GET | Nonce | view |
burst/v1/data/ecommerce/{type} | GET | Nonce | view_sales |
burst/v1/do_action/{action} | POST | Nonce | manage |
burst/v1/get_action/{action} | GET | Nonce | view |
burst/v1/import/upload/init | POST | Nonce | manage |
burst/v1/import/upload/chunk | POST | Nonce | manage |
burst/v1/import/upload/finalize | POST | Nonce | manage |
burst/v1/posts/ | GET | Nonce | manage |
burst/v1/mainwp-auth | POST | RSA signature | Public* |
Typed routes
Four of the routes above take a trailing segment that selects what they return or do. The reference pages list every registered value.
| Route | What the segment selects | Reference |
|---|---|---|
burst/v1/data/{type} | An analytics data type, for example compare, not_found_pages or not_found_page_referrers | Data endpoints |
burst/v1/data/ecommerce/{type} | A sales data type, for example sales or sales-funnel | Ecommerce endpoints |
burst/v1/do_action/{action} | A write action, for example reset, start_import or slack_test | Admin endpoints |
burst/v1/get_action/{action} | A read action, for example export_status | Admin endpoints |
A data type may accept arguments beyond the shared date_start, date_end and filters. The not_found_page_referrers type, for example, requires page_url so it knows which 404 page to report referrers for. Those extra arguments are registered through the burst_get_data_available_args filter, documented in the Filters reference.
Permission levels
| Level | Capability | Who has it |
|---|---|---|
manage | manage_burst_statistics | Administrators |
view | view_burst_statistics | Administrators and burst_viewer role holders accessing a share link |
view_sales | view_sales_burst_statistics | Pro only; granted separately from view. Share link viewers require sales in the token's shared_tabs list |
Import uploads
Importing an analytics export is a three-call sequence on the burst/v1/import/upload/* routes. All three require manage_burst_statistics.
| Route | Body | Returns |
|---|---|---|
import/upload/init | JSON: filename, filesize, total_chunks | upload_id (32 hex characters) and chunk_size (4 MB) |
import/upload/chunk | Multipart: file, plus upload_id and chunk_index | chunk_index of the stored part |
import/upload/finalize | JSON: upload_id | upload_id, filename and filesize of the assembled file |
Accepted extensions are csv, sql, gz, sql.gz, zip, json and ndjson; anything else is rejected with a 400 by init and again by finalize. Each init call purges the sandboxes of earlier uploads, so only one upload file exists at a time. finalize hashes the assembled file and rejects it with a 400 when an import with the same hash already ran.
The upload_id returned by finalize is what you pass to the start_import action on burst/v1/do_action/{action}.
Export downloads
Exports are created and polled through the do_action / get_action routes (export_start, export_chunk, export_status), but the finished archive is not served over REST. The download URL returned by those actions points at admin-post.php:
Show code
admin_url(
'admin-post.php?action=burst_export_download&export_id=' . rawurlencode( $export_id )
. '&_wpnonce=' . wp_create_nonce( 'burst_export_download_' . $export_id )
);
The handler verifies manage_burst_statistics plus the export-specific nonce, then streams the file with a Content-Disposition: attachment header. Because it is a browser download rather than a REST response, it needs a logged-in admin session and cannot be fetched with an Application Password.