Monitor the status of Stream API operations
Monitor the status of Stream API operations
When you send content to a Catalog source using the Stream API, the API’s initial successful response confirms that the data was received, but it doesn’t guarantee that all the items will be successfully processed and indexed.
While you can manually inspect an operation’s status in the Log Browser (platform-ca | platform-eu | platform-au), this guide describes the API-driven process for programmatically tracking your updates in automated workflows.
Monitoring the status of any stream operation is a two-step process that involves checking two distinct stages of the indexing pipeline:
-
Verify that the entire batch of items was accepted.
-
Verify that each item was successfully updated in the index.
The examples in this article use the following endpoint from the Coveo Logs API:
POST https://api.cloud.coveo.com/logs/v1/organizations/<ORGANIZATION_ID>?from=<START_TIME>&to=<END_TIME> HTTP/1.1
Where:
-
<ORGANIZATION_ID>
is the unique identifier of your Coveo organization. To learn how to find the organization ID, see Find your organization ID. -
<START_TIME>
and<END_TIME>
define the time range for the logs you want to retrieve. Use the W3C date and time format (for example,2025-10-01T00:00:00Z
).
Step 1: Verify batch acceptance
The first stage of verification is to confirm that the JSON payload containing your batch of items was successfully received and considered valid.
This check applies to all types of stream operations, including both full and partial updates.
Each operation is assigned a unique orderingId
, which is returned in the response to your Stream API request.
To check the status of a batch operation
-
Make a
POST
request to the Logs API with the following JSON body.{ "tasks": [ "STREAMING_EXTENSION"
], "operations": [ "BATCH_FILE"
], "sourcesIds": [ "<SOURCE_ID>"
], "results": [ "COMPLETED",
"WARNING" ] }
This request filters for logs:
Associated with the STREAMING_EXTENSION
stage of the indexing pipeline.For the BATCH_FILE
operation, which represents the submission and initial validation of a batch of items.Scoped to your specific source ( <SOURCE_ID>
).With a result status of either COMPLETED
orWARNING
. -
The response contains all batch operations that match the filter criteria within the specified time range. To track a specific operation, find the log entry where the
meta.orderingid
field matches theorderingId
from your request to the Stream API.-
If the
result
isCOMPLETED
, the batch was accepted successfully. -
If the
result
isWARNING
, some operations were invalid. Themeta.error
field provides details about the validation error to help you identify and correct the issue. For example:{ "guid": "{GUID}", "id": "{DOCUMENT_ID}", "task": "STREAMING_EXTENSION", "operation": "BATCH_FILE", "result": "WARNING", "meta": { "orderingid": 1755399334464, "mode": "StreamChunk", "error": "The document AddOrUpdate was skipped due to the new document being '424.89 KB' over the limit of '3 MB'." } }
-
Step 2: Verify document indexing
After confirming that your batch was accepted, the second stage is to verify that each item was successfully applied and updated in the index. Even if a batch is valid, individual item updates can fail during this final stage. This can happen for several reasons, such as:
-
An item exceeded the maximum size limit after being resolved.
-
A partial update was sent for an item that doesn’t exist in the source.
-
An item is missing required metadata.
To check for indexing failures
-
Make a
POST
request to the Logs API with the following JSON body:{ "tasks": [ "STREAMING_EXTENSION"
], "operations": [ "UPDATE"
], "sourcesIds": [ "<SOURCE_ID>"
], "results": [ "WARNING"
] }
This request filters for logs:
Associated with the STREAMING_EXTENSION
stage.For the UPDATE
operation, which represents the final processing of an individual item in the index.Scoped to your specific source ( <SOURCE_ID>
).With a result status of WARNING
. By querying only for warnings, you can assume that the absence of a result means success. -
Review the response:
-
If the response is an empty array, no warnings were generated, and all items in your batch were successfully indexed.
-
If the response contains log entries, each entry represents an item that failed to update. The
meta.error
field will explain the reason for the failure. For example:{ "guid": "{GUID}", "id": "{DOCUMENT_ID}", "task": "STREAMING_EXTENSION", "operation": "UPDATE", "result": "WARNING", "meta": { "orderingid": 0,
"error": "The document could not be modified, as it is missing a base value [...]"
} }
The orderingid
will either be0
if the item didn’t exist prior to the update, or it will reflect theorderingId
of the last successful update for that item.The meta.error
field provides details about why the update failed, helping you identify and correct the issue.
-