Export API Reference
Pull your session, crash, event, and network data into a data warehouse, BI tool, or custom pipeline using your project API key. All export endpoints return paginated JSON or CSV.
Not for ingestion. These endpoints are read-only and designed for data export. To send data from your app, use the Ingestion API.
Authentication
Use the same project API key as the Ingestion API — passed as a Bearer token.
Authorization: Bearer bp_your_api_key_hereBase URL
https://api.bugspulse.com/exportCommon parameters
All endpoints share these query parameters:
| Param | Default | Description |
|---|---|---|
| page | 1 | Page number (1-based) |
| limit | 100 | Rows per page — max 1,000 |
| format | json | json or csv — csv returns a file download |
Export endpoints are rate-limited to 60 requests / minute per API key.
Sessions
GET
/export/sessionsPaginated list of sessions with device info, duration, and status.
Additional parameters
| Param | Description |
|---|---|
| from | ISO 8601 start date (e.g. 2026-01-01) |
| to | ISO 8601 end date |
Example
curl "https://api.bugspulse.com/export/sessions?from=2026-01-01&to=2026-01-31&limit=1000" \
-H "Authorization: Bearer bp_your_key_here"
# CSV download
curl "https://api.bugspulse.com/export/sessions?format=csv&from=2026-01-01" \
-H "Authorization: Bearer bp_your_key_here" -o sessions.csvResponse
{
"data": [
{
"id": "sess_1780000000_abc123",
"userId": "usr_123",
"status": "completed", // active | completed | crashed
"platform": "ios",
"osVersion": "17.4",
"appVersion": "2.4.1",
"networkType": "wifi",
"eventCount": 42,
"hasCrash": false,
"hasNetworkErrors": false,
"duration": 183000, // milliseconds
"startedAt": "2026-01-15T10:00:00.000Z",
"endedAt": "2026-01-15T10:03:03.000Z"
}
],
"total": 1500,
"page": 1,
"limit": 100,
"pages": 15
}Crashes
GET
/export/crashesAll crash groups for the project with occurrence counts, affected devices, and status.
Example
curl "https://api.bugspulse.com/export/crashes?format=csv" \
-H "Authorization: Bearer bp_your_key_here" -o crashes.csvResponse
{
"data": [
{
"id": "crash_xyz",
"message": "TypeError: Cannot read properties of undefined",
"status": "open", // open | acknowledged | resolved | ignored
"isFatal": true,
"handled": false,
"occurrenceCount": 14,
"affectedDevices": 9,
"platform": "android",
"appVersion": "2.4.1",
"osVersion": "14",
"firstSeenAt": "2026-01-10T08:00:00.000Z",
"lastSeenAt": "2026-01-15T22:14:00.000Z"
}
],
"total": 38,
"page": 1,
"limit": 100,
"pages": 1
}Events
GET
/export/eventsAll events for a specific session in sequence order. Useful for replaying or analysing individual user journeys.
Required parameter
sessionId — the session ID to fetch events for.
Example
curl "https://api.bugspulse.com/export/events?sessionId=sess_1780000000_abc123" \
-H "Authorization: Bearer bp_your_key_here"Response
{
"data": [
{
"id": "evt_001",
"type": "navigate",
"timestamp": "2026-01-15T10:00:01.000Z",
"sequenceNumber": 0,
"data": { "from": null, "to": "Home" }
},
{
"id": "evt_002",
"type": "custom",
"timestamp": "2026-01-15T10:00:05.000Z",
"sequenceNumber": 1,
"data": { "name": "button_press", "properties": { "screen": "home" } }
}
],
"total": 42,
"page": 1,
"limit": 42,
"pages": 1
}Network logs
GET
/export/networkPaginated network request logs with status codes, durations, and errors.
Additional parameters
| Param | Description |
|---|---|
| from | ISO 8601 start date |
| to | ISO 8601 end date |
Example
curl "https://api.bugspulse.com/export/network?from=2026-01-01&format=csv" \
-H "Authorization: Bearer bp_your_key_here" -o network.csvResponse
{
"data": [
{
"id": "req_001",
"sessionId": "sess_1780000000_abc123",
"method": "POST",
"url": "https://api.yourapp.com/checkout",
"statusCode": 500,
"duration": 1840,
"error": "Internal Server Error",
"timestamp": "2026-01-15T10:00:07.000Z"
}
],
"total": 890,
"page": 1,
"limit": 100,
"pages": 9
}Data warehouse pipeline
Paginate through large datasets with a shell loop:
#!/bin/bash
API_KEY="bp_your_key_here"
BASE="https://api.bugspulse.com"
# Pull all sessions page by page
page=1
while true; do
response=$(curl -s "$BASE/export/sessions?page=$page&limit=1000" \
-H "Authorization: Bearer $API_KEY")
echo "$response" >> sessions.jsonl
pages=$(echo "$response" | jq '.pages')
[ "$page" -ge "$pages" ] && break
((page++))
done
echo "Done — $pages pages exported"