Look up request processing status
/users/track/status
Use this endpoint to check whether Braze has finished processing a group of asynchronous
/users/trackendpoint requests.

This endpoint is in beta. If you’re interested in participating in the beta, contact your Braze account manager.
A successful response from /users/track means Braze received your request and queued it for processing. To confirm that processing has finished, include the same group_id in each related /users/track request, then call this endpoint with that group_id. When the group’s status is completed, you can safely take actions that depend on that data, such as triggering a Canvas or launching a campaign.
For the full workflow, group ID requirements, limits, and retention, see Track request processing status.
Prerequisites
To use this endpoint, you’ll need an API key with the users.track.status permission. The users.track permission doesn’t include access to this endpoint.
Any API key in the workspace with the users.track.status permission can look up any group in that workspace, regardless of which API key sent the /users/track requests.
Rate limit
Braze applies a rate limit of 1,500 requests per minute per workspace to this endpoint, as documented in API rate limits. This limit is separate from the /users/track rate limit.
Successful responses include the X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers so you can track how much of your current window remains.
Query parameters
| Parameter | Required | Data Type | Description |
|---|---|---|---|
group_id |
Required | String | The group ID you included in your /users/track requests. Include one group_id per request. |
Example request
curl --location --request GET 'https://rest.iad-01.braze.com/users/track/status?group_id=loyalty_backfill_2026-09-23' \
--header 'Authorization: Bearer YOUR_REST_API_KEY'
Response
{
"results": [
{
"group_id": (string) the group ID from your request,
"status": (string) the processing status of the group, either "processing" or "completed",
"received": (integer) the number of /users/track requests Braze accepted for this group,
"done": (integer) the number of accepted requests Braze has finished processing,
"processing": (integer) the number of accepted requests Braze is still processing,
"final_completion_time": (string or null) when the last request in the group finished processing, in ISO 8601 format (UTC). This is null until the status is "completed".
}
]
}
The results array contains one object when Braze finds the group. It’s empty when the group doesn’t exist in the workspace or its 24-hour retention period has ended. Braze returns an empty results array for both cases, so an empty array doesn’t tell you whether a group ever existed.
Response parameters
| Parameter | Data Type | Description |
|---|---|---|
group_id |
String | The group ID from your request. |
status |
String | processing if Braze is still processing any accepted request in the group. completed if Braze has finished processing every accepted request in the group. |
received |
Integer | The number of /users/track requests with this group_id that Braze accepted for status tracking. Braze counts a request as soon as it accepts it. |
done |
Integer | The number of accepted requests that Braze has finished processing. |
processing |
Integer | The number of accepted requests that Braze is still processing. This equals received minus done. |
final_completion_time |
String or null | The time Braze finished processing the last request in the group, in ISO 8601 format (UTC) with millisecond precision. null while status is processing. |
A completed status means Braze finished processing every request in the group, including requests where Braze rejected some objects. This endpoint reports request counts only and doesn’t report results for individual attributes, events, or purchases. To find rejected objects, check the errors array in each /users/track response.
Example responses
Group still processing
{
"results": [
{
"group_id": "loyalty_backfill_2026-09-23",
"status": "processing",
"received": 4,
"done": 3,
"processing": 1,
"final_completion_time": null
}
]
}
Group completed
{
"results": [
{
"group_id": "loyalty_backfill_2026-09-23",
"status": "completed",
"received": 4,
"done": 4,
"processing": 0,
"final_completion_time": "2026-09-23T18:58:57.123Z"
}
]
}
Group not found or expired
{
"results": []
}
Troubleshooting
The following table lists errors this endpoint can return and how to resolve them.
| Status code | Error message | Troubleshooting |
|---|---|---|
400 |
Invalid group_id |
Include exactly one group_id query parameter. The value must be 1 to 128 characters and contain only letters, numbers, periods (.), underscores (_), tildes (~), and hyphens (-). |
403 |
Access Denied |
Use an API key with the users.track.status permission. |
403 |
API request status is not enabled for this app group. |
Request status tracking isn’t enabled for your workspace. Contact your Braze account manager. |
429 |
Rate limit exceeded | Wait for your rate limit window to reset before sending more requests. For more information, see Rate limit. |
For other status codes and error messages, see Fatal errors & responses.